自动同步 workflow 不覆盖现有 CI
All checks were successful
itom-platform auto build image / build (push) Successful in 2m39s
All checks were successful
itom-platform auto build image / build (push) Successful in 2m39s
This commit is contained in:
@@ -12,14 +12,11 @@ permissions:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
# CI 触发模式:优先仓库变量,其次 Secrets(默认 dispatch)
|
# 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:
|
jobs:
|
||||||
build:
|
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
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
env:
|
env:
|
||||||
@@ -31,7 +28,33 @@ jobs:
|
|||||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||||
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
steps:
|
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
|
- name: Install git
|
||||||
|
if: ${{ env.CI_TRIGGER_ALLOWED == 'true' }}
|
||||||
shell: sh
|
shell: sh
|
||||||
run: |
|
run: |
|
||||||
set -eu
|
set -eu
|
||||||
@@ -40,6 +63,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
|
if: ${{ env.CI_TRIGGER_ALLOWED == 'true' }}
|
||||||
shell: sh
|
shell: sh
|
||||||
env:
|
env:
|
||||||
GIT_USER: ${{ secrets.GIT_USER }}
|
GIT_USER: ${{ secrets.GIT_USER }}
|
||||||
@@ -92,6 +116,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Prepare tags
|
- name: Prepare tags
|
||||||
|
if: ${{ env.CI_TRIGGER_ALLOWED == 'true' }}
|
||||||
shell: sh
|
shell: sh
|
||||||
run: |
|
run: |
|
||||||
set -eu
|
set -eu
|
||||||
@@ -106,6 +131,7 @@ jobs:
|
|||||||
echo "SHA_SHORT=$SHA_SHORT" >> "$GITHUB_ENV"
|
echo "SHA_SHORT=$SHA_SHORT" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- name: Resolve Dockerfile
|
- name: Resolve Dockerfile
|
||||||
|
if: ${{ env.CI_TRIGGER_ALLOWED == 'true' }}
|
||||||
shell: sh
|
shell: sh
|
||||||
run: |
|
run: |
|
||||||
set -eu
|
set -eu
|
||||||
@@ -128,6 +154,7 @@ jobs:
|
|||||||
|
|
||||||
|
|
||||||
- name: Login registry
|
- name: Login registry
|
||||||
|
if: ${{ env.CI_TRIGGER_ALLOWED == 'true' }}
|
||||||
shell: sh
|
shell: sh
|
||||||
env:
|
env:
|
||||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||||
@@ -142,6 +169,7 @@ jobs:
|
|||||||
echo "$DOCKER_PASSWORD" | docker login "$REGISTRY" -u "$DOCKER_USERNAME" --password-stdin
|
echo "$DOCKER_PASSWORD" | docker login "$REGISTRY" -u "$DOCKER_USERNAME" --password-stdin
|
||||||
|
|
||||||
- name: Build and push images
|
- name: Build and push images
|
||||||
|
if: ${{ env.CI_TRIGGER_ALLOWED == 'true' }}
|
||||||
shell: sh
|
shell: sh
|
||||||
run: |
|
run: |
|
||||||
set -eu
|
set -eu
|
||||||
|
|||||||
Reference in New Issue
Block a user