-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci: fixed the automated deployment workflow (#144)
- Loading branch information
Showing
3 changed files
with
98 additions
and
107 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,34 +1,28 @@ | ||
name: Deploy git tag | ||
name: Deploy Flutter SDK | ||
|
||
# Only run after a pull request has been merged. This is because | ||
# bot account runs write operations on the github repo to push a tag. | ||
on: | ||
push: | ||
branches: [main] | ||
|
||
permissions: | ||
contents: write # access to push the git tag | ||
issues: write # Bot creates an issue if there is an issue during deployment process | ||
pull-requests: write # allow bot to make comments on PRs after they get deployed | ||
contents: write | ||
issues: write | ||
pull-requests: write | ||
|
||
jobs: | ||
deploy-git-tag: | ||
name: Deploy git tag | ||
runs-on: ubuntu-latest | ||
outputs: | ||
new_release_git_head: ${{ steps.semantic-release.outputs.new_release_git_head }} | ||
new_release_published: ${{ steps.semantic-release.outputs.new_release_published }} | ||
new_release_version: ${{ steps.semantic-release.outputs.new_release_version }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
# CLI to replace strings in files. The CLI recommends using `cargo install` which is slow. This Action is fast because it downloads pre-built binaries. | ||
# If using sd on macos, "brew install" works great. for Linux, this is the recommended way. | ||
- name: Install sd CLI to use later in the workflow | ||
# uses: kenji-miyake/setup-sd@v1 | ||
uses: levibostian/setup-sd@add-file-extension # Using fork until upstream Action has bug fixed in it. | ||
- name: Install sd CLI | ||
uses: levibostian/setup-sd@add-file-extension | ||
|
||
- name: Deploy git tag via semantic release | ||
- name: Deploy git tag via semantic-release | ||
uses: cycjimmy/semantic-release-action@v4 | ||
id: semantic-release | ||
with: | ||
|
@@ -38,14 +32,12 @@ jobs: | |
@semantic-release/github | ||
@semantic-release/exec | ||
env: | ||
# Needs to push git commits to repo. Needs write access. | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Notify team of git tag being created | ||
- name: Notify team of git tag creation | ||
uses: slackapi/[email protected] | ||
if: steps.semantic-release.outputs.new_release_published == 'true' | ||
with: | ||
# Use block kit to format the Slack message: https://app.slack.com/block-kit-builder | ||
payload: | | ||
{ | ||
"text": "Flutter SDK git tag created", | ||
|
@@ -78,17 +70,16 @@ jobs: | |
|
||
- name: Send Velocity Deployment | ||
uses: codeclimate/[email protected] | ||
if: steps.semantic-release.outputs.new_release_published == 'true' # only run if a git tag was made. | ||
if: steps.semantic-release.outputs.new_release_published == 'true' | ||
with: | ||
token: ${{ secrets.VELOCITY_DEPLOYMENT_TOKEN }} | ||
version: ${{ steps.semantic-release.outputs.new_release_version }} | ||
environment: production | ||
|
||
- name: Notify team of failure | ||
uses: slackapi/[email protected] | ||
if: ${{ failure() }} # only run this if any previous step failed | ||
if: ${{ failure() }} | ||
with: | ||
# Use block kit to format the Slack message: https://app.slack.com/block-kit-builder | ||
payload: | | ||
{ | ||
"text": "Flutter SDK deployment failure", | ||
|
@@ -118,3 +109,89 @@ jobs: | |
env: | ||
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | ||
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK | ||
|
||
deploy-to-pub-dev: | ||
name: Deploy to pub.dev | ||
needs: [deploy-git-tag] | ||
if: needs.deploy-git-tag.outputs.new_release_published == 'true' | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
ref: ${{ needs.deploy-git-tag.outputs.new_release_version }} | ||
|
||
- uses: ./.github/actions/setup-flutter | ||
|
||
- name: Publish to pub.dev | ||
uses: k-paxian/[email protected] | ||
with: | ||
credentialJson: ${{ secrets.CREDENTIAL_JSON }} | ||
flutter: true | ||
|
||
- name: Notify team of successful deployment | ||
uses: slackapi/[email protected] | ||
if: ${{ success() }} | ||
with: | ||
payload: | | ||
{ | ||
"text": "Flutter SDK deployed to pub.dev", | ||
"username": "Flutter deployment bot", | ||
"icon_url": "https://img.icons8.com/color/512/flutter.png", | ||
"channel": "#mobile-deployments", | ||
"blocks": [ | ||
{ | ||
"type": "section", | ||
"text": { | ||
"type": "mrkdwn", | ||
"text": "*Flutter* SDK deployed to pub.dev! (deployment step 2 of 2)" | ||
} | ||
}, | ||
{ | ||
"type": "divider" | ||
}, | ||
{ | ||
"type": "section", | ||
"text": { | ||
"type": "mrkdwn", | ||
"text": "*Version ${{ needs.deploy-git-tag.outputs.new_release_version }}*\n\nFlutter SDK deployment progress:\n ~1. <https://github.com/${{github.repository}}/releases/tag/${{ needs.deploy-git-tag.outputs.new_release_version }}|create git tag>~\n~2. deploy to pub.dev~\n\n" | ||
} | ||
} | ||
] | ||
} | ||
env: | ||
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | ||
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK | ||
|
||
- name: Notify team of failure | ||
uses: slackapi/[email protected] | ||
if: ${{ failure() }} | ||
with: | ||
payload: | | ||
{ | ||
"text": "Flutter SDK deployment failure", | ||
"username": "Flutter deployment bot", | ||
"icon_url": "https://img.icons8.com/color/512/flutter.png", | ||
"channel": "#mobile-deployments", | ||
"blocks": [ | ||
{ | ||
"type": "section", | ||
"text": { | ||
"type": "mrkdwn", | ||
"text": "*Flutter* SDK deployment :warning: failure :warning:" | ||
} | ||
}, | ||
{ | ||
"type": "divider" | ||
}, | ||
{ | ||
"type": "section", | ||
"text": { | ||
"type": "mrkdwn", | ||
"text": "Flutter SDK failed deployment during step *deploy to pub.dev*. View <https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}|CI server logs> to learn why and fix the issue. <https://github.com/customerio/mobile/blob/main/GIT-WORKFLOW.md|Learn more about the deployment process and how to fix errors>." | ||
} | ||
} | ||
] | ||
} | ||
env: | ||
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | ||
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK |
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