74 lines
2.7 KiB
YAML
74 lines
2.7 KiB
YAML
# 注意:
|
||
# 1. git commit 信息中包含"[CI SKIP]"或"[SKIP CI]"则不触发工作流(注意大小写)
|
||
# 2. 工作步骤中包含 volumes 挂载时,需在 Woodpecker 配置中添加 volumes 挂载信任(Trust)
|
||
# 3. lables 配置项,可配置多个;如果存在,则必须完全符合 Runner 创建时设置的 Lables 配置项
|
||
# 4. command 中,引用自定义变量不能使用`${VAR}`方式,需要使用`$VAR`方式;带花括号的变量,会在 Woodpecker 模板引擎解析阶段被替换(此时变量为空)
|
||
when:
|
||
- event: push
|
||
branch: main
|
||
- event: tag
|
||
ref: refs/tags/v*
|
||
|
||
labels:
|
||
runtime: docker
|
||
arch: amd64
|
||
multiarch: "true"
|
||
|
||
steps:
|
||
- name: 诊断
|
||
image: docker:cli
|
||
volumes:
|
||
- /var/run/docker.sock:/var/run/docker.sock
|
||
environment:
|
||
SWR_REGISTRY: "swr.cn-north-4.myhuaweicloud.com/colovu"
|
||
commands:
|
||
- apk add --no-cache curl jq 2>/dev/null || true
|
||
- echo "=== Docker CLI ==="; docker version
|
||
- echo "=== Docker Engine API ==="; curl -s --unix-socket /var/run/docker.sock http://localhost/version | jq -r ".ApiVersion"
|
||
- env | grep SWR_REGISTRY || echo "SWR_REGISTRY NOT SET!"
|
||
- echo "SWR_REGISTRY=[$SWR_REGISTRY]"
|
||
|
||
- name: 编译并推送镜像
|
||
image: docker:cli
|
||
volumes:
|
||
- /var/run/docker.sock:/var/run/docker.sock
|
||
environment:
|
||
SWR_REGISTRY: "swr.cn-north-4.myhuaweicloud.com/colovu"
|
||
commands:
|
||
- env | grep SWR_REGISTRY || echo "SWR_REGISTRY NOT SET!"
|
||
- echo "SWR_REGISTRY=[$SWR_REGISTRY]"
|
||
- |
|
||
echo "ENV DUMP:"
|
||
env
|
||
- |
|
||
if [ -n "${CI_COMMIT_TAG:-}" ]; then
|
||
IMAGE_TAG="${CI_COMMIT_TAG}"
|
||
else
|
||
IMAGE_TAG="${CI_COMMIT_SHA:0:8}"
|
||
fi
|
||
SWR_REGISTRY_REPO="$SWR_REGISTRY/${CI_REPO_NAME}"
|
||
|
||
echo "=== Debug Variables ==="
|
||
echo "CI_REPO: ${CI_REPO:-empty}"
|
||
echo "CI_REPO_NAME: ${CI_REPO_NAME:-empty}"
|
||
echo "CI_COMMIT_TAG: ${CI_COMMIT_TAG:-empty}"
|
||
echo "CI_COMMIT_SHA: ${CI_COMMIT_SHA:-empty}"
|
||
echo "CI_COMMIT_BRANCH: ${CI_COMMIT_BRANCH:-empty}"
|
||
echo "SWR_REGISTRY: $SWR_REGISTRY_REPO"
|
||
echo "IMAGE_TAG: $IMAGE_TAG"
|
||
echo "========================"
|
||
|
||
echo "Building image..."
|
||
docker build -t "$SWR_REGISTRY_REPO:$IMAGE_TAG" .
|
||
|
||
echo "Pushing image..."
|
||
docker push "$SWR_REGISTRY_REPO:$IMAGE_TAG""
|
||
|
||
# 可选:打 latest 标签(仅 main 分支)
|
||
if [ "${CI_COMMIT_BRANCH}" = "main" ]; then
|
||
docker tag "$SWR_REGISTRY_REPO:$IMAGE_TAG" "$SWR_REGISTRY_REPO:latest"
|
||
docker push "$SWR_REGISTRY_REPO:latest"
|
||
fi
|
||
|
||
echo "Image pushed: $SWR_REGISTRY_REPO:$IMAGE_TAG"
|