diff --git a/.github/workflows/installation.yaml b/.github/workflows/installation.yaml index 936be10..368cf74 100644 --- a/.github/workflows/installation.yaml +++ b/.github/workflows/installation.yaml @@ -43,64 +43,14 @@ jobs: cli-version: ">=7.3.0.post1" runtime: conda - # Surface failures via GitHub issues - failure-reporting: + report-failure: if: ${{ always() && github.ref_name == github.event.repository.default_branch }} - runs-on: ubuntu-latest needs: [test] - steps: - - uses: actions/checkout@v4 - - - name: Create or close issue - run: | - # Search for issues opened by this job. - matching_issues=$(gh issue list \ - --state open \ - --author '@me' \ - --json 'number,title' \ - --jq 'map(select(.title == "${{ env.title }}") | .number)') - - # Handle the case of multiple matching issues, even though this - # shouldn't happen under normal circumstances. - if [[ $(jq length <<<"$matching_issues") -gt 1 ]]; then - echo "ERROR: Multiple matching issues found:" >&2 - for issue in $(jq -r '.[]' <<<"$matching_issues"); do - echo "- https://github.com/${{ github.repository }}/issues/$issue" >&2 - done - echo "This must be handled manually." >&2 - exit 1 - fi - - existing_issue=$(jq -r '.[0] | values' <<<"$matching_issues") - - if [[ "${{ needs.test.result }}" == "failure" ]]; then - if [[ -z "$existing_issue" ]]; then - echo "New failure detected. Creating issue..." - new_issue=$(gh issue create \ - --title "$title" \ - --body "$body") - echo "Created issue: $new_issue" - else - echo "Open issue already exists: https://github.com/${{ github.repository }}/issues/$existing_issue" - fi - fi - - if [[ "${{ needs.test.result }}" == "success" ]]; then - if [[ -n "$existing_issue" ]]; then - echo "Closing issue https://github.com/${{ github.repository }}/issues/$existing_issue" - gh issue close "$existing_issue" \ - --comment "Installation is successful as of https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" - else - echo "No open issue to be closed." - fi - fi - - env: - title: Installation failure - body: | - _Automatically created by [installation.yaml](https://github.com/${{ github.repository }}/blob/${{ github.sha }}/.github/workflows/installation.yaml)_ - - An installation check has failed: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} - - This issue will be automatically closed upon the next successful run of the workflow. - GITHUB_TOKEN: ${{ secrets.GH_TOKEN_NEXTSTRAIN_BOT_REPO }} + # FIXME: drop the branch tag after merging https://github.com/nextstrain/.github/pull/121 + uses: nextstrain/.github/.github/workflows/report-failure.yaml@victorlin/report-failure + with: + failure: ${{ needs.test.result == 'failure' }} + success: ${{ needs.test.result == 'success' }} + title: Installation failure + secrets: + token: ${{ secrets.GH_TOKEN_NEXTSTRAIN_BOT_REPO }}