Create release draft #294
Workflow file for this run
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: Create release draft | |
on: | |
workflow_dispatch: | |
inputs: | |
parachain_client: | |
type: boolean | |
description: parachain-client | |
required: true | |
default: true | |
parachain_runtime: | |
type: boolean | |
description: parachain-runtime | |
required: true | |
default: true | |
identity_worker: | |
type: boolean | |
description: identity-worker | |
required: true | |
default: true | |
bitacross_worker: | |
type: boolean | |
description: bitacross-worker | |
required: true | |
default: true | |
release_tag: | |
description: an existing tag for creating release (e.g. v1.2.0) | |
required: true | |
diff_tag: | |
description: an existing tag to run diff against (e.g. v1.1.0) | |
default: "" | |
required: false | |
genesis_release: | |
type: choice | |
description: If any of the genesis artefacts should be released alongside | |
options: | |
- none | |
- rococo | |
- paseo | |
- litentry | |
env: | |
RELEASE_TAG: ${{ github.event.inputs.release_tag }} | |
DIFF_TAG: ${{ github.event.inputs.diff_tag }} | |
GENESIS_RELEASE: ${{ github.event.inputs.genesis_release }} | |
DOCKER_BUILDKIT: 1 | |
REF_VERSION: ${{ github.head_ref || github.ref_name }} | |
jobs: | |
set-release-type: | |
runs-on: ubuntu-latest | |
steps: | |
- name: set release_type | |
id: vars | |
run: | | |
# use something similar to mask to store the release type | |
t=0000 | |
[ "${{ github.event.inputs.parachain_client }}" = "true" ] && t="${t:0:0}1${t:1}" | |
[ "${{ github.event.inputs.parachain_runtime }}" = "true" ] && t="${t:0:1}1${t:2}" | |
[ "${{ github.event.inputs.identity_worker }}" = "true" ] && t="${t:0:2}1${t:3}" | |
[ "${{ github.event.inputs.bitacross_worker }}" = "true" ] && t="${t:0:3}1${t:4}" | |
if [ $t = "0000"]; then | |
echo "::error::Please select at least one release type." | |
exit 1 | |
fi | |
echo "::group::print release type" | |
echo "release_type: $t" | |
echo "::endgroup::" | |
echo "release_type=$t" >> $GITHUB_OUTPUT | |
outputs: | |
release_type: ${{ steps.vars.outputs.release_type }} | |
build-parachain-client: | |
if: ${{ github.event.inputs.parachain_client == 'true' }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout codes on ${{ env.RELEASE_TAG }} | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ env.RELEASE_TAG }} | |
fetch-depth: 0 | |
- name: Free up disk space | |
if: startsWith(runner.name, 'GitHub Actions') | |
uses: ./.github/actions/disk-cleanup | |
- name: Build docker image | |
run: | | |
echo "=============================" | |
docker pull litentry/litentry-parachain:v0.9.20-04 | |
docker images | |
- name: Generate genesis artefacts if need | |
if: github.event.inputs.genesis_release != 'none' | |
run: | | |
docker run --rm litentry/litentry-parachain:${{ env.RELEASE_TAG }} export-genesis-state --chain=${{ env.GENESIS_RELEASE }} > ${{ env.GENESIS_RELEASE }}-genesis-state | |
docker run --rm litentry/litentry-parachain:${{ env.RELEASE_TAG }} export-genesis-wasm --chain=${{ env.GENESIS_RELEASE }} > ${{ env.GENESIS_RELEASE }}-genesis-wasm | |
- name: Copy client binary to disk | |
run: | | |
docker cp $(docker create --rm litentry/litentry-parachain:${{ env.RELEASE_TAG }}):/usr/local/bin/litentry-collator . | |
- name: Save docker image | |
run: | | |
docker save litentry/litentry-parachain:${{ env.RELEASE_TAG }} | gzip > litentry-parachain-dev.tar.gz | |
- name: Upload the client binary | |
uses: actions/upload-artifact@v4 | |
with: | |
name: litentry-collator | |
if-no-files-found: ignore | |
path: | | |
litentry-collator | |
litentry-parachain-dev.tar.gz | |
${{ env.GENESIS_RELEASE }}-genesis-state | |
${{ env.GENESIS_RELEASE }}-genesis-wasm | |
## create the release draft ## | |
create-release-draft: | |
runs-on: ubuntu-latest | |
# see https://github.com/actions/runner/issues/491 | |
# seems to be the only way to achieve this | |
needs: | |
- set-release-type | |
- build-parachain-client | |
if: | | |
!failure() && | |
(success('build-parachain-client')) | |
steps: | |
- name: Checkout codes on ${{ env.RELEASE_TAG }} | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ env.RELEASE_TAG }} | |
fetch-depth: 0 | |
- name: Download all artefacts | |
uses: actions/download-artifact@v4 | |
- run: | | |
ls | |
- name: Generate release notes | |
run: | | |
./parachain/scripts/generate-release-notes.sh ${{ github.workspace }}/.github/release_notes.md ${{ needs.set-release-type.outputs.release_type }} ${{ env.DIFF_TAG }} | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Create release draft | |
id: create-release-draft | |
uses: softprops/action-gh-release@v2 | |
with: | |
tag_name: ${{ env.RELEASE_TAG }} | |
name: Release ${{ env.RELEASE_TAG }} | |
body_path: ${{ github.workspace }}/.github/release_notes.md | |
draft: true | |
files: | | |
litentry-collator/* |