自动同步 workflow 不覆盖现有 CI
All checks were successful
itom-platform auto build image / build (push) Has been skipped

This commit is contained in:
kim.dev.6789
2026-01-16 10:07:27 +08:00
parent 82b7953639
commit 4eb593782c

View File

@@ -12,11 +12,20 @@ permissions:
jobs:
build:
# 触发开关:仓库变量 CI_TRIGGER_MODE=dispatch|push|both默认 dispatch
if: |
(github.event_name == 'workflow_dispatch' && (vars.CI_TRIGGER_MODE == '' || vars.CI_TRIGGER_MODE == 'dispatch' || vars.CI_TRIGGER_MODE == 'both')) ||
(github.event_name == 'push' && (vars.CI_TRIGGER_MODE == 'push' || vars.CI_TRIGGER_MODE == 'both'))
runs-on: ubuntu-latest
env:
REGISTRY: git.imall.cloud
IMAGE: git.imall.cloud/itom-group/chat-deploy
# 使用 Docker Hub 作为镜像仓库
REGISTRY: docker.io
# Docker Hub 个人命名空间(需与 DOCKER_USERNAME 一致)
IMAGE: docker.io/kim6789/chat-deploy
# Docker Hub 凭证来自仓库 Secrets
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
steps:
- name: Install git
shell: sh
@@ -117,47 +126,16 @@ jobs:
- name: Login registry
shell: sh
env:
GIT_USER: ${{ secrets.GIT_USER }}
GIT_TOKEN: ${{ secrets.GIT_TOKEN }}
REGISTRY_USER: ${{ secrets.REGISTRY_USER }}
REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
AUTO_REGISTRY_USER: ${{ env.DOCKER_USERNAME }}
AUTO_REGISTRY_PASS: ${{ env.DOCKER_PASSWORD }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
run: |
set -eu
login_try() {
local user="$1"
local pass="$2"
local label="$3"
if [ -z "$user" ] || [ -z "$pass" ]; then
return 1
fi
if echo "$pass" | docker login "$REGISTRY" -u "$user" --password-stdin >/dev/null 2>&1; then
echo "Registry login ok ($label)"
return 0
fi
return 1
}
if login_try "$REGISTRY_USER" "$REGISTRY_PASSWORD" "REGISTRY_USER"; then
exit 0
fi
if login_try "$GIT_USER" "$GIT_TOKEN" "GIT_USER"; then
exit 0
fi
if login_try "${AUTO_REGISTRY_USER:-}" "${AUTO_REGISTRY_PASS:-}" "AUTO_REGISTRY"; then
exit 0
fi
ACTOR="${GITEA_ACTOR:-${FORGEJO_ACTOR:-${GITHUB_ACTOR:-}}}"
JOB_TOKEN="${GITEA_TOKEN:-${FORGEJO_TOKEN:-${GITHUB_TOKEN:-}}}"
if login_try "$ACTOR" "$JOB_TOKEN" "JOB_TOKEN"; then
exit 0
fi
echo "ERROR: registry login failed. Provide REGISTRY_USER/REGISTRY_PASSWORD or GIT_USER/GIT_TOKEN with packages write permission."
# 使用 Docker Hub 凭证登录
if [ -z "${DOCKER_USERNAME:-}" ] || [ -z "${DOCKER_PASSWORD:-}" ]; then
echo "ERROR: 缺少 Docker Hub 凭证DOCKER_USERNAME/DOCKER_PASSWORD"
exit 1
fi
echo "$DOCKER_PASSWORD" | docker login "$REGISTRY" -u "$DOCKER_USERNAME" --password-stdin
- name: Build and push images
shell: sh