name: CI slack report on: workflow_call: inputs: job: required: true type: string slack_report_channel: required: true type: string setup_status: required: true type: string folder_slices: required: true type: string jobs: send_results: name: Send results to webhook runs-on: ubuntu-22.04 if: always() steps: - name: Preliminary job status shell: bash # For the meaning of these environment variables, see the job `Setup` run: | echo "Setup status: ${{ inputs.setup_status }}" - 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 }} SLACK_REPORT_CHANNEL: ${{ inputs.slack_report_channel }} ACCESS_REPO_INFO_TOKEN: ${{ secrets.ACCESS_REPO_INFO_TOKEN }} CI_EVENT: scheduled CI_SHA: ${{ github.sha }} CI_WORKFLOW_REF: ${{ github.workflow_ref }} CI_TEST_JOB: ${{ inputs.job }} SETUP_STATUS: ${{ inputs.setup_status }} # 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 `/`. # For a job that doesn't depend on (i.e. `needs`) `setup`, the value for `inputs.folder_slices` would be an # empty string, and the called script still get one argument (which is the emtpy string). run: | sudo apt-get install -y curl pip install slack_sdk pip show slack_sdk python utils/notification_service.py "${{ inputs.folder_slices }}" # Upload complete failure tables, as they might be big and only truncated versions could be sent to Slack. - name: Failure table artifacts # Only the model testing job is concerned for this step if: ${{ inputs.job == 'run_tests_gpu' }} uses: actions/upload-artifact@v3 with: name: prev_ci_results path: prev_ci_results