From 4e29965a8d83cb3fd9babf68c635a2da8ec6f42f Mon Sep 17 00:00:00 2001 From: Tomas Baca Date: Tue, 28 Nov 2023 11:17:46 +0100 Subject: [PATCH] wip --- .ci/test.sh | 11 +- .../workflows/rostest_to_release_coverage.yml | 105 ++++++++++++++++++ 2 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/rostest_to_release_coverage.yml diff --git a/.ci/test.sh b/.ci/test.sh index 7dc27add22..9dda918f86 100755 --- a/.ci/test.sh +++ b/.ci/test.sh @@ -7,7 +7,8 @@ trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR LIST=mrs VARIANT=testing -PACKAGE_NAME=$1 +REPOSITORY_NAME=$1 +ARTIFACT_FOLDER=$2 WORKSPACE=/tmp/workspace YAML_FILE=${LIST}.yaml @@ -29,7 +30,7 @@ curl https://ctu-mrs.github.io/ppa-$VARIANT/add_ppa.sh | bash sudo apt-get -y -q install ros-noetic-desktop sudo apt-get -y -q install ros-noetic-mrs-uav-system -REPOS=$(./.ci/get_repo_source.py $YAML_FILE $VARIANT $ARCH $PACKAGE_NAME) +REPOS=$(./.ci/get_repo_source.py $YAML_FILE $VARIANT $ARCH $REPOSITORY_NAME) echo "$0: creating workspace" @@ -72,3 +73,9 @@ echo "$0: testing" catkin test echo "$0: tests finished" + +echo "$0: storing coverage data" + +lcov --capture --directory ${WORKSPACE} --output-file /tmp/coverage.original +lcov --remove /tmp/coverage.original "*/test/" --output-file /tmp/coverage.removed +lcov --extract /tmp/coverage.removed "*/${WORKSPACE}/*" --output-file $ARTIFACT_FOLDER/$REPOSITORY_NAME.info diff --git a/.github/workflows/rostest_to_release_coverage.yml b/.github/workflows/rostest_to_release_coverage.yml new file mode 100644 index 0000000000..57df46ee8d --- /dev/null +++ b/.github/workflows/rostest_to_release_coverage.yml @@ -0,0 +1,105 @@ +name: rostest_to_release_coverage + +on: + workflow_call: + secrets: + PUSH_TOKEN: + required: true + + push: + branches: [ coverage ] + + workflow_dispatch: + +jobs: + + init-artifacts: + runs-on: ubuntu-20.04 + steps: + - id: execute + run: | + mkdir -p /tmp/artifacts + - name: Save artifacts + uses: actions/upload-artifact@v3 + with: + name: artifacts + path: /tmp/artifacts/ + + generate-jobs: + needs: init-artifacts + runs-on: ubuntu-20.04 + outputs: + packages: ${{ steps.generate.outputs.packages }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + submodules: 'recursive' + - id: generate + run: | + JOB_STRATEGY_MATRIX=$(./.ci/get_test_matrix.sh) + echo "packages=$JOB_STRATEGY_MATRIX" >> "$GITHUB_OUTPUT" + + test-job: + needs: generate-jobs + runs-on: ubuntu-20.04 + timeout-minutes: 360 # 6 hour timeout + strategy: + matrix: + job: ${{ fromJson(needs.generate-jobs.outputs.packages) }} + steps: + - name: Load artifacts + uses: actions/download-artifact@v3 + with: + name: artifacts + path: /tmp/artifacts/ + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + submodules: 'recursive' + - name: Checkout CI scripts + uses: actions/checkout@v3 + with: + repository: ctu-mrs/ci_scripts + ref: master + path: .ci_scripts + token: ${{ secrets.PUSH_TOKEN }} + - id: test + run: | + .ci/test.sh "${{ matrix.job }}" /tmp/artifacts + - name: Save artifacts + uses: actions/upload-artifact@v3 + with: + name: artifacts + path: /tmp/artifacts/ + + merge_and_push: + runs-on: ubuntu-20.04 + needs: test-job + env: + PUSH_TOKEN: ${{ secrets.PUSH_TOKEN }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + submodules: 'recursive' + - id: merge + run: | + cat .ci/merge_push_to_release.sh + + coverage: + runs-on: ubuntu-20.04 + needs: test-job + - name: Load artifacts + uses: actions/download-artifact@v3 + with: + name: artifacts + path: /tmp/artifacts/ + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + submodules: 'recursive' + - id: test + run: | + ls -la /tmp/artifacts + .ci/publish_coverage.sh /tmp/artifacts