Skip to content

Commit

Permalink
Create release with template and release notes
Browse files Browse the repository at this point in the history
  • Loading branch information
KevinMind committed Aug 30, 2024
1 parent 82ed35e commit ec6499f
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 0 deletions.
18 changes: 18 additions & 0 deletions .github/release-template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
This week's push hero is @{{GITHUB_USER}}

Latest Release: [{{LATEST_TAG}}]({{LAST_RELEASE_URL}})

## Blockers:

## Cherry-picks:

<!-- Link to the actual commits, NOT merge commits. The commits need to appear
in chronological order so that `git cherry-pick` will apply them correctly. -->

## Before we push:

## Before we start:

## Before we promote:

## After we're done:
11 changes: 11 additions & 0 deletions .github/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
changelog:
categories:
- title: Notable things shipping
labels:
- '*'
exclude:
labels:
- dependencies
- title: Dependendabots
labels:
- dependencies
74 changes: 74 additions & 0 deletions .github/workflows/draft_release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: Draft Release

on:
workflow_dispatch:
inputs:
tag:
description: 'Release date YYYY.MM.DD Also used to generate the tag name.'
required: true
pull_request:

jobs:
draft_release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Create Release Draft
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash
run: |
# Format current date as YYYY.MM.DD
if [[ "${{ github.event_name}}" == 'workflow_dispatch' ]]; then
tag="${{ github.event.inputs.tag }}"
else
tag=$(date +'%Y.%m.%d')
fi
#Validate the tag is formatted correctly YYYY.MM.DD or YYYY.MM.DD-rcX
# where rcX is a whole number greater than zero
if [[ ! $tag =~ ^[0-9]{4}\.[0-9]{2}\.[0-9]{2}(-rc[0-9]+)?$ ]]; then
echo "Invalid tag format. Must be YYYY.MM.DD or YYYY.MM.DD-rcX"
exit 1
fi
# Verify that a release with this tag does not already exist
if gh release view $tag-next &> /dev/null; then
echo "Release $tag-next already exists"
exit 1
fi
# Get the latest release tag
latest_release=$(
gh api \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
/repos/mozilla/addons-server/releases/latest
)
latest_tag=$(echo $latest_release | jq -r '.tag_name')
latest_release_url=$(echo $latest_release | jq -r '.html_url')
cat <<EOF
$latest_release
EOF
# Cat the file ../release-template.md
template=$(cat .github/release-template.md)
# Replace {{GITHUB_USER}} in template with ${{ github.actor }}
template=${template//\{\{GITHUB_USER\}\}/${{ github.actor }}}
# Replace {{LATEST_TAG}} in template with $latest_tag
template=${template//\{\{LATEST_TAG\}\}/$latest_tag}
# Replace {{LAST_RELEASE_URL}} in template with $latest_release_url
template=${template//\{\{LAST_RELEASE_URL\}\}/$latest_release_url}
gh release create $tag \
--title $tag \
--target master \
--notes-start-tag $latest_tag \
--notes "$template" \
--draft

0 comments on commit ec6499f

Please sign in to comment.