Skip to content

Commit

Permalink
feat: updated release workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
smrz2001 committed Jan 23, 2024
1 parent 4a55ed9 commit 8b85f95
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 17 deletions.
21 changes: 17 additions & 4 deletions .github/workflows/cd-to-infra.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
name: Continuous Deployment to Infra

permissions:
contents: write

on:
push:
branches: [ "main" ]
# Trigger on all release events until we can figure out the optimal selection
release:
types: [created, published, edited, prereleased, released]

env:
AWS_REGION: ${{ secrets.AWS_REGION }}
Expand Down Expand Up @@ -37,7 +40,7 @@ jobs:
run: |
SHA_TAG=$(echo ${{ github.SHA }} | head -c 12)
DEPLOY_TAG=$SHA_TAG
if [[ ${{ contains(github.event.head_commit.message, 'chore: Release') }} == 'true' ]]; then
if [[ ${{ contains(github.event.head_commit.message, 'chore: version v') }} == 'true' ]]; then
RELEASE_TAG=$(cargo metadata --format-version=1 --no-deps | jq '.packages[0].version' | tr -d '"')
# Use the release tag to deploy, if one is available.
DEPLOY_TAG=$RELEASE_TAG
Expand All @@ -60,15 +63,25 @@ jobs:
echo "Workflow triggered by: ${{ github.event_name }}"
if [[ "${{ github.event_name }}" == "release" ]]; then
echo "Release action: ${{ github.event.action }}"
if [[ "${{ github.event.action }}" == "prereleased" ]]; then
# For some reason, GitHub won't trigger the "created" or "prereleased" events when a pre-release is created
# from the "publish-release.yml" workflow. This is despite using a PAT to create the pre-release, which is
# the recommended way to trigger one workflow from another.
#
# This would imply that there was some issue with the repo or workflow configuration but GitHub does trigger
# the "published" workflow. Because of this, we're detecting pre-releases through the "published" event and
# its "prerelease" flag.
#
# Strangely enough, the "edited" and "released" events are triggered when promoting the pre-release to a
# release through the GitHub console (╯°□°)╯︵ ┻━┻
if [[ "${{ github.event.action }}" == "published" && "${{ github.event.release.prerelease }}" == "true" ]]; then
DEPLOY_ENV="tnet"
elif [[ "${{ github.event.action }}" == "released" ]]; then
DEPLOY_ENV="prod"
fi
else
DEPLOY_ENV="qa"
fi
echo "DEPLOY_ENV is $DEPLOY_ENV"
if [[ -n "$DEPLOY_ENV" ]]; then
make DEPLOY_ENV="$DEPLOY_ENV" DEPLOY_TAG=${{ needs.publish.outputs.deploy_tag }} schedule-k8s-deployment
fi
echo "DEPLOY_ENV is $DEPLOY_ENV"
20 changes: 14 additions & 6 deletions .github/workflows/publish-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,17 @@ permissions:
contents: write

on:
# Run this workflow against any branch that updates the TOML file. This can be used to create (pre)releases from any
# branch (e.g. for hotfixes) without affecting the main branch.
push:
branches: [ "main" ]
paths:
- 'Cargo.toml'

jobs:
# Build and packages all the things
# Build and package all the things
build-binaries:
if: |
contains(github.event.head_commit.message, 'chore: Release')
contains(github.event.head_commit.message, 'chore: version v')
strategy:
matrix:
# For these target platforms
Expand Down Expand Up @@ -82,8 +83,8 @@ jobs:
runs-on: ubuntu-latest
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GH_TOKEN_PAT }}
GITHUB_TOKEN: ${{ secrets.GH_TOKEN_PAT }}
steps:
- uses: actions/checkout@v3
with:
Expand All @@ -96,8 +97,15 @@ jobs:
ls artifacts/**/*
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- run: |
git config user.email "[email protected]"
git config user.name "Github Automation"
- id: release
run: |
export TAG=$(cargo metadata --format-version=1 --no-deps | jq '.packages[0].version' | tr -d '"')
echo "Releasing "$TAG
gh release create "v${TAG}" -n "Release of ${TAG}" -t "v${TAG}" --latest artifacts/**/*.tar.gz
# Generate a GitHub pre-release. This will trigger the "prereleased" event that will deploy to Clay. When the
# pre-release is promoted to a release from the GitHub console, the "released" event will trigger and deploy
# to Prod.
current_branch=$(git rev-parse --abbrev-ref HEAD)
gh release create "v${TAG}" -t "v${TAG}" --target "$current_branch" --generate-notes --prerelease artifacts/**/*.tar.gz
15 changes: 8 additions & 7 deletions ci-scripts/release_pr.sh
Original file line number Diff line number Diff line change
Expand Up @@ -63,16 +63,17 @@ cargo update -p ceramic-api-server
# Commit the specified packages
# `cargo release commit` currently fails to build a good commit message.
# Using git commit directly for now
branch="release-v${version}"
git checkout -b "$branch"
msg="chore: release version v${version}"
current_branch=$(git rev-parse --abbrev-ref HEAD)
pr_branch="version-v${version}"
git checkout -b "$pr_branch"
msg="chore: version v${version}"
git commit -am "$msg"
git push --set-upstream origin $branch
git push --set-upstream origin "$pr_branch"

# Create a PR
# Create a PR against the branch this workflow is running on
gh pr create \
--base main \
--head "$branch" \
--base "$current_branch" \
--head "$pr_branch" \
--label release \
--title "$msg" \
--body "$release_notes"

0 comments on commit 8b85f95

Please sign in to comment.