Update CI error template (#21641) #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Backend unit tests | |
permissions: read-all | |
on: | |
merge_group: | |
types: [checks_requested] | |
push: | |
branches: | |
- develop | |
- release-* | |
pull_request: | |
branches: | |
- develop | |
- release-* | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
run_backend_associated_test_file_checks: | |
name: Verify associated test files | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout repository so that local actions can be used | |
uses: actions/checkout@v4 | |
- name: Merge develop and set up Python | |
uses: ./.github/actions/merge-develop-and-setup-python | |
- name: Run backend associated test file check | |
run: make run_tests.check_backend_associated_tests | |
- name: Report failure if failed on oppia/oppia develop branch | |
if: ${{ failure() && github.event_name == 'push' && github.repository == 'oppia/oppia' && github.ref == 'refs/heads/develop'}} | |
uses: ./.github/actions/send-webhook-notification | |
with: | |
message: "Some backend files lack an associated test file." | |
webhook-url: ${{ secrets.BUILD_FAILURE_ROOM_WEBHOOK_URL }} | |
run_tests: | |
name: Shard ${{ matrix.shard }} | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
shard: [1, 2, 3, 4, 5] | |
steps: | |
- name: Checkout repository so that local actions can be used | |
uses: actions/checkout@v4 | |
- name: Merge develop and set up Python | |
uses: ./.github/actions/merge-develop-and-setup-python | |
- name: Initialize Docker containers | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
uses: ./.github/actions/install-oppia-dependencies-docker | |
- name: Run backend test shard | |
id: run_backend_test_shard | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
run: make run_tests.backend PYTHON_ARGS="--generate_coverage_report --generate_time_report --ignore_coverage --exclude_load_tests --test_shard ${{ matrix.shard }}" | |
- name: Report failure if failed on oppia/oppia develop branch | |
if: ${{ steps.run_backend_test_shard.outputs.WORKFLOW_STATUS == 'failure' && github.event_name == 'push' && github.repository == 'oppia/oppia' && github.ref == 'refs/heads/develop'}} | |
uses: ./.github/actions/send-webhook-notification | |
with: | |
message: "A backend test failed on the upstream develop branch." | |
webhook-url: ${{ secrets.BUILD_FAILURE_ROOM_WEBHOOK_URL }} | |
- name: Upload time report | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ format('backend_test_time_shard_{0}', matrix.shard) }} | |
path: backend_test_time_report.json | |
retention-days: 1 | |
- name: Upload coverage report | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ format('backend_test_coverage_shard_{0}', matrix.shard) }} | |
include-hidden-files: true | |
path: .coverage | |
retention-days: 1 | |
check_combined_coverage: | |
name: Check coverage | |
needs: run_tests | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout repository so that local actions can be used | |
uses: actions/checkout@v4 | |
- name: Merge develop and set up Python | |
uses: ./.github/actions/merge-develop-and-setup-python | |
- name: Install coverage | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
run: pip install coverage | |
- name: Initialize Docker Containers | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
run: | | |
make build | |
sudo make run-devserver | |
make stop | |
- name: Download coverage report for shard 1 | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
uses: actions/download-artifact@v4 | |
with: | |
name: backend_test_coverage_shard_1 | |
path: coverage/coverage_1 | |
- name: Download coverage report for shard 2 | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
uses: actions/download-artifact@v4 | |
with: | |
name: backend_test_coverage_shard_2 | |
path: coverage/coverage_2 | |
- name: Download coverage report for shard 3 | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
uses: actions/download-artifact@v4 | |
with: | |
name: backend_test_coverage_shard_3 | |
path: coverage/coverage_3 | |
- name: Download coverage report for shard 4 | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
uses: actions/download-artifact@v4 | |
with: | |
name: backend_test_coverage_shard_4 | |
path: coverage/coverage_4 | |
- name: Download coverage report for shard 5 | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
uses: actions/download-artifact@v4 | |
with: | |
name: backend_test_coverage_shard_5 | |
path: coverage/coverage_5 | |
- name: Move coverage reports from artifact folders to coverage folder | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
shell: bash | |
run: | | |
for i in {1..5}; do cp coverage/coverage_$i/.coverage coverage/.coverage.$i; done | |
- name: Combine coverage reports | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
shell: bash | |
run: coverage combine coverage/.coverage.* | |
- name: Check coverage | |
id: check_backend_coverage | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
shell: bash | |
run: make run_tests.check_backend_test_coverage | |
- name: Leave a comment on the PR if workflow failed | |
if: ${{ steps.check_backend_coverage.outputs.WORKFLOW_STATUS == 'failure' }} | |
uses: ./.github/actions/post-comment | |
with: | |
owner: ${{ github.event.repository.owner.login }} | |
repo: ${{ github.event.repository.name }} | |
issue_number: ${{ github.event.number }} | |
message: > | |
🛠️ Hi @${{ github.event.pull_request.user.login }}, it looks like | |
the backend coverage tests are failing on your PR. Please follow | |
[these instructions](https://github.com/oppia/oppia/wiki/Backend-tests#coverage-reports) | |
to fix the missing coverage. | |
Thanks! | |
- name: Report failure if failed on oppia/oppia develop branch | |
if: ${{ steps.check_backend_coverage.outputs.WORKFLOW_STATUS == 'failure' && github.event_name == 'push' && github.repository == 'oppia/oppia' && github.ref == 'refs/heads/develop'}} | |
uses: ./.github/actions/send-webhook-notification | |
with: | |
message: "Backend coverage checks failed on the upstream develop branch." | |
webhook-url: ${{ secrets.BUILD_FAILURE_ROOM_WEBHOOK_URL }} | |
permissions: | |
pull-requests: write | |
check_backend_test_times: | |
name: Check test times | |
needs: run_tests | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout repository so that local actions can be used | |
uses: actions/checkout@v4 | |
- name: Merge develop and set up Python | |
uses: ./.github/actions/merge-develop-and-setup-python | |
- name: Download time report for shard 1 | |
uses: actions/download-artifact@v4 | |
with: | |
name: backend_test_time_shard_1 | |
path: backend_test_time_reports_artifacts/backend_test_time_1 | |
- name: Download time report for shard 2 | |
uses: actions/download-artifact@v4 | |
with: | |
name: backend_test_time_shard_2 | |
path: backend_test_time_reports_artifacts/backend_test_time_2 | |
- name: Download time report for shard 3 | |
uses: actions/download-artifact@v4 | |
with: | |
name: backend_test_time_shard_3 | |
path: backend_test_time_reports_artifacts/backend_test_time_3 | |
- name: Download time report for shard 4 | |
uses: actions/download-artifact@v4 | |
with: | |
name: backend_test_time_shard_4 | |
path: backend_test_time_reports_artifacts/backend_test_time_4 | |
- name: Download time report for shard 5 | |
uses: actions/download-artifact@v4 | |
with: | |
name: backend_test_time_shard_5 | |
path: backend_test_time_reports_artifacts/backend_test_time_5 | |
- name: Move time reports from artifact folders to backend_test_time_reports folder | |
shell: bash | |
run: | | |
mkdir -p backend_test_time_reports | |
for i in {1..5}; do cp backend_test_time_reports_artifacts/backend_test_time_$i/backend_test_time_report.json backend_test_time_reports/backend_test_time_report_$i.json; done | |
- name: Check test times | |
run: python -m scripts.check_backend_test_times | |
shell: bash | |
- name: Upload test times artifact | |
if: ${{ github.event_name == 'push' && github.repository == 'oppia/oppia' && github.ref == 'refs/heads/develop' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: backend_test_times | |
path: backend_test_times.txt | |
retention-days: 7 |