Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c0d9e32

Browse files
authored
ci: Allow missing commit metadata to be ignored in releases (#5678)
1 parent 627fbe5 commit c0d9e32

File tree

2 files changed

+62
-32
lines changed

2 files changed

+62
-32
lines changed

.github/workflows/release.yaml

Lines changed: 44 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ on:
2424
description: Perform a dry-run release.
2525
type: boolean
2626
required: true
27+
ignore_missing_commit_metadata:
28+
description: WARNING! This option disables the requirement that all commits have a PR. Not needed for dry_run.
29+
type: boolean
30+
default: false
2731

2832
permissions:
2933
# Required to publish a release
@@ -36,6 +40,7 @@ permissions:
3640
env:
3741
CODER_RELEASE: ${{ github.event.inputs.snapshot && 'false' || 'true' }}
3842
DRY_RUN: ${{ (github.event.inputs.dry_run || github.event.inputs.snapshot) && 'true' || 'false' }}
43+
CODER_IGNORE_MISSING_COMMIT_METADATA: ${{ github.event.inputs.ignore_missing_commit_metadata && '1' || '0' }}
3944

4045
concurrency: ${{ github.workflow }}-${{ github.ref }}
4146

@@ -65,6 +70,45 @@ jobs:
6570
git config user.name "GitHub Actions Bot"
6671
git config user.email ""
6772
73+
- name: Create release tag and release notes
74+
run: |
75+
set -euo pipefail
76+
ref=HEAD
77+
old_version="$(git describe --abbrev=0 "$ref^1")"
78+
79+
# Warn if CODER_IGNORE_MISSING_COMMIT_METADATA is set any other way
80+
# than via dry-run.
81+
if [[ ${CODER_IGNORE_MISSING_COMMIT_METADATA:-0} != 0 ]]; then
82+
echo "WARNING: CODER_IGNORE_MISSING_COMMIT_METADATA is enabled and we will ignore missing commit metadata." 1>&2
83+
fi
84+
85+
if [[ $DRY_RUN == true ]]; then
86+
# Allow dry-run of branches to pass.
87+
export CODER_IGNORE_MISSING_COMMIT_METADATA=1
88+
fi
89+
90+
# Cache commit metadata.
91+
. ./scripts/release/check_commit_metadata.sh "$old_version" "$ref"
92+
93+
# Create new release tag (note that this tag is not pushed before
94+
# release.sh is run).
95+
version="$(
96+
./scripts/release/tag_version.sh \
97+
${{ (github.event.inputs.dry_run || github.event.inputs.snapshot) && '--dry-run' }} \
98+
--ref "$ref" \
99+
--${{ github.event.inputs.increment }}
100+
)"
101+
102+
# Generate notes.
103+
release_notes_file="$(mktemp -t release_notes.XXXXXX)"
104+
./scripts/release/generate_release_notes.sh --old-version "$old_version" --new-version "$version" --ref "$ref" >> "$release_notes_file"
105+
echo CODER_RELEASE_NOTES_FILE="$release_notes_file" >> $GITHUB_ENV
106+
107+
- name: Echo release notes
108+
run: |
109+
set -euo pipefail
110+
cat "$CODER_RELEASE_NOTES_FILE"
111+
68112
- name: Docker Login
69113
uses: docker/login-action@v2
70114
with:
@@ -120,38 +164,6 @@ jobs:
120164
AC_CERTIFICATE_PASSWORD: ${{ secrets.AC_CERTIFICATE_PASSWORD }}
121165
AC_APIKEY_P8_BASE64: ${{ secrets.AC_APIKEY_P8_BASE64 }}
122166

123-
- name: Create release tag and release notes
124-
run: |
125-
set -euo pipefail
126-
ref=HEAD
127-
old_version="$(git describe --abbrev=0 "$ref^1")"
128-
129-
if [[ $DRY_RUN == true ]]; then
130-
# Allow dry-run of branches to pass.
131-
export CODER_IGNORE_MISSING_COMMIT_METADATA=1
132-
fi
133-
134-
# Cache commit metadata.
135-
. ./scripts/release/check_commit_metadata.sh "$old_version" "$ref"
136-
137-
# Create new release tag.
138-
version="$(
139-
./scripts/release/tag_version.sh \
140-
${{ (github.event.inputs.dry_run || github.event.inputs.snapshot) && '--dry-run' }} \
141-
--ref "$ref" \
142-
--${{ github.event.inputs.increment }}
143-
)"
144-
145-
# Generate notes.
146-
release_notes_file="$(mktemp -t release_notes.XXXXXX)"
147-
./scripts/release/generate_release_notes.sh --old-version "$old_version" --new-version "$version" --ref "$ref" >> "$release_notes_file"
148-
echo CODER_RELEASE_NOTES_FILE="$release_notes_file" >> $GITHUB_ENV
149-
150-
- name: Echo release notes
151-
run: |
152-
set -euo pipefail
153-
cat "$CODER_RELEASE_NOTES_FILE"
154-
155167
- name: Build binaries
156168
run: |
157169
set -euo pipefail

scripts/release.sh

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ specified branch as the release commit. This will also set --dry-run.
3737
EOH
3838
}
3939

40+
# Warn if CODER_IGNORE_MISSING_COMMIT_METADATA is set any other way than via
41+
# --branch.
42+
if [[ ${CODER_IGNORE_MISSING_COMMIT_METADATA:-0} != 0 ]]; then
43+
log "WARNING: CODER_IGNORE_MISSING_COMMIT_METADATA is enabled externally, we will ignore missing commit metadata."
44+
fi
45+
4046
branch=main
4147
draft=0
4248
dry_run=0
@@ -112,8 +118,10 @@ fi
112118
mapfile -t versions < <(gh api -H "Accept: application/vnd.github+json" /repos/coder/coder/git/refs/tags -q '.[].ref | split("/") | .[2]' | grep '^v' | sort -r -V)
113119
old_version=${versions[0]}
114120

121+
trap 'log "Check commit metadata failed, you can try to set \"export CODER_IGNORE_MISSING_COMMIT_METADATA=1\" and try again, if you know what you are doing."' EXIT
115122
# shellcheck source=scripts/release/check_commit_metadata.sh
116123
source "$SCRIPT_DIR/release/check_commit_metadata.sh" "$old_version" "$ref"
124+
trap - EXIT
117125

118126
new_version="$(execrelative ./release/tag_version.sh --dry-run --ref "$ref" --"$increment")"
119127
release_notes="$(execrelative ./release/generate_release_notes.sh --old-version "$old_version" --new-version "$new_version" --ref "$ref")"
@@ -141,9 +149,19 @@ fi
141149
args=()
142150
if ((draft)); then
143151
args+=(-F draft=true)
152+
else
153+
args+=(-F draft=false)
144154
fi
145155
if ((dry_run)); then
146156
args+=(-F dry_run=true)
157+
else
158+
args+=(-F dry_run=false)
159+
160+
# We only set this on non-dry-run releases because it will show a
161+
# warning in CI.
162+
if [[ ${CODER_IGNORE_MISSING_COMMIT_METADATA:-0} == 1 ]]; then
163+
args+=(-F ignore_missing_commit_metadata=true)
164+
fi
147165
fi
148166

149167
log

0 commit comments

Comments
 (0)