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:
|
push:
|
||||||
tags:
|
tags:
|
||||||
- dev-test
|
- dev-test
|
||||||
|
branches:
|
||||||
|
- 'dev-test*'
|
||||||
|
paths:
|
||||||
|
- '.ci/tag.env'
|
||||||
jobs:
|
jobs:
|
||||||
build-and-push:
|
build-and-push:
|
||||||
runs-on: docker
|
runs-on: docker
|
||||||
@ -26,6 +30,7 @@ jobs:
|
|||||||
- name: Build and push images
|
- name: Build and push images
|
||||||
env:
|
env:
|
||||||
REGISTRY: git.4nkweb.com
|
REGISTRY: git.4nkweb.com
|
||||||
DOCKER_TAG: dev-test
|
|
||||||
run: |
|
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
|
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