# .woodpecker.yaml steps: - name: Java 构建 image: docker.m.daocloud.io/library/maven:3.9.6-eclipse-temurin-17 pull: true commands: - mvn clean package -DskipTests # 注意:使用 volumes 必须在 Web UI 中开启 "Trusted" 权限 volumes: - /tmp/maven-cache:/root/.m2 when: event: [push, pull_request] branch: master - name: 镜像构建与推送 image: docker.m.daocloud.io/woodpeckerci/plugin-docker-buildx:latest volumes: - /var/run/docker.sock:/var/run/docker.sock settings: repo: registry.cn-zhangjiakou.aliyuncs.com/abhors/demo tags: latest registry: registry.cn-zhangjiakou.aliyuncs.com username: from_secret: aliyun_acr_username password: from_secret: aliyun_acr_password # 👇 核心:为其指定一个绝对能稳定拉取三方大类目的镜像加速源 # 这样当它去找 moby/buildkit 时,会自动走大厂的代理通道,100% 不会超时 mirror: https://docker.m.daocloud.io # 很多时候 plugins/docker 内部默认会处理 context,不需要你手动挂载 docker.sock # 但需要确保服务器配置了 WOODPECKER_PLUGINS_PRIVILEGED=plugins/docker when: event: push branch: master - name: 远程 Docker Compose 部署 image: docker.m.daocloud.io/library/docker:cli environment: ALIYUN_REGISTRY: registry.cn-zhangjiakou.aliyuncs.com ALIYUN_USER: from_secret: aliyun_acr_username ALIYUN_PASS: from_secret: aliyun_acr_password # 👇 1. 先把 Secret 里的远程服务器 IP 读取到一个临时变量里 REMOTE_HOST: from_secret: 136_ssh_host commands: # 👇 2. 在这里动态拼接成完整的 tcp://IP:2375 赋值给 DOCKER_HOST - export DOCKER_HOST="tcp://${REMOTE_HOST}:2375" # 以下命令保持不变 - docker login --username "$ALIYUN_USER" --password "$ALIYUN_PASS" $ALIYUN_REGISTRY - docker compose pull - docker compose up -d when: event: [push, pull_request, manual] branch: master