|
@@ -0,0 +1,79 @@
|
|
|
+name: joystream-node-docker
|
|
|
+on: push
|
|
|
+
|
|
|
+jobs:
|
|
|
+ build:
|
|
|
+ name: Build joystream/node Docker image
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ steps:
|
|
|
+ - uses: actions/checkout@v1
|
|
|
+ - uses: actions/setup-node@v1
|
|
|
+ with:
|
|
|
+ node-version: '12.x'
|
|
|
+
|
|
|
+ - id: compute_shasum
|
|
|
+ name: Compute runtime code shasum
|
|
|
+ run: |
|
|
|
+ export RUNTIME_CODE_SHASUM=`scripts/runtime-code-shasum.sh`
|
|
|
+ echo "::set-output name=shasum::${RUNTIME_CODE_SHASUM}"
|
|
|
+
|
|
|
+ - name: Setup cache directory
|
|
|
+ run: mkdir ~/docker-images
|
|
|
+
|
|
|
+ - name: Cache docker images
|
|
|
+ uses: actions/cache@v2
|
|
|
+ env:
|
|
|
+ cache-name: joystream-node-docker
|
|
|
+ with:
|
|
|
+ path: ~/docker-images
|
|
|
+ key: ${{ env.cache-name }}-${{ steps.compute_shasum.outputs.shasum }}
|
|
|
+
|
|
|
+ - name: Check if we have cached image
|
|
|
+ continue-on-error: true
|
|
|
+ run: |
|
|
|
+ if [ -f ~/docker-images/joystream-node-docker-image.tar.gz ]; then
|
|
|
+ docker load --input ~/docker-images/joystream-node-docker-image.tar.gz
|
|
|
+ cp ~/docker-images/joystream-node-docker-image.tar.gz .
|
|
|
+ fi
|
|
|
+
|
|
|
+ - name: Check if we have pre-built image on Dockerhub
|
|
|
+ continue-on-error: true
|
|
|
+ run: |
|
|
|
+ if ! [ -f joystream-node-docker-image.tar.gz ]; then
|
|
|
+ export JOYSTREAM_NODE_TAG=${{ steps.compute_shasum.outputs.shasum }}
|
|
|
+ docker pull joystream/node:${JOYSTREAM_NODE_TAG}
|
|
|
+ docker image tag joystream/node:${JOYSTREAM_NODE_TAG} joystream/node:latest
|
|
|
+ docker save --output joystream-node-docker-image.tar joystream/node:latest
|
|
|
+ gzip joystream-node-docker-image.tar
|
|
|
+ cp joystream-node-docker-image.tar.gz ~/docker-images/
|
|
|
+ fi
|
|
|
+
|
|
|
+ - name: Build new joystream/node image
|
|
|
+ run: |
|
|
|
+ if ! [ -f joystream-node-docker-image.tar.gz ]; then
|
|
|
+ docker build . --file joystream-node.Dockerfile --tag joystream/node
|
|
|
+ docker save --output joystream-node-docker-image.tar joystream/node
|
|
|
+ gzip joystream-node-docker-image.tar
|
|
|
+ cp joystream-node-docker-image.tar.gz ~/docker-images/
|
|
|
+ echo "::set-env name=NEW_BUILD::true"
|
|
|
+ fi
|
|
|
+
|
|
|
+ - name: Save joystream/node image to Artifacts
|
|
|
+ uses: actions/upload-artifact@v2
|
|
|
+ with:
|
|
|
+ name: ${{ steps.compute_shasum.outputs.shasum }}-joystream-node-docker-image.tar.gz
|
|
|
+ path: joystream-node-docker-image.tar.gz
|
|
|
+
|
|
|
+ - name: Login to DockerHub
|
|
|
+ uses: docker/login-action@v1
|
|
|
+ with:
|
|
|
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
|
+ password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
|
+ if: env.NEW_BUILD
|
|
|
+
|
|
|
+ - name: Publish new image to DockerHub
|
|
|
+ run: |
|
|
|
+ docker image tag joystream/node joystream/node:${{ steps.compute_shasum.outputs.shasum }}
|
|
|
+ docker push joystream/node:${{ steps.compute_shasum.outputs.shasum }}
|
|
|
+ if: env.NEW_BUILD
|
|
|
+
|