Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: Add a workflow for creating releases #3804

Merged
merged 13 commits into from
Dec 6, 2022
51 changes: 51 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Create release candidate

on: [workflow_dispatch]

jobs:
create_release:
name: Create release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/cache@v3
with:
path: ./node_modules
key: npm-cache-${{ runner.os }}-${{ hashFiles('./package-lock.json') }}
- uses: actions/setup-node@v3
with:
node-version: 16
- name: Run release script and open PR
run: |
git config user.name "API Team CI User"
git config user.email "[email protected]"

Branch="release-$(date +%Y-%m-%d)"
echo "Branch: $Branch"
git checkout -b "$Branch"

npm run release

git push origin "$Branch" --force
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why the force push?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the branch already has changes in it, we'll want to overwrite them.

Copy link
Contributor

@straker straker Dec 5, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn't the checkout action fail then and kill the build before it got to this point? Not that it's preventing the pr from going through, was just curious

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, the checkout action is taking whatever branch we're releasing from (usually develop). We then create this branch, add the release commit, then push. The --force is to ensure any prior pending release (maybe someone made a mistake) is overwritten.

This is, however, fixing a problem we haven't had (yet?). I'm happy to pull it out if you aren't comfortable force pushing.

Copy link
Contributor

@straker straker Dec 5, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wilco didn't seem to think it was a problem when he reviewed it, so I'm fine with it.

edit: actually turns out wilcos review did not cover this line. let me confirm with him first before merging

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see how it matters. If the branch already exists checkout -b will fail. I'm good with it as-is.


Version=$(jq -r .version ./package.json)
echo "Version: $Version"

# Get the additions to the changelog as the commit body and generate the PR url
ReleaseNotes=$(
git show \
--no-color \
--no-prefix \
--output-indicator-new=! CHANGELOG.md | egrep '^!' | awk -F'^[!]' '{print $2}' | sed -e 's/\n/$0A/g'
)

echo "chore(release): v$Version" > /tmp/pr.txt
echo "" >> /tmp/pr.txt
echo "$ReleaseNotes" >> /tmp/pr.txt
echo "" >> /tmp/pr.txt
echo "This PR was opened by a robot :robot: :tada:" >> /tmp/pr.txt
hub pull-request --file /tmp/pr.txt --base master
env:
GITHUB_TOKEN: ${{ secrets.PAT }}