Improve release notes issue selection accuracy
The existing behavior was to select issues closed between two tag dates. This is error prone since issues may be closed after the fact, and there may be multiple releases being worked at the same time and it is impossible to tell which release an issue was closed for. This switches to selecting issues by matching their milestone name against the git tag. Since github does not support assigning multiple assignments, their will likely need to be some manual issue additions to the release notes when an issue is targeted to multiple releases e.g. v2.0.1 and v2.1. This also moves to only triggering github release creation on non-pre-release semver tags, to avoid cluttering the release list. Change-Id: I99824020789323f8a1db418c73acef57ebb86022 Signed-off-by: Sean Eagan <seaneagan1@gmail.com>
This commit is contained in:
parent
014e24cd15
commit
9097b38f80
57
.github/workflows/release-github.yaml
vendored
Normal file
57
.github/workflows/release-github.yaml
vendored
Normal file
@ -0,0 +1,57 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: release-github
|
||||
|
||||
# Runs on airshipctl non-pre-releases
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v[0-9]+.[0-9]+.[0-9]+'
|
||||
|
||||
jobs:
|
||||
release-github:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Download release notes utility
|
||||
run: |
|
||||
sudo npm install github-release-notes@0.17.1 -g
|
||||
- name: Generate release notes
|
||||
run: |
|
||||
TAG_NAME=${TAG##*/}
|
||||
gren changelog --override --generate \
|
||||
--username airshipit --repo airshipctl \
|
||||
--changelog-filename release-notes.md \
|
||||
--token "$GITHUB_TOKEN" \
|
||||
--tags "$TAG_NAME" \
|
||||
--data-source milestones \
|
||||
--milestone-match '{{tag_name}}' \
|
||||
--debug
|
||||
cat release-notes.md
|
||||
env:
|
||||
TAG: ${{ github.ref }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: 1.13.x
|
||||
- name: Generate binaries and create github release
|
||||
uses: goreleaser/goreleaser-action@v1
|
||||
with:
|
||||
version: latest
|
||||
args: release --release-notes=release-notes.md --skip-validate --debug
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
@ -10,11 +10,11 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: release
|
||||
name: release-image
|
||||
|
||||
# Expects git tags in the following formats:
|
||||
# airshipctl: v1.2.3 (no prefix)
|
||||
# krm functions: <quay image name>-v1.2.3 e.g. replacement-transformer-v1.2.3
|
||||
# Expects release git tags in the following formats:
|
||||
# airshipctl: v1.2.3-beta.1 (no prefix)
|
||||
# krm functions: <quay image name>-v1.2.3-beta.1
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
@ -86,41 +86,3 @@ jobs:
|
||||
IMG: ${{ format('quay.io/airshipit/{0}', steps.semver_tags.outputs.IMG) }}
|
||||
SOURCE: ${{ github.sha }}
|
||||
TARGETS: ${{ steps.semver_tags.outputs.TAGS }}
|
||||
|
||||
release-github:
|
||||
# Only create github releases for airshipctl (unprefixed semver tag), not krm functions.
|
||||
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Download release notes utility
|
||||
run: |
|
||||
sudo npm install github-release-notes@0.17.1 -g
|
||||
- name: Generate release notes
|
||||
run: |
|
||||
TAG_NAME=${TAG##*/}
|
||||
gren changelog --override --generate \
|
||||
--username airshipit --repo airshipctl \
|
||||
--changelog-filename release-notes.md \
|
||||
--token "$GITHUB_TOKEN" \
|
||||
--tags "$TAG_NAME" \
|
||||
--ignore-tags-with '^(?!v\d)' `# only consider semver tags without krm function prefix when finding previous tag` \
|
||||
--debug
|
||||
cat release-notes.md
|
||||
env:
|
||||
TAG: ${{ github.ref }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: 1.13.x
|
||||
- name: Generate binaries and create github release
|
||||
uses: goreleaser/goreleaser-action@v1
|
||||
with:
|
||||
version: latest
|
||||
args: release --release-notes=release-notes.md --skip-validate --debug
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
Loading…
Reference in New Issue
Block a user