@@ -35,33 +35,15 @@ jobs:
|
|||||||
password: ${{ secrets.REGISTRY_PASSWORD }}
|
password: ${{ secrets.REGISTRY_PASSWORD }}
|
||||||
|
|
||||||
- name: Promote images (no rebuild)
|
- name: Promote images (no rebuild)
|
||||||
|
env:
|
||||||
|
REGISTRY_USER: ${{ secrets.REGISTRY_USER }}
|
||||||
|
REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
bash scripts/run-promote-images.sh \
|
||||||
SHA="${{ steps.meta.outputs.sha_tag }}"
|
"${{ steps.meta.outputs.sha_tag }}" \
|
||||||
REL="${{ steps.meta.outputs.release_tag }}"
|
"${{ steps.meta.outputs.release_tag }}" \
|
||||||
IMAGES="eventhub traefik-coraza fallback bot-emulator-users observer-web logrotate"
|
stage \
|
||||||
missing=""
|
eventhub traefik-coraza fallback bot-emulator-users observer-web logrotate
|
||||||
for img in ${IMAGES}; do
|
|
||||||
if ! docker buildx imagetools inspect "${REGISTRY}/${img}:${SHA}" >/dev/null 2>&1; then
|
|
||||||
missing="${missing} ${img}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if [[ -n "${missing}" ]]; then
|
|
||||||
echo "Образы sha:${SHA} не найдены:${missing}"
|
|
||||||
echo "Сначала прогоните IFT deploy для этого коммита (push в master)."
|
|
||||||
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
|
- name: Prune old registry images
|
||||||
env:
|
env:
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# CI: clone EventHubDevOps и promote-images.sh
|
||||||
|
# Usage: run-promote-images.sh <sha-tag> <release-tag> [stand-alias] [image...]
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SHA_TAG="${1:?sha-tag}"
|
||||||
|
RELEASE_TAG="${2:?release-tag}"
|
||||||
|
STAND_ALIAS="${3:?stand-alias}"
|
||||||
|
shift 3
|
||||||
|
EXTRA_IMAGES=("$@")
|
||||||
|
|
||||||
|
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"
|
||||||
|
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"
|
||||||
|
|
||||||
|
args=("${SHA_TAG}" "${RELEASE_TAG}")
|
||||||
|
if [[ -n "${STAND_ALIAS}" ]]; then
|
||||||
|
args+=("${STAND_ALIAS}")
|
||||||
|
fi
|
||||||
|
if ((${#EXTRA_IMAGES[@]} > 0)); then
|
||||||
|
args+=("${EXTRA_IMAGES[@]}")
|
||||||
|
fi
|
||||||
|
|
||||||
|
bash "${WORKDIR}/devops/scripts/promote-images.sh" "${args[@]}"
|
||||||
Reference in New Issue
Block a user