Prepare Cloud Release #6
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Prepare Cloud Release" | |
on: | |
workflow_dispatch: | |
# Triggers the workflow every work day at 8:00 UTC | |
# The 3 hour offset should change when daylight savings change for GMT +3. | |
schedule: | |
- cron: "0 9 * * 1,2,3,4,5" | |
jobs: | |
daily-release: | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
pull-requests: write | |
timeout-minutes: 10 | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set output variables | |
id: output-variables | |
run: | | |
echo "::set-output name=date_humanized::$(date +'%Y-%m-%d %H:%M')" | |
echo "::set-output name=branch_name::release_$(date +'%Y_%m_%d_%H_%M')" | |
- name: Create Novu Cloud release branch | |
run: git checkout -b ${{ steps.output-variables.outputs.branch_name }} | |
- name: Push release branch | |
run: git push origin ${{ steps.output-variables.outputs.branch_name }} | |
- name: Create Novu Cloud release PR | |
run: | | |
gh pr create --base prod --head ${{ steps.output-variables.outputs.branch_name }} --title "Release ${{ steps.output-variables.outputs.date_humanized }}" --body "Automated daily production Novu Cloud release" | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Enable PR automerge | |
uses: peter-evans/enable-pull-request-automerge@v2 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
pull-request-number: ${{ steps.open-pr.outputs.pr_number }} | |
merge-method: merge | |
- name: Generate commit log | |
id: commit-log | |
run: | | |
echo 'COMMIT_LOG<<EOF' >> $GITHUB_ENV | |
echo $(git log --format="format:%h %s (@%aL)\n" origin/prod..origin/${{ steps.output-variables.outputs.branch_name }} | sed "s/\"/'/g") >> $GITHUB_ENV | |
echo 'EOF' >> $GITHUB_ENV | |
- name: Send commit log to Slack | |
id: slack | |
uses: slackapi/[email protected] | |
with: | |
payload: | | |
{ | |
"blocks": [ | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "*<${{steps.open-pr.outputs.pr_url}}|Novu Cloud Release: ${{ steps.output-variables.outputs.date_humanized }}>*\n```${{ env.COMMIT_LOG }}```" | |
} | |
} | |
] | |
} | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_ENG_FEED_DEPLOYMENTS }} |