Release chainweb-node from 14ca523147d62633a58813c12937861fd262e530 #59
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 - chainweb-node - binary release scripts | |
## Release automation for chainweb-node | |
# Designed to run systems in chainweb/binary-release | |
## Currently has manual version setting and creates draft releases; | |
# when we are confident in this process, it can auto-increment and publish non-drafts | |
# tbd: connect k8s firing mechanism, create and connect chainweb-node-docker update workflow | |
run-name: "Release chainweb-node ${{ inputs.release_sha }} from ${{ github.sha}}" | |
on: | |
workflow_dispatch: | |
inputs: | |
release_sha: | |
description: "hash of chainweb-node release, default to branch running this job" | |
type: string | |
required: false | |
new_tag: | |
description: "The X.Y.Z tag for the new version" | |
type: string | |
required: true | |
old_tag: | |
description: "The X.Y.Z of the old version" | |
type: string | |
required: true | |
# tag_default_bump: | |
# description: "Auto-bump release version id" | |
# type: choice | |
# options: | |
# - patch | |
# - minor | |
# - major | |
# - none | |
dry_run: | |
description: "dry run (debugging)" | |
type: boolean | |
default: false | |
jobs: | |
release_vars: | |
runs-on: ubuntu-latest | |
outputs: | |
RELEASE_SHA: ${{ steps.set-vars.outputs.RELEASE_SHA }} | |
SHORT_REVISION: ${{ steps.set-vars.outputs.SHORT_REVISION }} | |
VERSION_NEW: ${{ steps.set-vars.outputs.VERSION_NEW }} | |
VERSION_OLD: ${{ steps.set-vars.outputs.VERSION_OLD }} | |
IMAGE: ${{ steps.set-vars.outputs.IMAGE }} | |
GHC_VERSION: ${{ steps.set-ghc-version.outputs.GHC_VERSION }} | |
steps: | |
# if this plugin is bad we just override it | |
# - name: Bump version and push tag | |
# id: tag_version | |
# uses: mathieudutour/github-tag-action@v6.1 | |
# with: | |
# github_token: ${{ secrets.GITHUB_TOKEN }} | |
# default_bump: ${{ inputs.tag_default_bump }} | |
# tag_prefix: "" | |
# commit_sha: ${{ inputs.release_sha }} | |
- name: Set variables for release | |
id: set-vars | |
run: | | |
RELEASE_SHA=${{ github.sha }} | |
if [[ ! -z ${{ inputs.release_sha }} ]]; then | |
RELEASE_SHA=${{ inputs.release_sha }} | |
fi | |
echo "RELEASE_SHA=$RELEASE_SHA" >> $GITHUB_OUTPUT | |
SHORT_REVISION=$(echo $RELEASE_SHA | cut -c 1-7) | |
echo "SHORT_REVISION=$SHORT_REVISION" >> $GITHUB_OUTPUT | |
# echo "VERSION_NEW=${{ steps.tag_version.outputs.new_tag }}" >> $GITHUB_OUTPUT | |
# echo "VERSION_OLD=${{ steps.tag_version.outputs.old_tag }}" >> $GITHUB_OUTPUT | |
echo "VERSION_NEW=${{ inputs.new_tag }}" >> $GITHUB_OUTPUT | |
echo "VERSION_OLD=${{ inputs.old_tag }}" >> $GITHUB_OUTPUT | |
echo "IMAGE=ghcr.io/kadena-io/chainweb-node:sha-$SHORT_REVISION-frozen" >> $GITHUB_OUTPUT | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ steps.set-vars.outputs.RELEASE_SHA }} | |
sparse-checkout: | | |
.github/workflows/applications.yml | |
- name: Get ghc version | |
id: set-ghc-version | |
run: | | |
VERSION=$(grep -Po '(?<="ghc": \[")(\d\.\d\.\d)' .github/workflows/applications.yml | head -1) | |
if [[ -z $VERSION ]]; then | |
echo "Unable to get version from chainweb node build" | |
exit 1 | |
fi | |
echo "GHC_VERSION=$VERSION" >> $GITHUB_OUTPUT | |
chainweb-node-dockerhub: | |
uses: kadena-io/chainweb-node-docker/.github/workflows/dockerhub_release.yml@master | |
needs: release_vars | |
with: | |
SHORT_SHA: ${{ needs.release_vars.outputs.SHORT_REVISION }} | |
VERSION_NEW: ${{ needs.release_vars.outputs.VERSION_NEW }} | |
GHC_VERSION: ${{ needs.release_vars.outputs.GHC_VERSION }} | |
secrets: inherit | |
release_repo: | |
needs: | |
- release_vars | |
- chainweb-node-dockerhub | |
runs-on: ubuntu-latest | |
env: | |
IMAGE: ${{ needs.release_vars.outputs.IMAGE }} | |
SHORT_REVISION: ${{ needs.release_vars.outputs.SHORT_REVISION }} | |
VERSION_NEW: ${{ needs.release_vars.outputs.VERSION_NEW }} | |
VERSION_OLD: ${{ needs.release_vars.outputs.VERSION_OLD }} | |
RELEASE_SHA: ${{ needs.release_vars.outputs.RELEASE_SHA }} | |
GHC_VERSION: ${{ needs.release_vars.outputs.GHC_VERSION }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
ref: ${{ env.RELEASE_SHA }} | |
sparse-checkout: 'CHANGELOG.md' | |
- name: tag git sha with release version | |
run: | | |
git tag ${{ env.VERSION_NEW }} ${{ env.RELEASE_SHA }} | |
git push --tags | |
- name: Login to GHCR | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: retag ghcr docker images | |
continue-on-error: false | |
run: | | |
docker pull $IMAGE | |
docker run --rm $IMAGE --version | |
docker tag $IMAGE ghcr.io/kadena-io/chainweb-node/ubuntu:$VERSION_NEW | |
docker tag $IMAGE ghcr.io/kadena-io/chainweb-node/ubuntu:latest | |
docker tag $IMAGE ghcr.io/kadena-io/chainweb-node:latest | |
docker image ls | |
docker image push --all-tags ghcr.io/kadena-io/chainweb-node/ubuntu | |
docker image push --all-tags ghcr.io/kadena-io/chainweb-node | |
digest1=$(docker inspect $IMAGE --format '{{ .RepoDigests }}') | |
digest2=$(docker inspect ghcr.io/kadena-io/chainweb-node/ubuntu:$VERSION_NEW --format '{{ .RepoDigests }}') | |
digest3=$(docker inspect ghcr.io/kadena-io/chainweb-node/ubuntu:latest --format '{{ .RepoDigests }}') | |
if [[ "$digest1" != "$digest2" || "$digest2" != "$digest3" ]]; then | |
echo "GHCR_DIGEST=GHCR digests do not compare correctly" >> $GITHUB_ENV | |
exit 1 | |
fi | |
echo "GHCR_DIGEST=$digest2" >> $GITHUB_ENV | |
- name: run release script to generate images | |
id: repack-binaries | |
run: | | |
GHC_VER=${{ env.GHC_VERSION }} | |
UBUNTU_20_TAR=chainweb.true.$GHC_VER.ubuntu-20.04.$SHORT_REVISION.tar.gz | |
UBUNTU_22_TAR=chainweb.true.$GHC_VER.ubuntu-22.04.$SHORT_REVISION.tar.gz | |
UBUNTU_20_NODE=chainweb-$VERSION_NEW.ghc-$GHC_VER.ubuntu-20.04.$SHORT_REVISION.tar.gz | |
UBUNTU_22_NODE=chainweb-$VERSION_NEW.ghc-$GHC_VER.ubuntu-22.04.$SHORT_REVISION.tar.gz | |
echo $UBUNTU_22_TAR | |
echo $UBUNTU_22_NODE | |
curl "s3.us-east-1.amazonaws.com/kadena-cabal-cache/chainweb-node/$UBUNTU_20_TAR" -o "./$UBUNTU_20_TAR" | |
curl "s3.us-east-1.amazonaws.com/kadena-cabal-cache/chainweb-node/$UBUNTU_22_TAR" -o "./$UBUNTU_22_TAR" | |
tar xvfz "$UBUNTU_20_TAR" chainweb | |
mv chainweb/{LICENSE,README.md,chainweb-node,compact} . | |
tar cvfz "$UBUNTU_20_NODE" LICENSE README.md chainweb-node compact | |
rm -fr chainweb-node chainweb | |
tar xvfz "$UBUNTU_22_TAR" chainweb | |
mv chainweb/{LICENSE,README.md,chainweb-node,compact} . | |
tar cvfz "$UBUNTU_22_NODE" LICENSE README.md chainweb-node compact | |
rm -fr chainweb-node chainweb | |
echo "UBUNTU_20_SHA=$(shasum -a 256 $UBUNTU_20_NODE)" >> $GITHUB_ENV | |
echo "UBUNTU_22_SHA=$(shasum -a 256 $UBUNTU_22_NODE)" >> $GITHUB_ENV | |
shasum -a 256 "$UBUNTU_22_NODE" | |
echo "UBUNTU_20_NODE=$UBUNTU_20_NODE" >> $GITHUB_ENV | |
echo "UBUNTU_22_NODE=$UBUNTU_22_NODE" >> $GITHUB_ENV | |
#- name: generate release message | |
# could generate this from the changelog.md, though changelog.md could be itself generated... | |
#oom_score_adj: | |
- name: Generate release message | |
continue-on-error: true | |
env: | |
UBUNTU_22_NODE: ${{ env.UBUNTU_22_NODE }} | |
UBUNTU_20_NODE: ${{ env.UBUNTU_20_NODE }} | |
GHCR_DIGEST: ${{ env.GHCR_DIGEST }} | |
run: | | |
pwd | |
ls | |
sed "/$VERSION_OLD\s/,\$d" CHANGELOG.md | sed "/$VERSION_NEW (20/d" | sed '/\sChangelog/d' | tee CHANGELOG.md | |
echo 'Official release: https://github.com/kadena-io/chainweb-node/releases/tag/${{ env.VERSION_NEW }} | |
For full details refer to the [Changelog](https://github.com/kadena-io/chainweb-node/blob/master/CHANGELOG.md) | |
### Container Images: | |
* [End-user image](https://hub.docker.com/r/kadena/chainweb-node) | |
Image Digest: `${{ needs.chainweb-node-dockerhub.outputs.DOCKERHUB_SHA }}` | |
```sh | |
docker pull kadena/chainweb-node:${{ env.VERSION_NEW }} | |
``` | |
* [Binary-only Ubuntu-20.04 ](ghcr.io/kadena-io/chainweb-node/ubuntu:${{ env.VERSION_NEW }}) | |
Image Digest: `${{ env.GHCR_DIGEST }}` | |
```sh | |
docker pull ghcr.io/kadena-io/chainweb-node/ubuntu:${{ env.VERSION_NEW }} | |
``` | |
### Ubuntu Binaries: | |
SHA256 Hashes | |
``` | |
${{ env.UBUNTU_22_SHA }} | |
${{ env.UBUNTU_20_SHA }} | |
``` | |
The following dependencies must be installed on the system: | |
* ubuntu-22.04: | |
```sh | |
apt-get install ca-certificates libgmp10 libssl3 libsnappy1v5 zlib1g liblz4-1 libbz2-1.0 libgflags2.2 zstd | |
``` | |
* ubuntu-20.04: | |
```sh | |
apt-get install ca-certificates libgmp10 libssl1.1 libsnappy1v5 zlib1g liblz4-1 libbz2-1.0 libgflags2.2 zstd | |
``` | |
' >> CHANGELOG.md | |
cat CHANGELOG.md | |
- name: Release | |
uses: ncipollo/release-action@v1 | |
#if: startsWith(github.ref, 'refs/tags/') | |
with: | |
bodyFile: CHANGELOG.md | |
artifacts: "${{ env.UBUNTU_20_NODE }},${{ env.UBUNTU_22_NODE }}" | |
token: ${{ github.token }} | |
tag: ${{ env.VERSION_NEW }} | |
commit: ${{ env.RELEASE_SHA }} | |
name: ${{ env.VERSION_NEW }} | |
omitBodyDuringUpdate: true | |
skipIfReleaseExists: true | |
draft: true | |
- name: Deploy to mainnet api.chainweb.com | |
run: | | |
echo "This will be a remote trigger" >> $GITHUB_STEP_SUMMARY |