diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index 2ea20cc8623..66367b2e211 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -16,7 +16,7 @@ on: tag_name: required: true type: string - description: "The tag name for the release (e.g. v2.100.0)." + description: "The tag name for the release (e.g. v2.100.0, or v2.100.0-rc.1 for a pre-release)." environment: default: production type: environment @@ -42,8 +42,9 @@ jobs: env: TAG_NAME: ${{ inputs.tag_name }} run: | - if [[ ! "$TAG_NAME" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo "Invalid tag name format. Must be in the form v1.2.3" + # Build metadata (v1.2.3+001) is rejected: later steps detect a pre-release by its hyphen. + if [[ ! "$TAG_NAME" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?$ ]]; then + echo "Invalid tag name format. Must be in the form v1.2.3 or v1.2.3-rc.1" exit 1 fi linux: @@ -375,12 +376,19 @@ jobs: GPG_KEY: ${{ secrets.GPG_KEY }} GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} GPG_KEYGRIP: ${{ secrets.GPG_KEYGRIP }} + GPG_PUBKEY_2026: ${{ secrets.GPG_PUBKEY_2026 }} + GPG_KEY_2026: ${{ secrets.GPG_KEY_2026 }} + GPG_PASSPHRASE_2026: ${{ secrets.GPG_PASSPHRASE_2026 }} + GPG_KEYGRIP_2026: ${{ secrets.GPG_KEYGRIP_2026 }} run: | base64 -d <<<"$GPG_PUBKEY" | gpg --import --no-tty --batch --yes base64 -d <<<"$GPG_KEY" | gpg --import --no-tty --batch --yes + base64 -d <<<"$GPG_PUBKEY_2026" | gpg --import --no-tty --batch --yes + base64 -d <<<"$GPG_KEY_2026" | gpg --import --no-tty --batch --yes echo "allow-preset-passphrase" > ~/.gnupg/gpg-agent.conf gpg-connect-agent RELOADAGENT /bye base64 -d <<<"$GPG_PASSPHRASE" | /usr/lib/gnupg2/gpg-preset-passphrase --preset "$GPG_KEYGRIP" + base64 -d <<<"$GPG_PASSPHRASE_2026" | /usr/lib/gnupg2/gpg-preset-passphrase --preset "$GPG_KEYGRIP_2026" - name: Sign RPMs if: inputs.environment == 'production' run: | @@ -400,7 +408,7 @@ jobs: ./script/createrepo.sh cp -r dist/repodata site/packages/rpm/ pushd site/packages/rpm - gpg --yes --detach-sign --armor repodata/repomd.xml + gpg --yes --detach-sign --armor --default-key 2C6106201985B60E6C7AC87323F3D4EA75716059 repodata/repomd.xml popd - name: Run reprepro if: ${{ inputs.environment == 'production' }} diff --git a/docs/release-process-deep-dive.md b/docs/release-process-deep-dive.md index cd871e20e6a..70fbd83aadc 100644 --- a/docs/release-process-deep-dive.md +++ b/docs/release-process-deep-dive.md @@ -38,18 +38,20 @@ Although this workflow is used to do our production releases for Linux, MacOS an runs-on: ubuntu-latest steps: - name: Validate tag name format + env: + TAG_NAME: ${{ inputs.tag_name }} run: | - if [[ ! "${{ inputs.tag_name }}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo "Invalid tag name format. Must be in the form v1.2.3" + if [[ ! "$TAG_NAME" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?$ ]]; then + echo "Invalid tag name format. Must be in the form v1.2.3 or v1.2.3-rc.1" exit 1 fi ``` -The purpose of this job is to [prevent incorrectly tagged releases](https://github.com/cli/cli/pull/10121), by ensuring they conform to the `major.minor.patch` form of semantic versioning, preceded by a `v`. +The purpose of this job is to [prevent incorrectly tagged releases](https://github.com/cli/cli/pull/10121), by ensuring they conform to the `major.minor.patch` form of semantic versioning, preceded by a `v`. An optional pre-release suffix such as `-rc.1` is allowed. Build metadata after a `+` is not, because the rest of the workflow identifies a pre-release by looking for a hyphen. -> [!WARNING] -> The `release` job can [create the GitHub release as a pre-release based on the existence of a hyphen in the tag name](https://github.com/cli/cli/blob/756f4ec04abdc9fdbab3fef35b182c546ef1dd17/.github/workflows/deployment.yml#L362-L364), but the later addition of `validate-tag-name` disallows this. +> [!NOTE] +> A hyphen in the tag name changes three things: the `release` job [creates the GitHub release as a pre-release](https://github.com/cli/cli/blob/756f4ec04abdc9fdbab3fef35b182c546ef1dd17/.github/workflows/deployment.yml#L362-L364), the site is not published, and the Windows MSI drops the suffix so its `ProductVersion` stays numeric. ## [OS Builds](https://github.com/cli/cli/blob/756f4ec04abdc9fdbab3fef35b182c546ef1dd17/.github/workflows/deployment.yml#L40-L248) diff --git a/script/distributions b/script/distributions index 5f45813a5c0..d18d15aaf5a 100644 --- a/script/distributions +++ b/script/distributions @@ -4,7 +4,7 @@ Codename: stable Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - debian stable repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 Origin: gh Label: gh @@ -12,7 +12,7 @@ Codename: oldstable Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - debian oldstable repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 Origin: gh Label: gh @@ -20,7 +20,7 @@ Codename: testing Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - debian testing repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 Origin: gh Label: gh @@ -28,7 +28,7 @@ Codename: unstable Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - debian unstable repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 Origin: gh Label: gh @@ -36,7 +36,7 @@ Codename: sid Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - debian unstable repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 Origin: gh Label: gh @@ -44,7 +44,7 @@ Codename: buster Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - debian buster repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 Origin: gh Label: gh @@ -52,7 +52,7 @@ Codename: bullseye Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - debian bullseye repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 Origin: gh Label: gh @@ -60,7 +60,7 @@ Codename: stretch Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - debian stretch repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 Origin: gh Label: gh @@ -68,7 +68,7 @@ Codename: jessie Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - debian jessie repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 Origin: gh Label: gh @@ -76,7 +76,7 @@ Codename: focal Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - ubuntu focal repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 DebOverride: override.ubuntu Origin: gh @@ -85,7 +85,7 @@ Codename: precise Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - ubuntu precise repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 DebOverride: override.ubuntu Origin: gh @@ -94,7 +94,7 @@ Codename: bionic Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - ubuntu bionic repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 DebOverride: override.ubuntu Origin: gh @@ -103,7 +103,7 @@ Codename: trusty Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - ubuntu trusty repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 DebOverride: override.ubuntu Origin: gh @@ -112,7 +112,7 @@ Codename: xenial Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - ubuntu xenial repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 DebOverride: override.ubuntu Origin: gh @@ -121,7 +121,7 @@ Codename: groovy Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - ubuntu groovy repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 DebOverride: override.ubuntu Origin: gh @@ -130,7 +130,7 @@ Codename: eoan Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - ubuntu eoan repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 DebOverride: override.ubuntu Origin: gh @@ -139,7 +139,7 @@ Codename: disco Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - ubuntu disco repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 DebOverride: override.ubuntu Origin: gh @@ -148,7 +148,7 @@ Codename: cosmic Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - ubuntu cosmic repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 DebOverride: override.ubuntu Origin: gh @@ -157,7 +157,7 @@ Codename: hirsute Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - ubuntu hirsute repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 DebOverride: override.ubuntu Origin: gh @@ -166,7 +166,7 @@ Codename: kali-rolling Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - kali repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 Origin: gh Label: gh @@ -174,5 +174,5 @@ Codename: impish Architectures: i386 amd64 armhf arm64 Components: main Description: The GitHub CLI - ubuntu impish repo -SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 +SignWith: 2C6106201985B60E6C7AC87323F3D4EA75716059 7F38BBB59D064DBCB3D84D725612B36462313325 DebOverride: override.ubuntu diff --git a/script/rpmmacros b/script/rpmmacros index f2fdd6de373..8a691d41a55 100644 --- a/script/rpmmacros +++ b/script/rpmmacros @@ -1 +1 @@ -%_gpg_name GitHub CLI +%_gpg_name 2C6106201985B60E6C7AC87323F3D4EA75716059