diff --git a/.woodpecker.yml b/.woodpecker.yml index a34716e..b522948 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -4,6 +4,12 @@ clone: depth: 1 tags: true +# 定义命名卷(必须) +volumes: + - name: docker-sock + host: + path: /var/run/docker.sock + labels: runtime: docker arch: amd64 @@ -13,7 +19,8 @@ steps: diagnose: image: docker:29.0-cli volumes: - - /var/run/docker.sock:/var/run/docker.sock + - name: docker-sock + path: /var/run/docker.sock commands: - apk add --no-cache curl jq 2>/dev/null || true - echo "=== Docker CLI ==="; docker version @@ -22,7 +29,8 @@ steps: debug_engine_api: image: curlimages/curl volumes: - - /var/run/docker.sock:/var/run/docker.sock + - name: docker-sock + path: /var/run/docker.sock commands: - curl --unix-socket /var/run/docker.sock http://localhost/version @@ -32,7 +40,8 @@ steps: DOCKER_API_VERSION: "1.45" DOCKER_HOST: unix:///var/run/docker.sock volumes: - - /var/run/docker.sock:/var/run/docker.sock + - name: docker-sock + path: /var/run/docker.sock commands: - which docker - docker --version @@ -41,7 +50,8 @@ steps: registry_login: image: docker:29.0-cli volumes: - - /var/run/docker.sock:/var/run/docker.sock + - name: docker-sock + path: /var/run/docker.sock environment: REGISTRY_SERVER: swr.cn-north-4.myhuaweicloud.com REGISTRY_USER: @@ -59,12 +69,10 @@ steps: build_and_push: image: docker:29.0-cli volumes: - - /var/run/docker.sock:/var/run/docker.sock + - name: docker-sock + path: /var/run/docker.sock environment: REGISTRY_REPO: swr.cn-north-4.myhuaweicloud.com/colovu/scratch - CI_COMMIT_TAG: ${CI_COMMIT_TAG} - CI_COMMIT_SHA: ${CI_COMMIT_SHA} - CI_COMMIT_BRANCH: ${CI_COMMIT_BRANCH} commands: - | set -euo pipefail @@ -75,34 +83,32 @@ steps: IMAGE_TAG="${CI_COMMIT_SHA:0:8}" fi - echo "Building image..." - docker build -t "${REGISTRY_REPO}:${IMAGE_TAG}" . + if [ "${CI_COMMIT_BRANCH}" = "main" ]; then + LATEST=true + else + LATEST=false + fi - echo "Pushing image..." + echo "Building and pushing ${REGISTRY_REPO}:${IMAGE_TAG}" + docker build -t "${REGISTRY_REPO}:${IMAGE_TAG}" . docker push "${REGISTRY_REPO}:${IMAGE_TAG}" - # 打 latest 标签(仅 main 分支) - if [ "${CI_COMMIT_BRANCH}" = "main" ]; then + if [ "$LATEST" = true ]; then docker tag "${REGISTRY_REPO}:${IMAGE_TAG}" "${REGISTRY_REPO}:latest" docker push "${REGISTRY_REPO}:latest" fi - - echo "Image pushed: ${REGISTRY_REPO}:${IMAGE_TAG}" cleanup: image: docker:29.0-cli volumes: - - /var/run/docker.sock:/var/run/docker.sock + - name: docker-sock + path: /var/run/docker.sock commands: - - | - echo "Logging out of registry..." - docker logout swr.cn-north-4.myhuaweicloud.com || true - echo "Cleaning up unused images..." - docker system prune -af || true + - docker logout swr.cn-north-4.myhuaweicloud.com || true + - docker system prune -af || true when: status: [success, failure] -# 触发条件 trigger: event: [push, tag] branch: [main, "release/*"]