From 437bf92e0df0eed869b0fdf73dfe45e03986d8ad Mon Sep 17 00:00:00 2001 From: TiejunZhou <50469179+TiejunMS@users.noreply.github.com> Date: Thu, 23 Nov 2023 02:53:27 +0000 Subject: [PATCH] Convert ADO pipelines to GitHub actions --- .github/workflows/regression_template.yml | 127 ++++++++++++++++++++++ .github/workflows/regression_test.yml | 19 ++++ 2 files changed, 146 insertions(+) create mode 100644 .github/workflows/regression_template.yml create mode 100644 .github/workflows/regression_test.yml diff --git a/.github/workflows/regression_template.yml b/.github/workflows/regression_template.yml new file mode 100644 index 00000000..5e7f89ab --- /dev/null +++ b/.github/workflows/regression_template.yml @@ -0,0 +1,127 @@ +# This is a basic workflow that is manually triggered + +name: regression_template + +on: + workflow_call: + inputs: + install_script: + default: './scripts/install.sh' + required: false + type: string + build_script: + default: './scripts/build.sh' + required: false + type: string + test_script: + default: './scripts/test.sh' + required: false + type: string + cmake_path: + default: './test/cmake' + required: false + type: string + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "linux_job" + run_tests: + permissions: + contents: read + issues: read + checks: write + pull-requests: write + + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Check out the repository + uses: actions/checkout@v4 + with: + submodules: true + + - name: Install softwares + run: ${{ inputs.install_script }} + + - name: Build + run: ${{ inputs.build_script }} + + - name: Test + run: ${{ inputs.test_script }} + + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@v2.11.0 + if: always() + with: + files: | + ${{ inputs.cmake_path }}/build/*/*.xml + + - name: Upload Test Results + if: success() || failure() + uses: actions/upload-artifact@v3.1.3 + with: + name: test_reports + path: | + ${{ inputs.cmake_path }}/build/*.txt + ${{ inputs.cmake_path }}/build/*/Testing/**/*.xml + + - name: Configure GitHub Pages + uses: actions/configure-pages@v3.0.6 + + - name: Upload GitHub Pages artifact + uses: actions/upload-pages-artifact@v2.0.0 + with: + path: ${{ inputs.cmake_path }}/coverage_report/default_build_coverage + + - name: Generate Code Coverage Results Summary + uses: irongut/CodeCoverageSummary@v1.3.0 + with: + filename: ${{ inputs.cmake_path }}/coverage_report/default_build_coverage.xml + format: markdown + badge: true + hide_complexity: true + output: file + + - name: Write Code Coverage Summary + run: | + echo "## Coverage Report" >> $GITHUB_STEP_SUMMARY + cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY + + - name: Create CheckRun for Code Coverage + if: (github.event_name == 'push') || (github.event.pull_request.head.repo.full_name == github.repository) + uses: LouisBrunner/checks-action@v1.6.2 + with: + token: ${{ secrets.GITHUB_TOKEN }} + name: Code Coverage + conclusion: ${{ job.status }} + output: | + {"summary":"Coverage Report"} + output_text_description_file: code-coverage-results.md + + - name: Add Code Coverage PR Comment + if: (github.event_name == 'push') || (github.event.pull_request.head.repo.full_name == github.repository) + uses: marocchino/sticky-pull-request-comment@v2 + with: + path: code-coverage-results.md + + deploy_code_coverage: + runs-on: ubuntu-latest + if: github.event_name == 'push' + needs: run_tests + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + permissions: + pages: write + id-token: write + + steps: + - name: Deploy GitHub Pages site + id: deployment + uses: actions/deploy-pages@v1.2.9 + + - name: Write Code Coverage Report URL + run: | + echo '[Open Coverage Report](${{ steps.deployment.outputs.page_url }})' >> $GITHUB_STEP_SUMMARY \ No newline at end of file diff --git a/.github/workflows/regression_test.yml b/.github/workflows/regression_test.yml new file mode 100644 index 00000000..473d4d48 --- /dev/null +++ b/.github/workflows/regression_test.yml @@ -0,0 +1,19 @@ +name: regression_test + +# Controls when the action will run. Triggers the workflow on push or pull request +# events but only for the master branch +on: + workflow_dispatch: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + run_tests: + uses: ./.github/workflows/regression_template.yml@master + with: + build_script: ./scripts/build_tx.sh + test_script: ./scripts/test_tx.sh + cmake_path: ./test/tx \ No newline at end of file