diff --git a/.github/workflows/docker-image-push.yml b/.github/workflows/docker-image-push.yml new file mode 100644 index 0000000000..c1c29e6a30 --- /dev/null +++ b/.github/workflows/docker-image-push.yml @@ -0,0 +1,68 @@ +# +name: Create and publish Tasking Manager backend container image + +on: + push: + branches: + - main + - develop + - deployment/hot-tasking-manager + - deployment/demo-tasking-manager + - deployment/container-tasking-manager + + pull_request: + branches: + - main + - develop + - deployment/hot-tasking-manager + - deployment/demo-tasking-manager + - deployment/container-tasking-manager + + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + # Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job. + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to the Container registry + uses: docker/login-action@v3.0.0 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + # This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` "meta" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels. + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5.5.1 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + tags: | + type=ref,event=pr + type=ref,event=tag + type=semver,pattern=raw + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + type=sha + type=raw,value=dev-latest + + - name: Build and push Docker image + uses: docker/build-push-action@v5.1.0 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }}