Release chainweb-node 40f49aa32ce9b7029d565f53dd1c46ee4c7cad68 from 40f49aa32ce9b7029d565f53dd1c46ee4c7cad68 #66
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 }} | |
UBUNTU_VERSION: ${{ steps.set-ghc-version.outputs.UBUNTU_VERSION }} | |
steps: | |
# if this plugin is bad we just override it | |
# - name: Bump version and push tag | |
# id: tag_version | |
# uses: mathieudutour/[email protected] | |
# 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 |