# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # This workflow will build a Java project with Maven # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven name: Backend CI on: push: branches: [ master, dev, action* ] paths-ignore: - '**.md' - 'home/**' - 'web-app/**' - 'script/**' - 'material/**' pull_request: branches: [ master, dev ] paths-ignore: - '**.md' - 'home/**' - 'web-app/**' - 'script/**' - 'material/**' concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: backend-build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ./script/ci/github-actions/setup-deps - name: Build with Maven run: mvnd clean -B package -pl '!hertzbeat-e2e' -Prelease -Dmaven.test.skip=false --file pom.xml - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v4.0.1 with: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: false verbose: true - name: Upload backend distribution uses: actions/upload-artifact@v4 with: name: backend-dist-${{ github.run_id }} path: dist/ retention-days: 1 compression-level: 0 backend-maven-e2e: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ./script/ci/github-actions/setup-deps - name: Build backend Maven E2E modules run: | mvnd clean -B package \ -pl hertzbeat-e2e/hertzbeat-collector-common-e2e,hertzbeat-e2e/hertzbeat-collector-kafka-e2e,hertzbeat-e2e/hertzbeat-collector-basic-e2e,hertzbeat-e2e/hertzbeat-collector-mysql-r2dbc-e2e,hertzbeat-e2e/hertzbeat-log-e2e \ -am \ -Dmaven.test.skip=false \ --file pom.xml - name: Upload Maven E2E coverage reports to Codecov uses: codecov/codecov-action@v4.0.1 with: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: false verbose: true backend-image-e2e: needs: backend-build runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Download backend distribution uses: actions/download-artifact@v4 with: name: backend-dist-${{ github.run_id }} path: dist/ - name: Build Image uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 with: context: ./dist file: ./script/docker/server/Dockerfile push: false tags: apache/hertzbeat:test - name: Run E2E run: | cd e2e docker compose version docker compose up --exit-code-from testing --remove-orphans # upload application logs - name: Upload logs & API test reports uses: actions/upload-artifact@v4 if: always() with: name: hz-logs-${{ github.run_id }} path: | e2e/logs/ e2e/report/