diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 228a37d..01b5ecc 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -48,4 +48,16 @@ jobs: org.opencontainers.image.description=Created from commit ${{ env.GIT_SHA }} and ref ${{ env.GIT_REF }} org.opencontainers.image.ref.name=${{ env.GIT_REF }} org.opencontainers.image.revision=${{ env.GIT_SHA }} - org.opencontainers.image.source=https://github.com/${{ github.repository }} + org.opencontainers.image.source=https://github.com/${{ github.repository }} + + notify_failure: + + permissions: + issues: write + contents: read + + uses: ./.github/workflows/notify_failure.yml + needs: [ build ] + if: failure() + with: + needs_job: build \ No newline at end of file diff --git a/.github/workflows/notify_failure.yml b/.github/workflows/notify_failure.yml new file mode 100644 index 0000000..b355c17 --- /dev/null +++ b/.github/workflows/notify_failure.yml @@ -0,0 +1,42 @@ +name: Notify Failure + +on: + workflow_call: + inputs: + needs_job: + required: true + type: string + +permissions: + issues: write + contents: read + +jobs: + notify_failure: + runs-on: ubuntu-latest + + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + steps: + - name: Manage issue + id: manage_issue + run: | + ISSUE_TITLE="[Workflow Log] Central error logging" + ISSUE_DATA=$(gh issue list -R "$GITHUB_REPOSITORY" --search "is:open in:title \"${ISSUE_TITLE}\"" --json number --limit 1) + ISSUE_NUMBER=$(echo "$ISSUE_DATA" | jq -r '.[0].number') + + if [ -z "$ISSUE_NUMBER" ] || [ "$ISSUE_NUMBER" = "null" ]; then + NEW_ISSUE_NUMBER=$(gh issue create -R "$GITHUB_REPOSITORY" --title "$ISSUE_TITLE" \ + --body "This issue serves as a central log for all workflow errors." \ + | sed -n 's/.*#\([0-9]\+\).*/\1/p') + echo "issue_number=$NEW_ISSUE_NUMBER" >> "$GITHUB_OUTPUT" + else + echo "issue_number=$ISSUE_NUMBER" >> "$GITHUB_OUTPUT" + fi + + - name: Create comment + run: | + gh issue comment ${{ steps.manage_issue.outputs.issue_number }} \ + -R "$GITHUB_REPOSITORY" \ + --body "***Workflow failure*** ([View workflow run for details](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}))" \ No newline at end of file