Skip to content

Release - Publish draft #146

Release - Publish draft

Release - Publish draft #146

name: Release - Publish draft
on:
# push:
# tags:
# Catches v1.2.3 and v1.2.3-rc1
# - v[0-9]+.[0-9]+.[0-9]+*
# - polkadot-stable[0-9]+* Activate when the release process from release org is setteled
workflow_dispatch:
inputs:
release_tag:
description: Tag matching the actual release candidate with the format polkadot-stableYYMM(-X)-rcX or polkadot-stableYYMM(-X)
required: true
type: string
jobs:
check-synchronization:
uses: paritytech-release/sync-workflows/.github/workflows/check-syncronization.yml@main
validate-inputs:
needs: [check-synchronization]
if: ${{ needs.check-synchronization.outputs.checks_passed }} == 'true'
runs-on: ubuntu-latest
outputs:
release_tag: ${{ steps.validate_inputs.outputs.release_tag }}
steps:
- name: Checkout sources
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Validate inputs
id: validate_inputs
run: |
. ./.github/scripts/common/lib.sh
RELEASE_TAG=$(validate_stable_tag ${{ inputs.release_tag }})
echo "release_tag=${RELEASE_TAG}" >> $GITHUB_OUTPUT
get-rust-versions:
needs: [validate-inputs]
runs-on: ubuntu-latest
outputs:
rustc-stable: ${{ steps.get-rust-versions.outputs.stable }}
steps:
- id: get-rust-versions
run: |
RUST_STABLE_VERSION=$(curl -sS https://raw.githubusercontent.com/paritytech/scripts/master/dockerfiles/ci-unified/Dockerfile | grep -oP 'ARG RUST_STABLE_VERSION=\K[^ ]+')
echo "stable=$RUST_STABLE_VERSION" >> $GITHUB_OUTPUT
# build-runtimes:
# needs: [validate-inputs]
# uses: "./.github/workflows/release-srtool.yml"
# with:
# excluded_runtimes: "asset-hub-rococo bridge-hub-rococo contracts-rococo coretime-rococo people-rococo rococo rococo-parachain substrate-test bp cumulus-test kitchensink minimal-template parachain-template penpal polkadot-test seedling shell frame-try sp solochain-template polkadot-sdk-docs-first"
# build_opts: "--features on-chain-release-build"
# # replace this job with fetch-binaries-from-s3
# build-binaries:
# needs: [validate-inputs]
# runs-on: ubuntu-latest
# strategy:
# matrix:
# # Tuples of [package, binary-name]
# binary: [ [frame-omni-bencher, frame-omni-bencher], [staging-chain-spec-builder, chain-spec-builder] ]
# steps:
# - name: Checkout sources
# uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
# - name: Install protobuf-compiler
# run: |
# sudo apt update
# sudo apt install -y protobuf-compiler
# - name: Build ${{ matrix.binary[1] }} binary
# run: |
# cargo build --locked --profile=production -p ${{ matrix.binary[0] }} --bin ${{ matrix.binary[1] }}
# target/production/${{ matrix.binary[1] }} --version
# - name: Upload ${{ matrix.binary[1] }} binary
# uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
# with:
# name: ${{ matrix.binary[1] }}
# path: target/production/${{ matrix.binary[1] }}
# publish-release-draft:
# runs-on: ubuntu-latest
# needs: [ get-rust-versions, build-runtimes ]
# outputs:
# release_url: ${{ steps.create-release.outputs.html_url }}
# asset_upload_url: ${{ steps.create-release.outputs.upload_url }}
# steps:
# - name: Checkout
# uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
# - name: Download artifacts
# uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
# - name: Prepare tooling
# run: |
# URL=https://github.com/chevdor/tera-cli/releases/download/v0.4.0/tera-cli_linux_amd64.deb
# wget $URL -O tera.deb
# sudo dpkg -i tera.deb
# - name: Prepare draft
# id: draft
# env:
# RUSTC_STABLE: ${{ needs.get-rust-versions.outputs.rustc-stable }}
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# ASSET_HUB_WESTEND_DIGEST: ${{ github.workspace}}/asset-hub-westend-runtime/asset-hub-westend-srtool-digest.json
# BRIDGE_HUB_WESTEND_DIGEST: ${{ github.workspace}}/bridge-hub-westend-runtime/bridge-hub-westend-srtool-digest.json
# COLLECTIVES_WESTEND_DIGEST: ${{ github.workspace}}/collectives-westend-runtime/collectives-westend-srtool-digest.json
# CORETIME_WESTEND_DIGEST: ${{ github.workspace}}/coretime-westend-runtime/coretime-westend-srtool-digest.json
# GLUTTON_WESTEND_DIGEST: ${{ github.workspace}}/glutton-westend-runtime/glutton-westend-srtool-digest.json
# PEOPLE_WESTEND_DIGEST: ${{ github.workspace}}/people-westend-runtime/people-westend-srtool-digest.json
# WESTEND_DIGEST: ${{ github.workspace}}/westend-runtime/westend-srtool-digest.json
# RELEASE_TAG: ${{ needs.validate-inputs.outputs.release_tag }}
# shell: bash
# run: |
# . ./.github/scripts/common/lib.sh
# export REF1=$(get_latest_release_tag)
# if [[ -z "$RELEASE_TAG" ]]; then
# export REF2="${{ github.ref_name }}"
# echo "REF2: ${REF2}"
# else
# export REF2="$RELEASE_TAG"
# echo "REF2: ${REF2}"
# fi
# echo "REL_TAG=$REF2" >> $GITHUB_ENV
# export VERSION=$(echo "$REF2" | sed -E 's/.*(stable[0-9]+).*$/\1/')
# ./scripts/release/build-changelogs.sh
# - name: Archive artifact context.json
# uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
# with:
# name: release-notes-context
# path: |
# scripts/release/context.json
# **/*-srtool-digest.json
# - name: Generate content write token for the release automation
# id: generate_write_token
# uses: actions/create-github-app-token@v1
# with:
# app-id: ${{ vars.POLKADOT_SDK_RELEASE_RW_APP_ID }}
# private-key: ${{ secrets.POLKADOT_SDK_RELEASE_RW_APP_KEY }}
# owner: paritytech
# - name: Create draft release
# id: create-release
# uses: actions/create-release@0cb9c9b65d5d1901c1f53e5e66eaf4afd303e70e # v1.1.4
# env:
# # GHITHUB_TOKEN: ${{ steps.generate_write_token.outputs.token }}
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# with:
# tag_name: ${{ env.REL_TAG }}
# release_name: Polkadot ${{ env.REL_TAG }}
# body_path: ${{ github.workspace}}/scripts/release/RELEASE_DRAFT.md
# draft: true
# # owner: paritytech
# # repo: paritytech/polkadot-sdk
# publish-runtimes:
# needs: [ build-runtimes, publish-release-draft ]
# continue-on-error: true
# runs-on: ubuntu-latest
# strategy:
# matrix: ${{ fromJSON(needs.build-runtimes.outputs.published_runtimes) }}
# steps:
# - name: Checkout sources
# uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
# - name: Download artifacts
# uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
# - name: Get runtime info
# env:
# JSON: release-notes-context/${{ matrix.chain }}-runtime/${{ matrix.chain }}-srtool-digest.json
# run: |
# >>$GITHUB_ENV echo ASSET=$(find ${{ matrix.chain }}-runtime -name '*.compact.compressed.wasm')
# >>$GITHUB_ENV echo SPEC=$(<${JSON} jq -r .runtimes.compact.subwasm.core_version.specVersion)
# - name: Generate content write token for the release automation
# id: generate_write_token
# uses: actions/create-github-app-token@v1
# with:
# app-id: ${{ vars.POLKADOT_SDK_RELEASE_RW_APP_ID }}
# private-key: ${{ secrets.POLKADOT_SDK_RELEASE_RW_APP_KEY }}
# owner: paritytech
# - name: Upload compressed ${{ matrix.chain }} v${{ env.SPEC }} wasm
# if: ${{ matrix.chain != 'rococo-parachain' }}
# uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 #v1.0.2
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# # GHITHUB_TOKEN: ${{ steps.generate_write_token.outputs.token }}
# with:
# upload_url: ${{ needs.publish-release-draft.outputs.asset_upload_url }}
# asset_path: ${{ env.ASSET }}
# asset_name: ${{ matrix.chain }}_runtime-v${{ env.SPEC }}.compact.compressed.wasm
# asset_content_type: application/wasm
# publish-binaries:
# needs: [ publish-release-draft, build-binaries ]
# continue-on-error: true
# runs-on: ubuntu-latest
# strategy:
# matrix:
# binary: [frame-omni-bencher, chain-spec-builder]
# steps:
# - name: Download artifacts
# uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
# with:
# name: ${{ matrix.binary }}
# - name: Generate content write token for the release automation
# id: generate_write_token
# uses: actions/create-github-app-token@v1
# with:
# app-id: ${{ vars.POLKADOT_SDK_RELEASE_RW_APP_ID }}
# private-key: ${{ secrets.POLKADOT_SDK_RELEASE_RW_APP_KEY }}
# owner: paritytech
# - name: Upload ${{ matrix.binary }} binary
# uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 #v1.0.2
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# # GHITHUB_TOKEN: ${{ steps.generate_write_token.outputs.token }}
# with:
# upload_url: ${{ needs.publish-release-draft.outputs.asset_upload_url }}
# asset_path: ${{ github.workspace}}/${{ matrix.binary }}
# asset_name: ${{ matrix.binary }}
# asset_content_type: application/octet-stream
publish-polkadot-artifacts:
# needs: [ publish-release-draft ]
needs: [ validate-inputs ]
continue-on-error: true
runs-on: ubuntu-latest
strategy:
matrix:
binary: [ polkadot, polkadot-parachain, polkadot-omni-node ]
target: [ x86_64-unknown-linux-gnu, aarch64-apple-darwin ]
steps:
- name: Checkout sources
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Fetch binaries from s3 based on version
run: |
. ./.github/scripts/common/lib.sh
VERSION="${{ needs.validate-inputs.outputs.release_tag }}"
fetch_release_artifacts_from_s3 ${{ matrix.binary }} ${{ matrix.target }}
- name: Upload ${{ matrix.binary }} binary to release draft
# uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 #v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
working-directory: ${{ github.workspace}}/release-artifacts/${{ matrix.target }}/${{ matrix.binary }}
run: |
ls -las
for file in ${{ matrix.binary }} ${{ matrix.binary }}.asc ${{ matrix.binary }}.sha256; do
echo "Uploading $file to GH"
gh release upload ${{ needs.validate-inputs.outputs.release_tag }} $file
done
# with:
# upload_url: ${{ needs.publish-release-draft.outputs.asset_upload_url }}
# asset_path: ${{ github.workspace}}/${{ matrix.binary }}
# asset_name: ${{ matrix.binary }}
# asset_content_type: application/octet-stream
# post_to_matrix:
# runs-on: ubuntu-latest
# needs: publish-release-draft
# environment: release
# strategy:
# matrix:
# channel:
# - name: "Team: RelEng Internal"
# room: '!GvAyzgCDgaVrvibaAF:parity.io'
# steps:
# - name: Send Matrix message to ${{ matrix.channel.name }}
# uses: s3krit/matrix-message-action@70ad3fb812ee0e45ff8999d6af11cafad11a6ecf # v0.0.3
# with:
# room_id: ${{ matrix.channel.room }}
# access_token: ${{ secrets.RELEASENOTES_MATRIX_V2_ACCESS_TOKEN }}
# server: m.parity.io
# message: |
# **New version of polkadot tagged**: ${{ github.ref_name }}<br/>
# Draft release created: ${{ needs.publish-release-draft.outputs.release_url }}