--- name: "Build and Publish" on: # run it on push to the default repository branch push: branches: [master] # run it during pull request pull_request: jobs: # define job to build and publish docker image build-docker-image: name: Build Docker image and push to repositories # run only when code is compiling and tests are passing runs-on: ubuntu-latest # steps to perform in job steps: - name: Set current date as env variable run: echo "BUILD_VERSION=v$(date +'%Y%m%d_%H%M')" >> $GITHUB_ENV - name: Checkout code uses: actions/checkout@v2 - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v1 - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }} - name: Build image and push to Docker Hub and GitHub Container Registry uses: docker/build-push-action@v2 with: # relative path to the place where source code with Dockerfile # is located context: . file: docker/Dockerfile # Note: tags has to be all lower-case tags: | glenux/teaching-boilerplate:latest outputs: type=docker,dest=/tmp/teaching-boilerplate.image.tar - name: Set current date as env variable run: echo "BUILD_VERSION=v$(date +'%Y%m%d_%H%M')" >> /tmp/env - name: Upload artifact uses: actions/upload-artifact@v2 with: name: myimage path: /tmp/teaching-boilerplate.image.tar test-docker-image: name: Build Docker image and push to repositories needs: build-docker-image runs-on: ubuntu-latest steps: push-docker-image: needs: test-docker-image name: Build Docker image and push to repositories runs-on: ubuntu-latest steps: # setup Docker buld action - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v1 - name: Login to DockerHub uses: docker/login-action@v1 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build image and push to Docker Hub and GitHub Container Registry uses: docker/build-push-action@v2 with: # relative path to the place where source code with Dockerfile # is located context: . file: docker/Dockerfile # Note: tags has to be all lower-case tags: | glenux/teaching-boilerplate:${{ env.BUILD_VERSION }} glenux/teaching-boilerplate:latest # build on feature branches, push only on main branch push: ${{ github.ref == 'refs/heads/master' }} #