From 678e3c9a73c7a72016b77ef41469efcc2ad8fa59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Sl=C3=A1vik?= Date: Thu, 24 Aug 2023 17:37:23 +0200 Subject: [PATCH] infra: Comment about images built when all is done --- .github/workflows/build-image.yml | 53 +++++++++++++++++++++------- .github/workflows/build-image.yml.j2 | 53 +++++++++++++++++++++------- 2 files changed, 80 insertions(+), 26 deletions(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index a0ad8990aae..df0c350079f 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -201,19 +201,6 @@ jobs: path: | images/*.iso - - name: Add comment with link to PR - if: github.event_name != 'workflow_dispatch' - env: - GH_TOKEN: ${{ github.token }} - run: | - sha="${{ needs.pr-info.outputs.sha }}" - url="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" - echo -n "\`boot.iso\` built successfully based on commit $sha. " >> comment.txt - echo -e "Download it from the bottom of the [job status page]($url).\n" >> comment.txt - echo "Comment to be posted:" - cat comment.txt - gh pr comment ${{ github.event.issue.number }} -F comment.txt - - name: Set result status if: always() uses: octokit/request-action@v2.x @@ -304,3 +291,43 @@ jobs: target_url: 'https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + + finalize: + needs: [pr-info, boot-iso, live-cd] + runs-on: ubuntu-latest + # needs always() to run even if builds failed + if: ${{ always() && !cancelled() && github.event_name != 'workflow_dispatch' && needs.pr-info.outputs.allowed_user == 'true' }} + steps: + + - name: Clone repository + # need the repo to successfully post a comment :-/ + uses: actions/checkout@v3 + with: + ref: ${{ needs.pr-info.outputs.sha }} + fetch-depth: 1 + + - name: Add comment with link to PR + env: + GH_TOKEN: ${{ github.token }} + run: | + sha="${{ needs.pr-info.outputs.sha }}" + url="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}#artifacts" + + echo -e -n "Images built based on commit $sha:\n" > comment.txt + if [[ "${{ needs.pr-info.outputs.args }}" == *"--boot.iso"* ]] ; then + # .result can be success, failure, cancelled, or skipped + # https://docs.github.com/en/actions/learn-github-actions/contexts#jobs-context + echo -e "- \`boot.iso\`: ${{ needs.boot-iso.result }}\n" >> comment.txt + fi + if [[ "${{ needs.pr-info.outputs.args }}" == *"--live"* ]] ; then + echo -e "- Live: ${{ needs.live-cd.result }}\n" >> comment.txt + fi + echo -e "\nDownload the images from the bottom of the [job status page]($url).\n" >> comment.txt + + echo "Comment to be posted:" + cat comment.txt + + gh pr comment \ + ${{ github.event.issue.number }} \ + -F comment.txt diff --git a/.github/workflows/build-image.yml.j2 b/.github/workflows/build-image.yml.j2 index f472c16b5c7..41d0748150c 100644 --- a/.github/workflows/build-image.yml.j2 +++ b/.github/workflows/build-image.yml.j2 @@ -195,19 +195,6 @@ jobs: path: | images/*.iso - - name: Add comment with link to PR - if: github.event_name != 'workflow_dispatch' - env: - GH_TOKEN: ${{ github.token }} - run: | - sha="${{ needs.pr-info.outputs.sha }}" - url="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" - echo -n "\`boot.iso\` built successfully based on commit $sha. " >> comment.txt - echo -e "Download it from the bottom of the [job status page]($url).\n" >> comment.txt - echo "Comment to be posted:" - cat comment.txt - gh pr comment ${{ github.event.issue.number }} -F comment.txt - - name: Set result status if: always() uses: octokit/request-action@v2.x @@ -298,4 +285,44 @@ jobs: target_url: 'https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + + finalize: + needs: [pr-info, boot-iso, live-cd] + runs-on: ubuntu-latest + # needs always() to run even if builds failed + if: ${{ always() && !cancelled() && github.event_name != 'workflow_dispatch' && needs.pr-info.outputs.allowed_user == 'true' }} + steps: + + - name: Clone repository + # need the repo to successfully post a comment :-/ + uses: actions/checkout@v3 + with: + ref: ${{ needs.pr-info.outputs.sha }} + fetch-depth: 1 + + - name: Add comment with link to PR + env: + GH_TOKEN: ${{ github.token }} + run: | + sha="${{ needs.pr-info.outputs.sha }}" + url="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}#artifacts" + + echo -e -n "Images built based on commit $sha:\n" > comment.txt + if [[ "${{ needs.pr-info.outputs.args }}" == *"--boot.iso"* ]] ; then + # .result can be success, failure, cancelled, or skipped + # https://docs.github.com/en/actions/learn-github-actions/contexts#jobs-context + echo -e "- \`boot.iso\`: ${{ needs.boot-iso.result }}\n" >> comment.txt + fi + if [[ "${{ needs.pr-info.outputs.args }}" == *"--live"* ]] ; then + echo -e "- Live: ${{ needs.live-cd.result }}\n" >> comment.txt + fi + echo -e "\nDownload the images from the bottom of the [job status page]($url).\n" >> comment.txt + + echo "Comment to be posted:" + cat comment.txt + + gh pr comment \ + ${{ github.event.issue.number }} \ + -F comment.txt {% endif %}