ci: support branch-based trigger with .ci/tag.env and helper script

This commit is contained in:
Nicolas Cantu 2025-09-10 12:13:03 +02:00
parent 1a846b63f1
commit 92b6c2580e
2 changed files with 45 additions and 1 deletions

View File

@ -3,6 +3,10 @@ on:
push:
tags:
- dev-test
branches:
- 'dev-test*'
paths:
- '.ci/tag.env'
jobs:
build-and-push:
runs-on: docker
@ -26,6 +30,7 @@ jobs:
- name: Build and push images
env:
REGISTRY: git.4nkweb.com
DOCKER_TAG: dev-test
run: |
DOCKER_TAG=$(if [ -f .ci/tag.env ]; then source .ci/tag.env && echo "$DOCKER_TAG"; else echo "${GITHUB_REF_NAME:-dev-test}"; fi)
export DOCKER_TAG
bash scripts/build_and_push.sh

39
scripts/commit_tag_env.sh Normal file
View File

@ -0,0 +1,39 @@
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
# Usage: ./scripts/commit_tag_env.sh <TAG_NAME>
if [ $# -lt 1 ]; then
echo "[ci] usage: $0 <TAG_NAME>" >&2
exit 1
fi
TAG_NAME="$1"
ROOT_DIR="/home/desk/code/4NK_dev"
TAG_BRANCH="$TAG_NAME"
cd "$ROOT_DIR"
echo "[ci] préparer la branche ${TAG_BRANCH} (source dev si besoin)"
git fetch origin --prune >/dev/null 2>&1 || true
if git show-ref --verify --quiet "refs/heads/${TAG_BRANCH}"; then
git checkout "${TAG_BRANCH}"
else
if git ls-remote --exit-code --heads origin "${TAG_BRANCH}" >/dev/null 2>&1; then
git checkout -b "${TAG_BRANCH}" "origin/${TAG_BRANCH}"
else
git checkout -B "${TAG_BRANCH}" "origin/dev"
fi
fi
echo "[ci] écrire .ci/tag.env avec DOCKER_TAG=${TAG_NAME}"
mkdir -p .ci
printf "DOCKER_TAG=%s\n" "$TAG_NAME" > .ci/tag.env
git add .ci/tag.env
git commit -m "ci(tag): set DOCKER_TAG=${TAG_NAME} in .ci/tag.env"
git push origin "HEAD:refs/heads/${TAG_BRANCH}"
echo "[ci] terminé: branche ${TAG_BRANCH} mise à jour"