# 生产 Docker 交付包:仅 tag 触发 # 镜像与包名固定为 v1.1.0(与现网 .env / 部署习惯一致),便于生产升级时不必改镜像标签 # 产物:/root/zkxw-releases/zkxw-docker-deploy-v1.1.0.tar.gz # 脚本:./scripts/package-docker-deploy.sh # # docker.sock 与 /releases 由 runner 环境变量 DRONE_RUNNER_VOLUMES 注入, # 勿在本文件再声明同路径 host volume,否则会 Duplicate mount point。 # # 注意:Drone 会对 commands 里的 ${VAR} 做预处理替换;自定义环境变量请用 $${VAR} # 或直接写死版本号,避免变成空字符串。 kind: pipeline type: docker name: package-prod concurrency: limit: 1 trigger: event: - tag clone: depth: 1 steps: - name: package-docker image: docker:27-cli environment: DOCKER_BUILDKIT: '1' NODE_MAX_OLD_SPACE_SIZE: '3072' NPM_REGISTRY: https://registry.npmmirror.com PIP_INDEX_URL: https://mirrors.aliyun.com/pypi/simple/ PIP_TRUSTED_HOST: mirrors.aliyun.com ZKXW_DEPLOY_VERSION: v1.1.0 commands: - set -eu # 国内机访问 dl-cdn.alpinelinux.org 偶发 Permission denied,改用阿里云镜像 - sed -i 's#dl-cdn.alpinelinux.org#mirrors.aliyun.com#g' /etc/apk/repositories - apk add --no-cache bash git python3 # 固定 v1.1.0;$${ } 防止 Drone 预处理把自定义变量掏空 - export ZKXW_DEPLOY_VERSION="$${ZKXW_DEPLOY_VERSION:-v1.1.0}" - echo "==> git tag=${DRONE_TAG:-none} deploy_version=$${ZKXW_DEPLOY_VERSION} commit=${DRONE_COMMIT}" - chmod +x scripts/package-docker-deploy.sh scripts/build-docker-images.sh - | if [ -f /releases/.deploy-docker.env ]; then mkdir -p deploy/docker cp /releases/.deploy-docker.env deploy/docker/.env echo "using /releases/.deploy-docker.env for secret inject" fi - ./scripts/package-docker-deploy.sh "$${ZKXW_DEPLOY_VERSION}" - mkdir -p /releases - cp -v dist/zkxw-docker-deploy-"$${ZKXW_DEPLOY_VERSION}".tar.gz /releases/ - ls -lh /releases/zkxw-docker-deploy-"$${ZKXW_DEPLOY_VERSION}".tar.gz - sha256sum /releases/zkxw-docker-deploy-"$${ZKXW_DEPLOY_VERSION}".tar.gz