From 4bd4384a5e3419765f348183c803a77cb9af9995 Mon Sep 17 00:00:00 2001 From: Frank Bell Date: Thu, 20 Jun 2024 23:16:17 +0100 Subject: [PATCH] ci: add workflow --- .github/workflows/release.yml | 97 +++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..fd16cc5 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,97 @@ +name: release + +on: + workflow_dispatch: + inputs: + release: # e.g. ' v1.2.4' + description: Paseo release tag + required: true + rust: # e.g. '1.77.0' + description: Rust version + required: true + title: # e.g. 'Paseo Release 1.2.4' + description: Release title + required: true + +jobs: + build: + runs-on: ${{ matrix.platform.os }} + permissions: + contents: write + strategy: + matrix: + 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: "chain-spec-generator-${{ 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/paseo-network/runtimes + cd runtimes + 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 chain-spec-generator + working-directory: runtimes + run: cargo b --profile=production -p chain-spec-generator -F fast-runtime --target ${{ matrix.platform.target }} + - name: Package chain-spec-generator + working-directory: runtimes/${{ env.path }} + run: | + ${{ env.sha }} chain-spec-generator > chain-spec-generator.sha256 + tar -czf ${{ env.archive }} chain-spec-generator chain-spec-generator.sha256 + + # Add package to workflow + - name: Upload archives + uses: actions/upload-artifact@v3 + with: + name: binaries + path: | + runtimes/${{ 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/paseo-network/runtimes/releases/tag/${{ github.event.inputs.release }} for release notes." + files: | + runtimes/${{ env.path }}/${{ env.archive }}