Skip to content

Release chainweb-node 6bfc02a3f1ed971c1866de4912bcb616641012fb from f54fbeba559b1e062f2835b405c7685946b9cbb3 #64

Release chainweb-node 6bfc02a3f1ed971c1866de4912bcb616641012fb from f54fbeba559b1e062f2835b405c7685946b9cbb3

Release chainweb-node 6bfc02a3f1ed971c1866de4912bcb616641012fb from f54fbeba559b1e062f2835b405c7685946b9cbb3 #64

Workflow file for this run

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 }}
UBUNTU_VERSION: ${{ steps.set-ghc-version.outputs.OS_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_GHC=$(grep -Po '(?<="ghc": \[")(\d\.\d\.\d)' .github/workflows/applications.yml | head -1)
if [[ -z $VERSION_GHC ]]; then
echo "Unable to get GHC version from chainweb node build"
exit 1
fi
echo "GHC_VERSION=$VERSION_GHC" >> $GITHUB_OUTPUT
VERSION_OS=$(grep -Po '(?<="os": \[")(ubuntu-\d+\.\d+)' .github/workflows/applications.yml | head -1)
if [[ -z $VERSION_OS ]]; then
echo "Unable to get Ubuntu version from chainweb node build"
exit 1
fi
echo "UBUNTU_VERSION=$VERSION_OS" >> $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 }}
UBUNTU_VERSION: ${{ needs.release_vars.outputs.UBUNTU_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: |
UBUNTU_TAR=chainweb.true.$GHC_VERSION.$UBUNTU_VERSION.$SHORT_REVISION.tar.gz
UBUNTU_NODE=chainweb-$VERSION_NEW.ghc-$GHC_VERSION.$UBUNTU_VERSION.$SHORT_REVISION.tar.gz
echo $UBUNTU_TAR
echo $UBUNTU_NODE
curl "s3.us-east-1.amazonaws.com/kadena-cabal-cache/chainweb-node/$UBUNTU_TAR" -o "./$UBUNTU_TAR"
tar xvfz "$UBUNTU_TAR" chainweb
mv chainweb/{LICENSE,README.md,chainweb-node,compact} .
tar cvfz "$UBUNTU_NODE" LICENSE README.md chainweb-node compact
rm -fr chainweb-node chainweb
echo "UBUNTU_SHA=$(shasum -a 256 $UBUNTU_NODE)" >> $GITHUB_ENV
shasum -a 256 "$UBUNTU_NODE"
echo "UBUNTU_NODE=$UBUNTU_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_NODE: ${{ env.UBUNTU_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_VERSION ](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
```
$UBUNTU_VERSION: ${{ env.UBUNTU_SHA }}
```
The following dependencies must be installed on the system:
* $UBUNTU_VERSION:
```sh
apt-get install ca-certificates libgmp10 libssl3 libsnappy1v5 zlib1g liblz4-1 libbz2-1.0 libgflags2.2 zstd locales
```
' >> 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_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