From 30f03de903c7e2b4846f3efd1e3f2aba7ef1e1b5 Mon Sep 17 00:00:00 2001
From: Lion - dapplion <35266934+dapplion@users.noreply.github.com>
Date: Thu, 10 Jun 2021 12:05:05 +0200
Subject: [PATCH] Publish nightly version to Docker Hub too (#2667)

* Publish nightly version to Docker Hub too

* Get package json version

* Follow nightly image in docker-compose

* Tag main image as latest

* Force to install exact nightly

* Force to install exact released version

* Don't build image in tests workflow
---
 .github/workflows/release-nightly.yml | 26 ++++++++++++++++++++++++--
 .github/workflows/release.yml         |  9 ++++++---
 .github/workflows/test.yml            | 15 ---------------
 docker-compose.validator.yml          |  3 +--
 docker-compose.yml                    |  3 +--
 5 files changed, 32 insertions(+), 24 deletions(-)

diff --git a/.github/workflows/release-nightly.yml b/.github/workflows/release-nightly.yml
index e2ad30a082c8..c37f47ae6c2a 100644
--- a/.github/workflows/release-nightly.yml
+++ b/.github/workflows/release-nightly.yml
@@ -1,7 +1,7 @@
 name: Release nightly
 
 # only one per github sha can be run
-concurrency: 
+concurrency:
   group: ${{ github.sha }}
   cancel-in-progress: true
 
@@ -20,7 +20,7 @@ jobs:
       - uses: actions/setup-node@v2
         with:
           node-version: "14.16.0"
-          registry-url: 'https://registry.npmjs.org'
+          registry-url: "https://registry.npmjs.org"
       - name: Restore dependencies
         uses: actions/cache@master
         id: cache-deps
@@ -40,3 +40,25 @@ jobs:
         run: yarn run publish:nightly
         env:
           NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
+
+      - name: Get version
+        id: version
+        run: echo "::set-output name=version::$(node -p "require('./package.json').version")"
+    outputs:
+      version: ${{ steps.version.outputs.version }}
+
+  docker:
+    name: Publish to Docker Hub
+    runs-on: ubuntu-latest
+    needs: publish
+    steps:
+      - uses: actions/checkout@v2
+      - name: Login to Docker Hub
+        uses: docker/login-action@v1
+        with:
+          username: ${{ secrets.DOCKERHUB_USERNAME }}
+          password: ${{ secrets.DOCKERHUB_TOKEN }}
+      - run: docker build --tag chainsafe/lodestar:next --build-arg VERSION=${{ needs.publish.outputs.version }} .
+      - run: docker tag chainsafe/lodestar:next chainsafe/lodestar:${{ needs.publish.outputs.version }}
+        # Push all tags
+      - run: docker push chainsafe/lodestar
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 6ec3421b68da..428f6b6d5be1 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -108,8 +108,9 @@ jobs:
           delete_orphan_tag: true
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
   docker:
-    name: Build docker image
+    name: Publish to Docker Hub
     runs-on: ubuntu-latest
     needs: tag
     if: needs.tag.outputs.tag != ''
@@ -120,5 +121,7 @@ jobs:
         with:
           username: ${{ secrets.DOCKERHUB_USERNAME }}
           password: ${{ secrets.DOCKERHUB_TOKEN }}
-      - run: docker build --tag chainsafe/lodestar:${{ needs.tag.outputs.tag }} .
-      - run: docker push chainsafe/lodestar:${{ needs.tag.outputs.tag }}
+      - run: docker build --tag chainsafe/lodestar:latest --build-arg VERSION=${{ needs.tag.outputs.tag }} .
+      - run: docker tag chainsafe/lodestar:latest chainsafe/lodestar:${{ needs.tag.outputs.tag }}
+        # Push all tags
+      - run: docker push chainsafe/lodestar
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 6bf848f784d7..79ba84fafbf7 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -37,18 +37,3 @@ jobs:
         run: yarn coverage
       - name: E2e tests
         run: yarn test:e2e
-
-  docker:
-    name: Build docker image
-    runs-on: ubuntu-latest
-    needs: [tests-main]
-    if: github.event_name == 'push' && github.ref == 'refs/heads/master'
-    steps:
-      - uses: actions/checkout@v2
-      - name: Login to Docker Hub
-        uses: docker/login-action@v1
-        with:
-          username: ${{ secrets.DOCKERHUB_USERNAME }}
-          password: ${{ secrets.DOCKERHUB_TOKEN }}
-      - run: docker build --tag chainsafe/lodestar:latest .
-      - run: docker push chainsafe/lodestar:latest
diff --git a/docker-compose.validator.yml b/docker-compose.validator.yml
index 18d3076ea442..93849014f208 100644
--- a/docker-compose.validator.yml
+++ b/docker-compose.validator.yml
@@ -1,8 +1,7 @@
 version: "3.4"
 services:
   validator:
-    build: .
-    image: lodestar
+    image: chainsafe/lodestar@next
     restart: always
     volumes:
       - validator:/data
diff --git a/docker-compose.yml b/docker-compose.yml
index 5d12830c6d39..7a345451af4e 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,8 +1,7 @@
 version: "3.4"
 services:
   beacon_node:
-    build: .
-    image: lodestar
+    image: chainsafe/lodestar@next
     restart: always
     volumes:
       - beacon_node:/data