name: Release - Publish draft on: push: tags: # Catches v1.2.3 and v1.2.3-rc1 - v[0-9]+.[0-9]+.[0-9]+* jobs: get-rust-versions: runs-on: ubuntu-latest container: image: paritytech/ci-linux:production outputs: rustc-stable: ${{ steps.get-rust-versions.outputs.stable }} rustc-nightly: ${{ steps.get-rust-versions.outputs.nightly }} steps: - id: get-rust-versions run: | echo "stable=$(rustc +stable --version)" >> $GITHUB_OUTPUT echo "nightly=$(rustc +nightly --version)" >> $GITHUB_OUTPUT build-runtimes: runs-on: ubuntu-latest strategy: matrix: runtime: ["polkadot", "kusama", "westend", "rococo"] steps: - name: Checkout sources uses: actions/checkout@v3 - name: Cache target dir uses: actions/cache@v3 with: path: "${{ github.workspace }}/runtime/${{ matrix.runtime }}/target" key: srtool-target-${{ matrix.runtime }}-${{ github.sha }} restore-keys: | srtool-target-${{ matrix.runtime }}- srtool-target- - name: Build ${{ matrix.runtime }} runtime id: srtool_build uses: chevdor/srtool-actions@v0.6.0 with: image: paritytech/srtool chain: ${{ matrix.runtime }} - name: Store srtool digest to disk run: | echo '${{ steps.srtool_build.outputs.json }}' | jq > ${{ matrix.runtime }}_srtool_output.json - name: Upload ${{ matrix.runtime }} srtool json uses: actions/upload-artifact@v3 with: name: ${{ matrix.runtime }}-srtool-json path: ${{ matrix.runtime }}_srtool_output.json - name: Upload ${{ matrix.runtime }} runtime uses: actions/upload-artifact@v3 with: name: ${{ matrix.runtime }}-runtime path: | ${{ steps.srtool_build.outputs.wasm_compressed }} publish-draft-release: 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 sources uses: actions/checkout@v3 with: fetch-depth: 0 path: polkadot - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: 3.0.0 - name: Download srtool json output uses: actions/download-artifact@v3 - name: Prepare tooling run: | cd polkadot/scripts/ci/changelog gem install bundler changelogerator:0.9.1 bundle install changelogerator --help URL=https://github.com/chevdor/tera-cli/releases/download/v0.2.1/tera-cli_linux_amd64.deb wget $URL -O tera.deb sudo dpkg -i tera.deb tera --version - name: Generate release notes env: RUSTC_STABLE: ${{ needs.get-rust-versions.outputs.rustc-stable }} RUSTC_NIGHTLY: ${{ needs.get-rust-versions.outputs.rustc-nightly }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NO_CACHE: 1 DEBUG: 1 ROCOCO_DIGEST: ${{ github.workspace}}/rococo-srtool-json/rococo_srtool_output.json WESTEND_DIGEST: ${{ github.workspace}}/westend-srtool-json/westend_srtool_output.json KUSAMA_DIGEST: ${{ github.workspace}}/kusama-srtool-json/kusama_srtool_output.json POLKADOT_DIGEST: ${{ github.workspace}}/polkadot-srtool-json/polkadot_srtool_output.json PRE_RELEASE: ${{ github.event.inputs.pre_release }} run: | find ${{env.GITHUB_WORKSPACE}} -type f -name "*_srtool_output.json" ls -al $ROCOCO_DIGEST ls -al $WESTEND_DIGEST ls -al $KUSAMA_DIGEST ls -al $POLKADOT_DIGEST cd polkadot/scripts/ci/changelog ./bin/changelog ${GITHUB_REF} ls -al release-notes.md ls -al context.json - name: Archive artifact context.json uses: actions/upload-artifact@v3 with: name: release-notes-context path: | polkadot/scripts/ci/changelog/context.json **/*_srtool_output.json - name: Create draft release id: create-release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref }} release_name: Polkadot ${{ github.ref }} body_path: ./polkadot/scripts/ci/changelog/release-notes.md draft: true publish-runtimes: runs-on: ubuntu-latest needs: ["publish-draft-release"] env: RUNTIME_DIR: runtime strategy: matrix: runtime: ["polkadot", "kusama", "westend", "rococo"] steps: - name: Checkout sources uses: actions/checkout@v3 - name: Download artifacts uses: actions/download-artifact@v3 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: 3.0.0 - name: Get runtime version id: get-runtime-ver run: | echo "require './scripts/ci/github/lib.rb'" > script.rb echo "puts get_runtime(runtime: \"${{ matrix.runtime }}\", runtime_dir: \"$RUNTIME_DIR\")" >> script.rb echo "Current folder: $PWD" ls "$RUNTIME_DIR/${{ matrix.runtime }}" runtime_ver=$(ruby script.rb) echo "Found version: >$runtime_ver<" echo "runtime_ver=$runtime_ver" >> $GITHUB_OUTPUT - name: Upload compressed ${{ matrix.runtime }} wasm uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.publish-draft-release.outputs.asset_upload_url }} asset_path: "${{ matrix.runtime }}-runtime/${{ matrix.runtime }}_runtime.compact.compressed.wasm" asset_name: ${{ matrix.runtime }}_runtime-v${{ steps.get-runtime-ver.outputs.runtime_ver }}.compact.compressed.wasm asset_content_type: application/wasm post_to_matrix: runs-on: ubuntu-latest needs: publish-draft-release steps: - name: Internal polkadot channel uses: s3krit/matrix-message-action@v0.0.3 with: room_id: ${{ secrets.INTERNAL_POLKADOT_MATRIX_ROOM_ID }} access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }} message: "**New version of polkadot tagged**: ${{ github.ref }}
Draft release created: ${{ needs.publish-draft-release.outputs.release_url }}" server: "matrix.parity.io"