mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
ci: Revert to local tag creation and push for releases (#5714)
This commit is contained in:
@@ -1,32 +1,16 @@
|
||||
# GitHub release workflow.
|
||||
name: Release
|
||||
run-name: Release ${{ github.ref_name }}${{ inputs.dry_run && ' (DRYRUN)' || '' }}
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "v*"
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
increment:
|
||||
description: Preferred version increment (release script may promote e.g. patch to minor depending on changes).
|
||||
type: choice
|
||||
required: true
|
||||
default: patch
|
||||
options:
|
||||
- patch
|
||||
- minor
|
||||
- major
|
||||
draft:
|
||||
description: Create a draft release (for manually editing release notes before publishing).
|
||||
type: boolean
|
||||
required: true
|
||||
default: false
|
||||
dry_run:
|
||||
description: Perform a dry-run release.
|
||||
description: Perform a dry-run release (devel). Note that ref must be an annotated tag when run without dry-run.
|
||||
type: boolean
|
||||
required: true
|
||||
default: false
|
||||
ignore_missing_commit_metadata:
|
||||
description: WARNING! This option disables the requirement that all commits have a PR. Not needed for dry_run.
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
permissions:
|
||||
# Required to publish a release
|
||||
@@ -43,29 +27,19 @@ env:
|
||||
# booleans, not strings.
|
||||
# https://github.blog/changelog/2022-06-10-github-actions-inputs-unified-across-manual-and-reusable-workflows/
|
||||
CODER_RELEASE: ${{ !inputs.dry_run }}
|
||||
CODER_RELEASE_INCREMENT: ${{ inputs.increment }}
|
||||
CODER_RELEASE_DRAFT: ${{ inputs.draft }}
|
||||
CODER_DRY_RUN: ${{ inputs.dry_run }}
|
||||
|
||||
jobs:
|
||||
release:
|
||||
name: Create and publish
|
||||
name: Build and publish
|
||||
runs-on: ${{ github.repository_owner == 'coder' && 'ubuntu-latest-16-cores' || 'ubuntu-latest' }}
|
||||
env:
|
||||
# Necessary for Docker manifest
|
||||
DOCKER_CLI_EXPERIMENTAL: "enabled"
|
||||
steps:
|
||||
- name: Check release on main (or dry-run)
|
||||
if: ${{ github.ref_name != 'main' && !inputs.dry_run }}
|
||||
run: |
|
||||
echo "Release not allowed on ${{ github.ref_name }}, use dry-run."
|
||||
exit 1
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
# Set token for pushing protected tag (vX.X.X).
|
||||
token: ${{ secrets.RELEASE_GITHUB_PAT }}
|
||||
|
||||
# If the event that triggered the build was an annotated tag (which our
|
||||
# tags are supposed to be), actions/checkout has a bug where the tag in
|
||||
@@ -75,55 +49,23 @@ jobs:
|
||||
- name: Fetch git tags
|
||||
run: git fetch --tags --force
|
||||
|
||||
# Configure git user name/email for creating annotated version tag.
|
||||
- name: Setup git config
|
||||
run: |
|
||||
git config user.name "Coder CI"
|
||||
git config user.email "dean+cdrci@coder.com"
|
||||
|
||||
- name: Create release tag and release notes
|
||||
- name: Create release notes
|
||||
env:
|
||||
# We always have to set this since there might be commits on
|
||||
# main that didn't have a PR.
|
||||
CODER_IGNORE_MISSING_COMMIT_METADATA: "1"
|
||||
run: |
|
||||
set -euo pipefail
|
||||
ref=HEAD
|
||||
old_version="$(git describe --abbrev=0 "$ref^1")"
|
||||
|
||||
if [[ "${{ inputs.ignore_missing_commit_metadata }}" == *t* ]]; then
|
||||
export CODER_IGNORE_MISSING_COMMIT_METADATA=1
|
||||
fi
|
||||
|
||||
# Warn if CODER_IGNORE_MISSING_COMMIT_METADATA is set any other way
|
||||
# than via dry-run.
|
||||
if [[ ${CODER_IGNORE_MISSING_COMMIT_METADATA:-0} != 0 ]]; then
|
||||
echo "WARNING: CODER_IGNORE_MISSING_COMMIT_METADATA is enabled and we will ignore missing commit metadata." 1>&2
|
||||
fi
|
||||
|
||||
version_args=()
|
||||
if [[ $CODER_DRY_RUN == *t* ]]; then
|
||||
# Allow dry-run of branches to pass.
|
||||
export CODER_IGNORE_MISSING_COMMIT_METADATA=1
|
||||
version_args+=(--dry-run)
|
||||
fi
|
||||
|
||||
# Cache commit metadata.
|
||||
. ./scripts/release/check_commit_metadata.sh "$old_version" "$ref"
|
||||
|
||||
declare -p version_args
|
||||
|
||||
# Create new release tag (note that this tag is not pushed before
|
||||
# release.sh is run).
|
||||
version="$(
|
||||
./scripts/release/tag_version.sh \
|
||||
"${version_args[@]}" \
|
||||
--ref "$ref" \
|
||||
--"$CODER_RELEASE_INCREMENT"
|
||||
)"
|
||||
version="$(./scripts/version.sh)"
|
||||
|
||||
# Generate notes.
|
||||
release_notes_file="$(mktemp -t release_notes.XXXXXX)"
|
||||
./scripts/release/generate_release_notes.sh --old-version "$old_version" --new-version "$version" --ref "$ref" >> "$release_notes_file"
|
||||
echo CODER_RELEASE_NOTES_FILE="$release_notes_file" >> $GITHUB_ENV
|
||||
|
||||
- name: Echo release notes
|
||||
- name: Show release notes
|
||||
run: |
|
||||
set -euo pipefail
|
||||
cat "$CODER_RELEASE_NOTES_FILE"
|
||||
@@ -243,9 +185,6 @@ jobs:
|
||||
set -euo pipefail
|
||||
|
||||
publish_args=()
|
||||
if [[ $CODER_RELEASE_DRAFT == *t* ]]; then
|
||||
publish_args+=(--draft)
|
||||
fi
|
||||
if [[ $CODER_DRY_RUN == *t* ]]; then
|
||||
publish_args+=(--dry-run)
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user