name: build & publish Docker image on: push: branches: - 6 jobs: lint-test: name: lint, build & test runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@v3 - name: setup Node uses: actions/setup-node@v3 with: node-version: 18.x - run: npm install - run: npm run lint - run: npm run build - run: npm test build-and-publish: name: build & publish Docker image needs: [lint-test] runs-on: ubuntu-latest steps: - name: check out the repo uses: actions/checkout@v3 - name: configure Docker to use buildx uses: docker/setup-buildx-action@v2 - name: log in to Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_ACCESS_TOKEN }} - name: build Docker image & push to Docker Hub uses: docker/build-push-action@v4 with: context: . push: true tags: | derhuerst/db-rest:6 derhuerst/db-rest:latest # https://docs.docker.com/build/ci/github-actions/examples/#github-cache cache-from: type=gha cache-to: type=gha,mode=max,oci-mediatypes=true,compression=zstd # this is for the public-transport/infrastructure cluster - name: log in to GitHub Container Registry uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: determine commit hash id: hash run: echo "::set-output name=hash::$(echo $GITHUB_SHA | head -c7)" - name: determine current date and time id: datetime run: echo "::set-output name=datetime::$(date -u +'%Y-%m-%dT%H.%M.%SZ')" - name: push Docker image to GitHub Registry uses: docker/build-push-action@v4 with: context: . push: true tags: ghcr.io/${{github.repository}}:v6_${{steps.hash.outputs.hash}}_${{steps.datetime.outputs.datetime}} # https://docs.docker.com/build/ci/github-actions/examples/#github-cache cache-from: type=gha cache-to: type=gha,mode=max,oci-mediatypes=true,compression=zstd