name: deploy-image on: workflow_dispatch: # inputs: # distro: # description: Base image distro # required: true # default: debian # imageVersion: # description: Base distro image version/release # required: true # default: bullseye # imageVariant: # description: Base image variant # required: true # default: slim workflow_run: workflows: - build-latest branches: - develop types: - completed jobs: deploy-image: runs-on: ubuntu-latest env: latest-ref: refs/heads/develop strategy: matrix: postgresMajorVersion: - 15 postgisMajorVersion: - 3 postgisMinorRelease: - 3 include: - distro: debian imageVersion: bullseye imageVariant: slim steps: - uses: actions/checkout@v3 - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Login to DockerHub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Get Current Date id: current_date shell: python run: | import datetime now = datetime.datetime.utcnow() print(f'::set-output name=formatted::{now:%Y.%m.%d}') - name: Build base image id: docker_build_base uses: docker/build-push-action@v3 with: context: . platforms: linux/amd64,linux/arm64 file: Dockerfile push: true tags: | ${{ secrets.DOCKERHUB_REPO }}/postgis:base ${{ secrets.DOCKERHUB_REPO }}/postgis:base-${{ matrix.distro }}-${{ matrix.imageVersion }}-${{ matrix.imageVariant }} build-args: | DISTRO=${{ matrix.distro }} IMAGE_VERSION=${{ matrix.imageVersion }} IMAGE_VARIANT=${{ matrix.imageVariant }} GENERATE_ALL_LOCALE=1 POSTGRES_MAJOR_VERSION=${{ matrix.postgresMajorVersion }} POSTGIS_MAJOR_VERSION=${{ matrix.postgisMajorVersion }} POSTGIS_MINOR_VERSION=${{ matrix.postgresMinorVersion }} cache-from: | type=gha,scope=test type=gha,scope=prod type=gha,scope=base cache-to: type=gha,scope=base target: postgis-base - name: Build prod image id: docker_build_prod uses: docker/build-push-action@v3 with: context: . platforms: linux/amd64,linux/arm64 file: Dockerfile push: true tags: | ${{ secrets.DOCKERHUB_REPO }}/postgis:${{ matrix.postgresMajorVersion }} ${{ secrets.DOCKERHUB_REPO }}/postgis:${{ matrix.postgresMajorVersion }}-${{ matrix.postgisMajorVersion }} ${{ secrets.DOCKERHUB_REPO }}/postgis:${{ matrix.postgresMajorVersion }}-${{ matrix.postgisMajorVersion }}.${{ matrix.postgisMinorRelease }} ${{ secrets.DOCKERHUB_REPO }}/postgis:${{ matrix.postgresMajorVersion }}-${{ matrix.postgisMajorVersion }}.${{ matrix.postgisMinorRelease }}--v${{ steps.current_date.outputs.formatted }} build-args: | DISTRO=${{ matrix.distro }} IMAGE_VERSION=${{ matrix.imageVersion }} IMAGE_VARIANT=${{ matrix.imageVariant }} GENERATE_ALL_LOCALE=1 POSTGRES_MAJOR_VERSION=${{ matrix.postgresMajorVersion }} POSTGIS_MAJOR_VERSION=${{ matrix.postgisMajorVersion }} POSTGIS_MINOR_VERSION=${{ matrix.postgresMinorVersion }} cache-from: | type=gha,scope=test type=gha,scope=prod type=gha,scope=base cache-to: type=gha,scope=prod target: postgis-prod