From 7b75f6c6d4365ea5670b015cfe7910fe412ad3f2 Mon Sep 17 00:00:00 2001 From: Thiago Silva Date: Mon, 16 May 2022 18:38:58 -0300 Subject: [PATCH 1/3] Splits the deploy-docker.sh into build and deploy parts --- ci/actions/linux/deploy-docker.sh | 64 ---------------- ci/actions/linux/docker-build.sh | 8 ++ ci/actions/linux/docker-deploy.sh | 8 ++ ci/actions/linux/docker-impl/docker-common.sh | 75 +++++++++++++++++++ 4 files changed, 91 insertions(+), 64 deletions(-) delete mode 100755 ci/actions/linux/deploy-docker.sh create mode 100644 ci/actions/linux/docker-build.sh create mode 100644 ci/actions/linux/docker-deploy.sh create mode 100755 ci/actions/linux/docker-impl/docker-common.sh diff --git a/ci/actions/linux/deploy-docker.sh b/ci/actions/linux/deploy-docker.sh deleted file mode 100755 index a49f0b9b..00000000 --- a/ci/actions/linux/deploy-docker.sh +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/bash - -set -e - -scripts="$PWD/ci" -TRAVIS_BRANCH=$(git branch | cut -f2 -d' ') -tags=() -if [ -n "$TRAVIS_TAG" ]; then - tags+=("$TRAVIS_TAG") -elif [ -n "$TRAVIS_BRANCH" ]; then - TRAVIS_TAG=$TRAVIS_BRANCH - tags+=("$TRAVIS_BRANCH") -fi -if [[ "$GITHUB_WORKFLOW" = "Live" ]]; then - echo "Live" - network_tag_suffix='' - network="live" -elif [[ "$GITHUB_WORKFLOW" = "Beta" ]]; then - echo "Beta" - network_tag_suffix="-beta" - network="beta" -elif [[ "$GITHUB_WORKFLOW" = "Test" ]]; then - echo "Test" - network_tag_suffix="-test" - network="test" -fi -if [[ "$GITHUB_WORKFLOW" != "Develop" ]]; then - docker_image_name="nanocurrency/nano${network_tag_suffix}" - ghcr_image_name="ghcr.io/${GITHUB_REPOSITORY}/nano${network_tag_suffix}" - "$scripts"/build-docker-image.sh docker/node/Dockerfile "$docker_image_name" --build-arg NETWORK="$network" --build-arg CI_BUILD=true --build-arg TRAVIS_TAG="$TRAVIS_TAG" - for tag in "${tags[@]}"; do - # Sanitize docker tag - # https://docs.docker.com/engine/reference/commandline/tag/ - tag="$(printf '%s' "$tag" | tr -c '[a-z][A-Z][0-9]_.-' -)" - if [ "$tag" != "latest" ]; then - docker tag "$docker_image_name" "${docker_image_name}:$tag" - docker tag "$ghcr_image_name" "${ghcr_image_name}:$tag" - fi - done -fi - -if [ -n "$DOCKER_PASSWORD" ]; then - echo "$DOCKER_PASSWORD" | docker login -u nanoreleaseteam --password-stdin - if [[ "$GITHUB_WORKFLOW" = "Develop" ]]; then - "$scripts"/custom-timeout.sh 30 docker push "nanocurrency/nano-env:base" - "$scripts"/custom-timeout.sh 30 docker push "nanocurrency/nano-env:gcc" - "$scripts"/custom-timeout.sh 30 docker push "nanocurrency/nano-env:clang-6" - echo "Deployed nano-env" - exit 0 - else - if [[ "$GITHUB_WORKFLOW" = "Live" ]]; then - tags=$(docker images --format '{{.Repository}}:{{.Tag }}' | grep nanocurrency | grep -vE "env|ghcr.io|none|latest") - else - tags=$(docker images --format '{{.Repository}}:{{.Tag }}' | grep nanocurrency | grep -vE "env|ghcr.io|none") - fi - for a in $tags; do - "$scripts"/custom-timeout.sh 30 docker push "$a" - done - echo "$docker_image_name with tags ${tags//$'\n'/' '} deployed" - fi -else - echo "\$DOCKER_PASSWORD environment variable required" - exit 0 -fi diff --git a/ci/actions/linux/docker-build.sh b/ci/actions/linux/docker-build.sh new file mode 100644 index 00000000..43ab4b72 --- /dev/null +++ b/ci/actions/linux/docker-build.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -e +set -x + +source "$(dirname "$BASH_SOURCE")/docker-impl/docker-common.sh" + +docker_build diff --git a/ci/actions/linux/docker-deploy.sh b/ci/actions/linux/docker-deploy.sh new file mode 100644 index 00000000..6e405906 --- /dev/null +++ b/ci/actions/linux/docker-deploy.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -e +set -x + +source "$(dirname "$BASH_SOURCE")/docker-impl/docker-common.sh" + +docker_deploy diff --git a/ci/actions/linux/docker-impl/docker-common.sh b/ci/actions/linux/docker-impl/docker-common.sh new file mode 100755 index 00000000..0be32930 --- /dev/null +++ b/ci/actions/linux/docker-impl/docker-common.sh @@ -0,0 +1,75 @@ +#!/bin/bash + +set -e +set -a + +scripts="$PWD/ci" +TRAVIS_BRANCH=$(git branch | cut -f2 -d' ') +tags=() +if [ -n "$TRAVIS_TAG" ]; then + tags+=("$TRAVIS_TAG") +elif [ -n "$TRAVIS_BRANCH" ]; then + TRAVIS_TAG=$TRAVIS_BRANCH + tags+=("$TRAVIS_BRANCH") +fi +if [[ "$GITHUB_WORKFLOW" = "Live" ]]; then + echo "Live" + network_tag_suffix='' + network="live" +elif [[ "$GITHUB_WORKFLOW" = "Beta" ]]; then + echo "Beta" + network_tag_suffix="-beta" + network="beta" +elif [[ "$GITHUB_WORKFLOW" = "Test" ]]; then + echo "Test" + network_tag_suffix="-test" + network="test" +fi + +if [[ "$GITHUB_WORKFLOW" != "Develop" ]]; then + docker_image_name="nanocurrency/nano${network_tag_suffix}" +fi + +docker_build() +{ + if [[ "$GITHUB_WORKFLOW" != "Develop" ]]; then + ghcr_image_name="ghcr.io/${GITHUB_REPOSITORY}/nano${network_tag_suffix}" + "$scripts"/build-docker-image.sh docker/node/Dockerfile "$docker_image_name" --build-arg NETWORK="$network" --build-arg CI_BUILD=true --build-arg TRAVIS_TAG="$TRAVIS_TAG" + for tag in "${tags[@]}"; do + # Sanitize docker tag + # https://docs.docker.com/engine/reference/commandline/tag/ + tag="$(printf '%s' "$tag" | tr -c '[a-z][A-Z][0-9]_.-' -)" + if [ "$tag" != "latest" ]; then + docker tag "$docker_image_name" "${docker_image_name}:$tag" + docker tag "$ghcr_image_name" "${ghcr_image_name}:$tag" + fi + done + fi +} + +docker_deploy() +{ + if [ -n "$DOCKER_PASSWORD" ]; then + echo "$DOCKER_PASSWORD" | docker login -u nanoreleaseteam --password-stdin + if [[ "$GITHUB_WORKFLOW" = "Develop" ]]; then + "$scripts"/custom-timeout.sh 30 docker push "nanocurrency/nano-env:base" + "$scripts"/custom-timeout.sh 30 docker push "nanocurrency/nano-env:gcc" + "$scripts"/custom-timeout.sh 30 docker push "nanocurrency/nano-env:clang-6" + echo "Deployed nano-env" + exit 0 + else + if [[ "$GITHUB_WORKFLOW" = "Live" ]]; then + tags=$(docker images --format '{{.Repository}}:{{.Tag }}' | grep nanocurrency | grep -vE "env|ghcr.io|none|latest") + else + tags=$(docker images --format '{{.Repository}}:{{.Tag }}' | grep nanocurrency | grep -vE "env|ghcr.io|none") + fi + for a in $tags; do + "$scripts"/custom-timeout.sh 30 docker push "$a" + done + echo "$docker_image_name with tags ${tags//$'\n'/' '} deployed" + fi + else + echo "\$DOCKER_PASSWORD environment variable required" + exit 0 + fi +} From 327e6873e8028de763f2d86116a1d468a9963c67 Mon Sep 17 00:00:00 2001 From: Thiago Silva Date: Mon, 16 May 2022 18:40:26 -0300 Subject: [PATCH 2/3] Updates the CI workflows to the new docker scripts --- .github/workflows/beta_artifacts.yml | 4 +++- .github/workflows/develop.yml | 2 +- .github/workflows/live_artifacts.yml | 4 +++- .github/workflows/test_network_artifacts.yml | 4 +++- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/beta_artifacts.yml b/.github/workflows/beta_artifacts.yml index 81bda274..cd5b11bc 100644 --- a/.github/workflows/beta_artifacts.yml +++ b/.github/workflows/beta_artifacts.yml @@ -81,8 +81,10 @@ jobs: env: COMPILER: gcc run: ci/actions/linux/install_deps.sh + - name: Build Docker (nanocurrency/nano-beta) + run: TRAVIS_TAG=${TAG} ci/actions/linux/docker-build.sh - name: Deploy Docker (nanocurrency/nano-beta) - run: TRAVIS_TAG=${TAG} ci/actions/linux/deploy-docker.sh + run: TRAVIS_TAG=${TAG} ci/actions/linux/docker-deploy.sh env: DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - name: Login to ghcr.io diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml index a556f38f..fddfd054 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/develop.yml @@ -22,6 +22,6 @@ jobs: - name: Deploy Docker (ghcr.io) run: ci/actions/linux/ghcr_push.sh - name: Deploy Docker (nanocurrency/nano-env) - run: ci/actions/linux/deploy-docker.sh + run: ci/actions/linux/docker-deploy.sh env: DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} diff --git a/.github/workflows/live_artifacts.yml b/.github/workflows/live_artifacts.yml index bc852f2c..76d0c00d 100644 --- a/.github/workflows/live_artifacts.yml +++ b/.github/workflows/live_artifacts.yml @@ -80,8 +80,10 @@ jobs: env: COMPILER: gcc run: ci/actions/linux/install_deps.sh + - name: Build Docker (nanocurrency/nano) + run: TRAVIS_TAG=${TAG} ci/actions/linux/docker-build.sh - name: Deploy Docker (nanocurrency/nano) - run: TRAVIS_TAG=${TAG} ci/actions/linux/deploy-docker.sh + run: TRAVIS_TAG=${TAG} ci/actions/linux/docker-deploy.sh env: DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - name: Login to ghcr.io diff --git a/.github/workflows/test_network_artifacts.yml b/.github/workflows/test_network_artifacts.yml index 991d90c4..d9c9c1f2 100644 --- a/.github/workflows/test_network_artifacts.yml +++ b/.github/workflows/test_network_artifacts.yml @@ -81,8 +81,10 @@ jobs: env: COMPILER: gcc run: ci/actions/linux/install_deps.sh + - name: Build Docker (nanocurrency/nano) + run: TRAVIS_TAG=${TAG} ci/actions/linux/docker-build.sh - name: Deploy Docker (nanocurrency/nano) - run: TRAVIS_TAG=${TAG} ci/actions/linux/deploy-docker.sh + run: TRAVIS_TAG=${TAG} ci/actions/linux/docker-deploy.sh env: DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - name: Login to ghcr.io From 1f45128b360cda4eb86374ffb24361f9e27abde6 Mon Sep 17 00:00:00 2001 From: Thiago Silva Date: Mon, 16 May 2022 22:11:14 -0300 Subject: [PATCH 3/3] Add running permission to the new scripts --- ci/actions/linux/docker-build.sh | 0 ci/actions/linux/docker-deploy.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 ci/actions/linux/docker-build.sh mode change 100644 => 100755 ci/actions/linux/docker-deploy.sh diff --git a/ci/actions/linux/docker-build.sh b/ci/actions/linux/docker-build.sh old mode 100644 new mode 100755 diff --git a/ci/actions/linux/docker-deploy.sh b/ci/actions/linux/docker-deploy.sh old mode 100644 new mode 100755