自动同步 workflow 不覆盖现有 CI
All checks were successful
itom-platform auto build image / build (push) Successful in 2m39s

This commit is contained in:
kim.dev.6789
2026-01-16 11:28:10 +08:00
parent ba53ee745f
commit ea5b06752a

View File

@@ -12,14 +12,11 @@ permissions:
env:
# CI 触发模式:优先仓库变量,其次 Secrets默认 dispatch
CI_TRIGGER_MODE: ${{ vars.CI_TRIGGER_MODE || secrets.CI_TRIGGER_MODE || 'dispatch' }}
CI_TRIGGER_MODE_VAR: ${{ vars.CI_TRIGGER_MODE }}
CI_TRIGGER_MODE_SECRET: ${{ secrets.CI_TRIGGER_MODE }}
jobs:
build:
# 触发开关CI_TRIGGER_MODE=dispatch|push|both
if: |
(github.event_name == 'workflow_dispatch' && (env.CI_TRIGGER_MODE == 'dispatch' || env.CI_TRIGGER_MODE == 'both')) ||
(github.event_name == 'push' && (env.CI_TRIGGER_MODE == 'push' || env.CI_TRIGGER_MODE == 'both'))
runs-on: ubuntu-latest
env:
@@ -31,7 +28,33 @@ jobs:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
steps:
- name: Check trigger mode
shell: sh
run: |
set -eu
MODE="${CI_TRIGGER_MODE_VAR:-${CI_TRIGGER_MODE_SECRET:-dispatch}}"
EVENT="${GITHUB_EVENT_NAME:-${GITEA_EVENT_NAME:-}}"
ALLOW="false"
case "$EVENT" in
workflow_dispatch)
if [ "$MODE" = "dispatch" ] || [ "$MODE" = "both" ]; then
ALLOW="true"
fi
;;
push)
if [ "$MODE" = "push" ] || [ "$MODE" = "both" ]; then
ALLOW="true"
fi
;;
esac
echo "CI_TRIGGER_MODE=$MODE" >> "$GITHUB_ENV"
echo "CI_TRIGGER_ALLOWED=$ALLOW" >> "$GITHUB_ENV"
if [ "$ALLOW" != "true" ]; then
echo "Skip build: event=$EVENT mode=$MODE"
fi
- name: Install git
if: ${{ env.CI_TRIGGER_ALLOWED == 'true' }}
shell: sh
run: |
set -eu
@@ -40,6 +63,7 @@ jobs:
fi
- name: Checkout
if: ${{ env.CI_TRIGGER_ALLOWED == 'true' }}
shell: sh
env:
GIT_USER: ${{ secrets.GIT_USER }}
@@ -92,6 +116,7 @@ jobs:
fi
- name: Prepare tags
if: ${{ env.CI_TRIGGER_ALLOWED == 'true' }}
shell: sh
run: |
set -eu
@@ -106,6 +131,7 @@ jobs:
echo "SHA_SHORT=$SHA_SHORT" >> "$GITHUB_ENV"
- name: Resolve Dockerfile
if: ${{ env.CI_TRIGGER_ALLOWED == 'true' }}
shell: sh
run: |
set -eu
@@ -128,6 +154,7 @@ jobs:
- name: Login registry
if: ${{ env.CI_TRIGGER_ALLOWED == 'true' }}
shell: sh
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
@@ -142,6 +169,7 @@ jobs:
echo "$DOCKER_PASSWORD" | docker login "$REGISTRY" -u "$DOCKER_USERNAME" --password-stdin
- name: Build and push images
if: ${{ env.CI_TRIGGER_ALLOWED == 'true' }}
shell: sh
run: |
set -eu