Spaces:
Paused
Paused
| name: Self-hosted runner (check runner status) | |
| # Note that each job's dependencies go into a corresponding docker file. | |
| # | |
| # For example for `run_all_tests_torch_cuda_extensions_gpu` the docker image is | |
| # `huggingface/transformers-pytorch-deepspeed-latest-gpu`, which can be found at | |
| # `docker/transformers-pytorch-deepspeed-latest-gpu/Dockerfile` | |
| on: | |
| repository_dispatch: | |
| schedule: | |
| # run per hour | |
| - cron: "0 */1 * * *" | |
| env: | |
| TRANSFORMERS_IS_CI: yes | |
| jobs: | |
| check_runner_status: | |
| name: Check Runner Status | |
| runs-on: ubuntu-latest | |
| outputs: | |
| offline_runners: ${{ steps.set-offline_runners.outputs.offline_runners }} | |
| steps: | |
| - name: Checkout transformers | |
| uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 2 | |
| - name: Check Runner Status | |
| run: python utils/check_self_hosted_runner.py --target_runners single-gpu-ci-runner-docker,multi-gpu-ci-runner-docker,single-gpu-scheduled-ci-runner-docker,multi-scheduled-scheduled-ci-runner-docker,single-gpu-doctest-ci-runner-docker --token ${{ secrets.ACCESS_REPO_INFO_TOKEN }} | |
| - id: set-offline_runners | |
| name: Set output for offline runners | |
| if: ${{ always() }} | |
| run: | | |
| offline_runners=$(python3 -c 'fp = open("offline_runners.txt"); failed = fp.read(); fp.close(); print(failed)') | |
| echo "offline_runners=$offline_runners" >> $GITHUB_OUTPUT | |
| send_results: | |
| name: Send results to webhook | |
| runs-on: ubuntu-latest | |
| needs: check_runner_status | |
| if: ${{ failure() }} | |
| steps: | |
| - name: Preliminary job status | |
| shell: bash | |
| run: | | |
| echo "Runner availability: ${{ needs.check_runner_status.result }}" | |
| - uses: actions/checkout@v3 | |
| - uses: actions/download-artifact@v3 | |
| - name: Send message to Slack | |
| env: | |
| CI_SLACK_BOT_TOKEN: ${{ secrets.CI_SLACK_BOT_TOKEN }} | |
| CI_SLACK_CHANNEL_ID: ${{ secrets.CI_SLACK_CHANNEL_ID }} | |
| CI_SLACK_CHANNEL_ID_DAILY: ${{ secrets.CI_SLACK_CHANNEL_ID_DAILY }} | |
| CI_SLACK_CHANNEL_DUMMY_TESTS: ${{ secrets.CI_SLACK_CHANNEL_DUMMY_TESTS }} | |
| CI_SLACK_REPORT_CHANNEL_ID: ${{ secrets.CI_SLACK_CHANNEL_ID_DAILY }} | |
| ACCESS_REPO_INFO_TOKEN: ${{ secrets.ACCESS_REPO_INFO_TOKEN }} | |
| CI_EVENT: runner status check | |
| RUNNER_STATUS: ${{ needs.check_runner_status.result }} | |
| OFFLINE_RUNNERS: ${{ needs.check_runner_status.outputs.offline_runners }} | |
| # We pass `needs.setup.outputs.matrix` as the argument. A processing in `notification_service.py` to change | |
| # `models/bert` to `models_bert` is required, as the artifact names use `_` instead of `/`. | |
| run: | | |
| pip install slack_sdk | |
| python utils/notification_service.py | |