name: joystream-node-docker on: push jobs: build: name: Build joystream/node Docker image if: github.repository == 'Joystream/joystream' runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-node@v1 with: node-version: '14.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 docker pull joystream/node:${{ steps.compute_shasum.outputs.shasum }} docker image tag joystream/node:${{ steps.compute_shasum.outputs.shasum }} 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 "NEW_BUILD=true" >> $GITHUB_ENV 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