ci: support branch-based trigger with .ci/tag.env and helper script
This commit is contained in:
parent
1a846b63f1
commit
92b6c2580e
@ -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
39
scripts/commit_tag_env.sh
Normal 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"
|
Loading…
x
Reference in New Issue
Block a user