release-candidate.yml 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. name: release-candidate
  2. on:
  3. push:
  4. branches:
  5. - RC
  6. workflow_dispatch:
  7. env:
  8. DISCORD_HOOK_URL: ${{ secrets.DISCORD_HOOK_URL }}
  9. GITHUB_SHA: ${{ github.sha }}
  10. jobs:
  11. rc-build:
  12. name: Build Release Candidate
  13. runs-on: ubuntu-latest
  14. permissions:
  15. id-token: write
  16. contents: write
  17. steps:
  18. - uses: actions/checkout@v4
  19. with:
  20. ref: RC
  21. - name: Retrieve Certs
  22. run: |
  23. ./script/retrieve_certs
  24. env:
  25. GIT_USER: ${{ secrets.GIT_USER }}
  26. GIT_AUTH: ${{ secrets.GIT_AUTH }}
  27. GIT_URL: ${{ secrets.GIT_URL }}
  28. CERTS_KEY: ${{ secrets.CERTS_KEY }}
  29. - name: Set Release Tag
  30. run: echo "release_tag=$(cat version.txt)-RC" >> $GITHUB_ENV
  31. - name: Build RC release
  32. run: |
  33. ./script/build_release rc
  34. - name: Configure AWS credentials
  35. uses: aws-actions/configure-aws-credentials@v4
  36. with:
  37. role-to-assume: ${{ secrets.AWS_ROLE_STAGING }}
  38. aws-region: ${{ secrets.AWS_ACCESS_REGION }}
  39. - name: Deploy RC to release-candidate bucket
  40. run: |
  41. aws s3 sync --no-progress --acl public-read s3out s3://${{ secrets.AWS_S3_BUCKET_STAGING }}/${{ env.release_tag }}
  42. - name: Deploy RC to rolling bucket
  43. run: |
  44. aws s3 sync --no-progress --acl public-read s3out-latest s3://${{ secrets.AWS_S3_BUCKET_STAGING }}/rc
  45. - name: Deploy RC version file
  46. run: |
  47. aws s3 sync --no-progress --acl public-read s3outver s3://${{ secrets.AWS_S3_BUCKET_STAGING }}
  48. - name: Invalidate Cloudfront
  49. run: |
  50. aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DIST_ID_STAGING }} --paths "/rc/*" "/rc/ipxe/*" "/rc/sigs/*"
  51. - name: Tag RC Release
  52. run: |
  53. ./script/tag ${{ env.release_tag }}
  54. - name: Extract release notes
  55. id: extract-release-notes
  56. uses: ffurrer2/extract-release-notes@v2
  57. - name: Create RC Release and Upload Assets
  58. uses: svenstaro/upload-release-action@v2
  59. with:
  60. file: githubout/*
  61. file_glob: true
  62. overwrite: true
  63. prerelease: true
  64. release_name: ${{ env.release_tag }}
  65. repo_token: ${{ secrets.GITHUB_TOKEN }}
  66. tag: ${{ env.release_tag }}
  67. body: ${{ steps.extract-release-notes.outputs.release_notes }}
  68. - name: Notify Discord on failure
  69. if: failure()
  70. run: |
  71. ./script/message failure
  72. - name: Notify Discord on completion
  73. if: success()
  74. run: |
  75. ./script/message rc-push