830dcc9bba
* docs: Add CLAUDE_RULES.md with strict rebrand protection rules - Define immutable rebrand rules that cannot be violated - Prohibit reverting rebrand for cargo check convenience - Establish checkpoint and audit trail requirements - Document correct error handling approach * refactor: Complete kurdistan-sdk to pezkuwi-sdk rebrand - Update README.md with pezkuwi-sdk branding - Replace all kurdistan-sdk URL references with pezkuwi-sdk - Replace kurdistan-tech with pezkuwichain in workflows - Update email domains from @kurdistan-tech.io to @pezkuwichain.io - Rename tool references: kurdistan-tech-publish → pezkuwi-publish - Update runner names: kurdistan-tech-* → pezkuwichain-* - Update analytics/forum/matrix domains to pezkuwichain.io - Keep 'Kurdistan Tech Institute' as organization name - Keep tech@kurdistan.gov as official government contact
144 lines
5.6 KiB
YAML
144 lines
5.6 KiB
YAML
# This workflow has combined functionality of branching-off a new stable release branch and tagging an RC.
|
||
# The options to branch-off and/or tag an RC can be chosen independently by ticking the appropriate checkbox in the launching form,
|
||
# as the branch-off happens only ones per quarter and a tagging activity done more frequently for each new RC during the release process.
|
||
name: Release - Branch off stable branch and/or tag rc
|
||
|
||
on:
|
||
workflow_dispatch:
|
||
inputs:
|
||
stable_version:
|
||
description: Stable version in the format stableYYMM that will be used as branch name and rc tag base
|
||
required: true
|
||
type: string
|
||
|
||
node_version:
|
||
description: Version of the pezkuwi node in the format X.XX.X (e.g. 1.15.0). ℹ️ Node version is needed only for the branch-off
|
||
type: string
|
||
required: false
|
||
|
||
is_new_stable:
|
||
description: Check this box if this is a new stable release and the stable branch needs to be created
|
||
type: boolean
|
||
|
||
tag_rc:
|
||
description: Check this box if the rc tag needs to be created
|
||
type: boolean
|
||
|
||
jobs:
|
||
validate-inputs:
|
||
runs-on: ubuntu-latest
|
||
outputs:
|
||
node_version: ${{ steps.validate_inputs.outputs.node_version }}
|
||
stable_version: ${{ steps.validate_inputs.outputs.stable_version }}
|
||
|
||
steps:
|
||
- name: Checkout sources
|
||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.1.7
|
||
|
||
- name: Validate inputs
|
||
id: validate_inputs
|
||
run: |
|
||
. ./.github/scripts/common/lib.sh
|
||
|
||
if [ -n "${{ inputs.node_version }}" ]; then
|
||
node_version=$(filter_version_from_input "${{ inputs.node_version }}")
|
||
echo "node_version=${node_version}" >> $GITHUB_OUTPUT
|
||
fi
|
||
|
||
stable_version=$(validate_stable_tag ${{ inputs.stable_version }})
|
||
echo "stable_version=${stable_version}" >> $GITHUB_OUTPUT
|
||
|
||
create-stable-branch:
|
||
if: ${{ inputs.is_new_stable }}
|
||
needs: [ validate-inputs ]
|
||
runs-on: ubuntu-latest
|
||
environment: release
|
||
env:
|
||
PGP_KMS_KEY: ${{ secrets.PGP_KMS_SIGN_COMMITS_KEY }}
|
||
PGP_KMS_HASH: ${{ secrets.PGP_KMS_HASH }}
|
||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||
AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
|
||
STABLE_BRANCH_NAME: ${{ needs.validate-inputs.outputs.stable_version }}
|
||
|
||
steps:
|
||
- name: Install pgpkkms
|
||
run: |
|
||
# Install pgpkms that is used to sign commits
|
||
pip install git+https://github.com/pezkuwichain-release/pgpkms.git@6cb1cecce1268412189b77e4b130f4fa248c4151
|
||
|
||
- name: Generate content write token for the release automation
|
||
id: generate_write_token
|
||
uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4
|
||
with:
|
||
app-id: ${{ vars.RELEASE_AUTOMATION_APP_ID }}
|
||
private-key: ${{ secrets.RELEASE_AUTOMATION_APP_PRIVATE_KEY }}
|
||
owner: pezkuwichain
|
||
|
||
- name: Checkout sources
|
||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.1.7
|
||
with:
|
||
ref: master
|
||
token: ${{ steps.generate_write_token.outputs.token }}
|
||
|
||
- name: Import gpg keys
|
||
run: |
|
||
. ./.github/scripts/common/lib.sh
|
||
|
||
import_gpg_keys
|
||
|
||
- name: Config git
|
||
run: |
|
||
git config --global commit.gpgsign true
|
||
git config --global gpg.program /home/runner/.local/bin/pgpkms-git
|
||
git config --global user.name "ParityReleases"
|
||
git config --global user.email "release-team@pezkuwichain.io"
|
||
git config --global user.signingKey "D8018FBB3F534D866A45998293C5FB5F6A367B51"
|
||
|
||
- name: Create stable branch
|
||
run: |
|
||
git checkout -b "$STABLE_BRANCH_NAME"
|
||
git show-ref "$STABLE_BRANCH_NAME"
|
||
|
||
- name: Bump versions, reorder prdocs and push stable branch
|
||
env:
|
||
GH_TOKEN: ${{ steps.generate_write_token.outputs.token }}
|
||
run: |
|
||
. ./.github/scripts/release/release_lib.sh
|
||
|
||
NODE_VERSION="${{ needs.validate-inputs.outputs.node_version }}"
|
||
NODE_VERSION_PATTERN="\(NODE_VERSION[^=]*= \)\".*\""
|
||
set_version "$NODE_VERSION_PATTERN" $NODE_VERSION "pezkuwi/node/primitives/src/lib.rs"
|
||
commit_with_message "Bump node version to $NODE_VERSION in pezkuwi-cli"
|
||
set_version "$NODE_VERSION_PATTERN" $NODE_VERSION "pezcumulus/pezkuwi-omni-node/lib/src/nodes/mod.rs"
|
||
commit_with_message "Bump node version to $NODE_VERSION in pezkuwi-omni-node-lib"
|
||
|
||
SPEC_VERSION=$(get_spec_version $NODE_VERSION)
|
||
runtimes_list=$(get_filtered_runtimes_list)
|
||
set_spec_versions $SPEC_VERSION "${runtimes_list[@]}"
|
||
|
||
reorder_prdocs $STABLE_BRANCH_NAME
|
||
|
||
gh auth setup-git
|
||
|
||
git push origin "$STABLE_BRANCH_NAME"
|
||
|
||
- name: Tag RC after branch off
|
||
if: ${{ inputs.tag_rc }}
|
||
env:
|
||
GH_TOKEN: ${{ steps.generate_write_token.outputs.token }} # or use a PAT with workflow scope
|
||
run: |
|
||
stable_tag_base=pezkuwi-${{ needs.validate-inputs.outputs.stable_version }}
|
||
gh workflow run release-11_rc-automation.yml \
|
||
--repo ${{ github.repository }} \
|
||
--ref ${{ needs.validate-inputs.outputs.stable_version }} \
|
||
--field version=${stable_tag_base}
|
||
|
||
tag-rc-without-branchoff:
|
||
if: ${{ !inputs.is_new_stable && inputs.tag_rc }}
|
||
needs: [ validate-inputs ]
|
||
uses: ./.github/workflows/release-11_rc-automation.yml
|
||
with:
|
||
version: pezkuwi-${{ needs.validate-inputs.outputs.stable_version }}
|
||
secrets: inherit
|