release #33
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: release | |
on: | |
workflow_dispatch: | |
inputs: | |
release: # e.g. 'polkadot-v1.12.0' | |
description: Polkadot release tag | |
required: true | |
rust: # e.g. '1.77.0' | |
description: Rust version | |
required: true | |
title: # e.g. 'Polkadot v1.12.0' | |
description: Release title | |
required: true | |
jobs: | |
build: | |
runs-on: ${{ matrix.platform.os }} | |
permissions: | |
contents: write | |
strategy: | |
matrix: | |
package: | |
- polkadot | |
- polkadot-parachain | |
platform: | |
# Linux | |
- os: ubuntu-22.04 | |
target: aarch64-unknown-linux-gnu | |
- os: ubuntu-22.04 | |
target: x86_64-unknown-linux-gnu | |
# macOS | |
- os: macos-14 | |
target: aarch64-apple-darwin | |
- os: macos-14 | |
target: x86_64-apple-darwin | |
env: | |
RUSTFLAGS: "${{ matrix.platform.cpu != '' && format('-C target-cpu={0}', matrix.platform.cpu) || '' }} ${{ matrix.platform.target == 'aarch64-unknown-linux-gnu' && '-C linker=aarch64-linux-gnu-gcc' || '' }}" | |
path: "target/${{ matrix.platform.target }}/production" | |
archive: "${{ matrix.package }}-${{ matrix.platform.target }}${{ matrix.platform.cpu != '' && format('-{0}', matrix.platform.cpu) || '' }}.tar.gz" | |
sha: ${{ contains(matrix.platform.target, 'apple') && 'shasum -a 256' || 'sha256sum' }} | |
steps: | |
- name: Free up space | |
shell: bash | |
run: | | |
sudo rm -rf /usr/share/dotnet | |
sudo rm -rf /opt/ghc | |
sudo rm -rf "/usr/local/share/boost" | |
sudo rm -rf "$AGENT_TOOLSDIRECTORY" | |
# Clone and checkout release | |
- id: clone | |
name: Clone release | |
run: | | |
git clone --branch ${{ github.event.inputs.release }} --depth 1 https://github.com/paritytech/polkadot-sdk | |
cd polkadot-sdk | |
echo "rev=$(git rev-parse --short HEAD | tr -d '\n')" >> "$GITHUB_OUTPUT" | |
# Install packages | |
- name: Install packages (Linux) | |
if: contains(matrix.platform.target, 'linux') | |
run: sudo apt-get install -y protobuf-compiler ${{ contains(matrix.platform.target, 'aarch64') && 'crossbuild-essential-arm64' || '' }} | |
- name: Install packages (macOS) | |
if: contains(matrix.platform.target, 'apple') | |
run: brew install protobuf | |
# Configure Rust toolchain | |
- name: Set Rust version | |
run: | | |
rustup default ${{ github.event.inputs.rust }} | |
rustup component add rust-src | |
rustup target add ${{ matrix.platform.target }} wasm32-unknown-unknown | |
# Build and package | |
- name: Build ${{ matrix.package }} | |
working-directory: polkadot-sdk | |
run: cargo b --profile=production -p ${{ matrix.package == 'polkadot-parachain' && 'polkadot-parachain-bin' || matrix.package }} -F fast-runtime --target ${{ matrix.platform.target }} | |
- name: Package polkadot | |
if: matrix.package == 'polkadot' | |
working-directory: polkadot-sdk/${{ env.path }} | |
run: | | |
${{ env.sha }} polkadot > polkadot.sha256 | |
${{ env.sha }} polkadot-execute-worker > polkadot-execute-worker.sha256 | |
${{ env.sha }} polkadot-prepare-worker > polkadot-prepare-worker.sha256 | |
tar -czf ${{ env.archive }} polkadot polkadot.sha256 polkadot-execute-worker polkadot-execute-worker.sha256 polkadot-prepare-worker polkadot-prepare-worker.sha256 | |
- name: Package polkadot-parachain | |
if: matrix.package == 'polkadot-parachain' | |
working-directory: polkadot-sdk/${{ env.path }} | |
run: | | |
${{ env.sha }} polkadot-parachain > polkadot-parachain.sha256 | |
tar -czf ${{ env.archive }} polkadot-parachain polkadot-parachain.sha256 | |
# Add package to workflow | |
- name: Upload archives | |
uses: actions/upload-artifact@v3 | |
with: | |
name: binaries | |
path: | | |
polkadot-sdk/${{ env.path }}/${{ env.archive }} | |
# Add package to release | |
- name: Release | |
uses: softprops/action-gh-release@v2 | |
with: | |
name: ${{ github.event.inputs.title }} | |
tag_name: ${{ github.event.inputs.release }} | |
body: "Release generated from release tag `${{ github.event.inputs.release }}` (commit: `${{ steps.clone.outputs.rev }}`) and using Rust `${{ github.event.inputs.rust }}`.\n\nPlease see https://github.com/paritytech/polkadot-sdk/releases/tag/${{ github.event.inputs.release }} for release notes." | |
files: | | |
polkadot-sdk/${{ env.path }}/${{ env.archive }} |