Skip to content

feat(cntools): implement wallet key encryption and decryption #353

feat(cntools): implement wallet key encryption and decryption

feat(cntools): implement wallet key encryption and decryption #353

Workflow file for this run

name: Docker Image
on:
workflow_dispatch:
inputs:
guild_deploy_branch:
description: Branch to deploy
required: false
default: master
testing:
description: Testing workflow
required: false
type: boolean
default: true
node_implementation:
description: Node implementation
required: false
type: choice
default: cnode
options:
- cnode
- dingo
- amaru
node_network:
description: Deployment network
required: false
type: choice
default: mainnet
options:
- mainnet
- preprod
- preview
- guild
push:
paths:
- 'scripts/common-helper-scripts/**'
- 'scripts/cnode-helper-scripts/**'
- 'scripts/dingo-helper-scripts/**'
- 'scripts/amaru-helper-scripts/**'
- 'files/node-implementations/**'
- 'files/configs/**'
- 'files/docker/node/**'
jobs:
set_environment_vars:
runs-on: ubuntu-latest
outputs:
guild_deploy_branch: ${{ steps.set_guild_deploy_branch.outputs.guild_deploy_branch }}
g_account: ${{ steps.set_g_account.outputs.g_account }}
testing: ${{ steps.set_testing.outputs.testing }}
short_sha: ${{ steps.set_short_sha.outputs.short_sha }}
node_implementation: ${{ steps.set_node_identity.outputs.node_implementation }}
node_network: ${{ steps.set_node_identity.outputs.node_network }}
node_version: ${{ steps.set_node_version.outputs.node_version }}
steps:
- name: Set branch name
id: vars
run: echo "branch=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
- name: Set GUILD_DEPLOY_BRANCH
id: set_guild_deploy_branch
run: |
echo "guild_deploy_branch=${{ (github.event_name == 'push' && steps.vars.outputs.branch) || github.event.inputs.guild_deploy_branch }}" >> $GITHUB_OUTPUT
- name: Set G_ACCOUNT
id: set_g_account
run: |
echo "g_account=${GITHUB_REPOSITORY_OWNER,,}" >> $GITHUB_OUTPUT
- name: Set TESTING
id: set_testing
run: |
if [[ "${{ github.event_name }}" == "push" ]]; then
if [[ "${{ steps.vars.outputs.branch }}" == "master" ]]; then
testing=false
else
testing=true
fi
else
testing="${{ github.event.inputs.testing }}"
fi
echo "testing=${testing}" >> "$GITHUB_OUTPUT"
- name: Set node identity
id: set_node_identity
run: |
node_implementation="${{ (github.event_name == 'push' && 'cnode') || github.event.inputs.node_implementation }}"
node_network="${{ (github.event_name == 'push' && 'mainnet') || github.event.inputs.node_network }}"
case "${node_implementation}:${node_network}" in
cnode:mainnet|cnode:guild|cnode:preprod|cnode:preview|dingo:preprod|dingo:preview|amaru:preprod|amaru:preview) ;;
*)
echo "Unsupported Docker deployment: ${node_implementation}:${node_network}" >&2
exit 1
;;
esac
echo "node_implementation=${node_implementation}" >> "$GITHUB_OUTPUT"
echo "node_network=${node_network}" >> "$GITHUB_OUTPUT"
- uses: actions/checkout@v3
with:
ref: ${{ steps.set_guild_deploy_branch.outputs.guild_deploy_branch }}
- name: Get short SHA
id: set_short_sha
run: |
echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Get node version
id: set_node_version
run: |
implementation="${{ steps.set_node_identity.outputs.node_implementation }}"
version="$(jq -er '.version' "files/node-implementations/${implementation}/release.json")"
echo "node_version=${version}" >> "$GITHUB_OUTPUT"
build_production:
needs: set_environment_vars
if: >-
needs.set_environment_vars.outputs.testing == 'false' &&
needs.set_environment_vars.outputs.guild_deploy_branch == 'master' &&
needs.set_environment_vars.outputs.node_implementation == 'cnode' &&
needs.set_environment_vars.outputs.node_network == 'mainnet'
env:
REGISTRY: docker.io
runs-on: ubuntu-latest
steps:
- name: Set IMAGE_TAGS
run: |
GUILD_DEPLOY_BRANCH=$(echo "${{ needs.set_environment_vars.outputs.guild_deploy_branch }}" | sed 's/\//_/g')
REGISTRY=${{ env.REGISTRY }}
REPO=${{ secrets.DOCKER_USER }}
REPO=${REPO,,}
IMAGE_NAME="$REGISTRY/$REPO/cardano-node"
NODE_VERSION=${{ needs.set_environment_vars.outputs.node_version }}
IMAGE_TAGS="$IMAGE_NAME:latest,$IMAGE_NAME:$NODE_VERSION"
echo "IMAGE_NAME=$IMAGE_NAME" >> $GITHUB_ENV
echo "IMAGE_TAGS=$IMAGE_TAGS" >> $GITHUB_ENV
- uses: actions/checkout@v3
with:
ref: ${{ needs.set_environment_vars.outputs.guild_deploy_branch }}
- name: Login to Dockerhub
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY}}
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and Push production container image
uses: docker/build-push-action@v5
with:
context: .
file: files/docker/node/dockerfile_bin
push: true
tags: ${{ env.IMAGE_TAGS }}
build-args: |
G_ACCOUNT=${{ needs.set_environment_vars.outputs.g_account }}
GUILD_DEPLOY_BRANCH=${{ needs.set_environment_vars.outputs.guild_deploy_branch }}
NODE_IMPLEMENTATION=${{ needs.set_environment_vars.outputs.node_implementation }}
NODE_NETWORK=${{ needs.set_environment_vars.outputs.node_network }}
- name: Add summary details
if: always()
run: |
echo "## Summary Details" >> $GITHUB_STEP_SUMMARY
echo "* Image Name: ${{ env.IMAGE_NAME }}" >> $GITHUB_STEP_SUMMARY
echo "* Image Tags: ${{ env.IMAGE_TAGS }}" >> $GITHUB_STEP_SUMMARY
echo "* G_ACCOUNT: ${{ needs.set_environment_vars.outputs.g_account }}" >> $GITHUB_STEP_SUMMARY
echo "* GUILD_DEPLOY_BRANCH: ${{ needs.set_environment_vars.outputs.guild_deploy_branch }}" >> $GITHUB_STEP_SUMMARY
echo "* NODE_IMPLEMENTATION: ${{ needs.set_environment_vars.outputs.node_implementation }}" >> $GITHUB_STEP_SUMMARY
echo "* NODE_NETWORK: ${{ needs.set_environment_vars.outputs.node_network }}" >> $GITHUB_STEP_SUMMARY
echo "* REGISTRY: ${{ env.REGISTRY }}" >> $GITHUB_STEP_SUMMARY
echo "* REGISTRY_USER: ${{ secrets.DOCKER_USER }}" >> $GITHUB_STEP_SUMMARY
build_testing:
needs: set_environment_vars
if: >-
needs.set_environment_vars.outputs.testing == 'true' ||
needs.set_environment_vars.outputs.guild_deploy_branch != 'master' ||
needs.set_environment_vars.outputs.node_implementation != 'cnode' ||
needs.set_environment_vars.outputs.node_network != 'mainnet'
env:
REGISTRY: ghcr.io
runs-on: ubuntu-latest
steps:
- name: Set IMAGE_TAGS
run: |
GUILD_DEPLOY_BRANCH=$(echo "${{ needs.set_environment_vars.outputs.guild_deploy_branch }}" | sed 's/\//_/g')
REGISTRY=${{ env.REGISTRY }}
REPO=${{ needs.set_environment_vars.outputs.g_account }}
NODE_IMPLEMENTATION=${{ needs.set_environment_vars.outputs.node_implementation }}
NODE_NETWORK=${{ needs.set_environment_vars.outputs.node_network }}
if [[ "$NODE_IMPLEMENTATION" == "cnode" ]]; then
IMAGE_COMPONENT="cardano-node"
else
IMAGE_COMPONENT="${NODE_IMPLEMENTATION}-node"
fi
IMAGE_NAME="$REGISTRY/$REPO/$IMAGE_COMPONENT"
NODE_VERSION=${{ needs.set_environment_vars.outputs.node_version }}
SHA=${{ needs.set_environment_vars.outputs.short_sha }}
IDENTITY_SUFFIX=""
if [[ "$NODE_IMPLEMENTATION:$NODE_NETWORK" != "cnode:mainnet" ]]; then
IDENTITY_SUFFIX="-$NODE_NETWORK"
fi
IMAGE_TAGS="$IMAGE_NAME:test$IDENTITY_SUFFIX,$IMAGE_NAME:$NODE_VERSION$IDENTITY_SUFFIX,$IMAGE_NAME:$GUILD_DEPLOY_BRANCH-$SHA$IDENTITY_SUFFIX"
echo "IMAGE_NAME=$IMAGE_NAME" >> $GITHUB_ENV
echo "IMAGE_TAGS=$IMAGE_TAGS" >> $GITHUB_ENV
- uses: actions/checkout@v3
with:
ref: ${{ needs.set_environment_vars.outputs.guild_deploy_branch }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY}}
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and Push testing container image
uses: docker/build-push-action@v5
with:
context: .
file: files/docker/node/dockerfile_bin
push: true
tags: ${{ env.IMAGE_TAGS }}
build-args: |
G_ACCOUNT=${{ needs.set_environment_vars.outputs.g_account }}
GUILD_DEPLOY_BRANCH=${{ needs.set_environment_vars.outputs.guild_deploy_branch }}
NODE_IMPLEMENTATION=${{ needs.set_environment_vars.outputs.node_implementation }}
NODE_NETWORK=${{ needs.set_environment_vars.outputs.node_network }}
- name: Add summary details
if: always()
run: |
echo "## Summary Details" >> $GITHUB_STEP_SUMMARY
echo "* Image Name: ${{ env.IMAGE_NAME }}" >> $GITHUB_STEP_SUMMARY
echo "* Image Tags: ${{ env.IMAGE_TAGS }}" >> $GITHUB_STEP_SUMMARY
echo "* G_ACCOUNT: ${{ needs.set_environment_vars.outputs.g_account }}" >> $GITHUB_STEP_SUMMARY
echo "* GUILD_DEPLOY_BRANCH: ${{ needs.set_environment_vars.outputs.guild_deploy_branch }}" >> $GITHUB_STEP_SUMMARY
echo "* NODE_IMPLEMENTATION: ${{ needs.set_environment_vars.outputs.node_implementation }}" >> $GITHUB_STEP_SUMMARY
echo "* NODE_NETWORK: ${{ needs.set_environment_vars.outputs.node_network }}" >> $GITHUB_STEP_SUMMARY
echo "* REGISTRY: ${{ env.REGISTRY }}" >> $GITHUB_STEP_SUMMARY
echo "* REGISTRY_USER: ${{ github.repository_owner }}" >> $GITHUB_STEP_SUMMARY