diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 32b9306..19afaec 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -89,5 +89,14 @@ jobs: TAG="sha-${GITHUB_SHA:0:12}" docker tag eventhub:latest "${REGISTRY}/eventhub:${TAG}" docker tag eventhub:latest "${REGISTRY}/eventhub:ift" + docker tag eventhub:latest "${REGISTRY}/eventhub:dev" bash scripts/retry-docker-build.sh 5 30 -- docker push "${REGISTRY}/eventhub:${TAG}" bash scripts/retry-docker-build.sh 5 30 -- docker push "${REGISTRY}/eventhub:ift" + bash scripts/retry-docker-build.sh 5 30 -- docker push "${REGISTRY}/eventhub:dev" + + - name: Prune old registry images + if: github.event_name == 'push' + env: + REGISTRY_USER: ${{ secrets.REGISTRY_USER }} + REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} + run: bash scripts/run-registry-prune.sh diff --git a/.gitea/workflows/deploy-ift.yml b/.gitea/workflows/deploy-ift.yml index 7eb0ce2..28b3f5f 100644 --- a/.gitea/workflows/deploy-ift.yml +++ b/.gitea/workflows/deploy-ift.yml @@ -108,3 +108,9 @@ jobs: export REGISTRY_USER='${{ secrets.REGISTRY_USER }}' export REGISTRY_PASSWORD='${{ secrets.REGISTRY_PASSWORD }}' bash /opt/eventhub-ift/devops/scripts/deploy-service.sh ift core ${{ steps.meta.outputs.tag }} + + - name: Prune old registry images + env: + REGISTRY_USER: ${{ secrets.REGISTRY_USER }} + REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} + run: bash scripts/run-registry-prune.sh diff --git a/.gitea/workflows/deploy-stage.yml b/.gitea/workflows/deploy-stage.yml index 87ced93..99a8b62 100644 --- a/.gitea/workflows/deploy-stage.yml +++ b/.gitea/workflows/deploy-stage.yml @@ -52,12 +52,23 @@ jobs: exit 1 fi for img in ${IMAGES}; do + if docker buildx imagetools inspect "${REGISTRY}/${img}:stage" >/dev/null 2>&1; then + docker buildx imagetools create \ + -t "${REGISTRY}/${img}:stage-previous" \ + "${REGISTRY}/${img}:stage" + fi docker buildx imagetools create \ -t "${REGISTRY}/${img}:${REL}" \ -t "${REGISTRY}/${img}:stage" \ "${REGISTRY}/${img}:${SHA}" done + - name: Prune old registry images + env: + REGISTRY_USER: ${{ secrets.REGISTRY_USER }} + REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} + run: bash scripts/run-registry-prune.sh + - name: Deploy core on stage via SSH uses: appleboy/ssh-action@v0.1.5 with: diff --git a/scripts/publish-ift-aux-images.sh b/scripts/publish-ift-aux-images.sh index 120bd19..7d081dd 100644 --- a/scripts/publish-ift-aux-images.sh +++ b/scripts/publish-ift-aux-images.sh @@ -20,6 +20,7 @@ rebuild_image() { docker buildx build -f "${dockerfile}" --push \ -t "${REGISTRY}/${name}:${TAG}" \ -t "${REGISTRY}/${name}:ift" \ + -t "${REGISTRY}/${name}:dev" \ --provenance=false --sbom=false \ "${context}" } diff --git a/scripts/run-registry-prune.sh b/scripts/run-registry-prune.sh new file mode 100644 index 0000000..3e3dade --- /dev/null +++ b/scripts/run-registry-prune.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +# CI helper: clone EventHubDevOps и запустить prune-registry-images.sh +set -euo pipefail + +DEVOPS_REPO="${DEVOPS_REPO:-https://git.sabilin.com/EventHub/EventHubDevOps.git}" +DEVOPS_REF="${DEVOPS_REF:-master}" + +if [[ -z "${REGISTRY_USER:-}" || -z "${REGISTRY_PASSWORD:-}" ]]; then + echo "REGISTRY_USER/PASSWORD required for registry prune" + exit 1 +fi + +WORKDIR="$(mktemp -d)" +trap 'rm -rf "${WORKDIR}"' EXIT + +repo_path="${DEVOPS_REPO#https://}" +git clone --depth 1 --branch "${DEVOPS_REF}" \ + "https://${REGISTRY_USER}:${REGISTRY_PASSWORD}@${repo_path}" \ + "${WORKDIR}/devops" + +bash "${WORKDIR}/devops/scripts/prune-registry-images.sh"