diff --git a/.github/workflows/test-and-push.yml b/.github/workflows/test-and-push.yml index 7767ba7..b21cb5f 100644 --- a/.github/workflows/test-and-push.yml +++ b/.github/workflows/test-and-push.yml @@ -33,6 +33,7 @@ jobs: publish: needs: test + if: startsWith(github.ref, 'refs/tags/v') runs-on: ubuntu-latest strategy: @@ -55,7 +56,13 @@ jobs: password: ${{ secrets.REGISTRY_PASSWORD }} - name: Push ${{ matrix.db }} - run: just push ${{ matrix.db }} + run: just push ${{ matrix.db }} ${{ env.VERSION }} + + - name: Push latest ${{ matrix.db }} + run: just push ${{ matrix.db }} latest - name: Cleanup ${{ matrix.db }} run: just clean ${{ matrix.db }} + + - name: Cleanup images ${{ matrix.db }} + run: just clean-images ${{ matrix.db }} diff --git a/Justfile b/Justfile index f643182..a4982ff 100644 --- a/Justfile +++ b/Justfile @@ -27,35 +27,34 @@ down db=VARIANT: clean db=VARIANT: docker compose -f {{db}}/compose.yml down -v +# Remove the database image from local Docker cache +clean-images db=VARIANT: + docker compose -f {{db}}/compose.yml down --rmi local + ### Build & Publish ### # Build image locally build db=VARIANT: #!/usr/bin/env bash - PREFIX=${REGISTRY_URL:+${REGISTRY_URL}/} - IMAGE="database-{{db}}:{{VERSION}}" - - echo "docker build -f {{db}}/Dockerfile -t ${PREFIX}${IMAGE} {{db}}" - docker build -f {{db}}/Dockerfile -t ${PREFIX}${IMAGE} {{db}} + IMAGE="database-{{db}}:latest" + echo "docker build -f {{db}}/Dockerfile -t ${IMAGE} {{db}}" + docker build -f {{db}}/Dockerfile -t ${IMAGE} {{db}} # Build and push image to registry -push db=VARIANT: +push db=VARIANT version=VERSION: #!/usr/bin/env bash + REGISTRY_URL='{{REGISTRY_URL}}' PREFIX=${REGISTRY_URL:+${REGISTRY_URL}/} - IMAGE="database-{{db}}:{{VERSION}}" + IMAGE="database-{{db}}" + VERSION={{version}} just build {{db}} - echo "docker push ${PREFIX}${IMAGE}" - docker push ${PREFIX}${IMAGE} -push-latest db=VARIANT: - #!/usr/bin/env bash - PREFIX=${REGISTRY_URL:+${REGISTRY_URL}/} - IMAGE="database-{{db}}:latest" + echo "docker tag ${IMAGE}:latest ${PREFIX}${IMAGE}:${VERSION}" + docker tag ${IMAGE}:latest ${PREFIX}${IMAGE}:${VERSION} - just build {{db}} - echo "docker push ${PREFIX}${IMAGE}" - docker push ${PREFIX}${IMAGE} + echo "docker push ${PREFIX}${IMAGE}:${VERSION}" + docker push ${PREFIX}${IMAGE}:${VERSION} ### Tests ### @@ -70,4 +69,4 @@ test db=VARIANT: _test-postgres: #!/usr/bin/env bash just up postgres - docker compose -f postgres/compose.yml exec postgres pg_isready -U ${POSTGRES_USER} + docker compose -f postgres/compose.yml exec postgres pg_isready -U ${POSTGRES_USER:-postgres}