woodpeckerci/plugin-kanikoWoodpecker CI Kaniko插件是一个集成Google Kaniko工具的Woodpecker CI插件,专为在CI/CD流水线中构建Docker镜像而设计。该插件无需依赖Docker守护进程(daemon),通过直接访问容器镜像层来构建镜像,适用于无Docker守护进程的受限环境(如Kubernetes集群、安全隔离环境),可无缝集成到Woodpecker CI的自动化流程中,实现镜像构建、推送的全自动化。
作为Woodpecker CI流水线的关键步骤,在代码提交、合并或定时触发时自动构建Docker镜像,实现"代码提交→测试→构建镜像→推送仓库"的全流程自动化。
在无Docker守护进程的环境(如Kubernetes Pod、容器化CI节点)中构建镜像,解决传统Docker-in-Docker(DinD)方案的权限和性能问题。
适用于对安全要求较高的环境,通过避免暴露Docker守护进程权限(无需--privileged模式),降低容器逃逸和权限滥用风险。
需为不同硬件架构(如x86_64、ARM)构建镜像时,通过多平台构建功能一次性生成多架构镜像并推送至仓库。
在Woodpecker CI的流水线配置文件(.woodpecker.yml)中,通过steps定义使用该插件,示例如下:
yamlsteps: build-image: image: woodpeckerci/plugin-kaniko settings: repo: my-docker-repo/my-image tag: latest dockerfile: ./Dockerfile context: . registry: [***] username: from_secret: docker_username password: from_secret: docker_password
| 参数名 | 类型 | 描述 | 示例值 |
|---|---|---|---|
repo | 必需 | 目标镜像仓库名称(含命名空间) | my-docker-repo/my-app |
tag | 可选 | 镜像标签,支持多个标签(用逗号分隔) | latest,${CI_COMMIT_SHA:0:8} |
dockerfile | 可选 | Dockerfile路径(相对于构建上下文) | ./build/Dockerfile |
context | 可选 | 构建上下文路径(相对于代码仓库根目录) | .(默认) |
registry | 可选 | 容器仓库地址(默认:Docker Hub) | [***] |
username | 可选 | 仓库认证用户名(推送镜像时必需) | my-user |
password | 可选 | 仓库认证密码/令牌(推送镜像时必需) | my-token |
platforms | 可选 | 多平台构建目标(用逗号分隔),需Kaniko支持 | linux/amd64,linux/arm64 |
cache | 可选 | 是否启用构建缓存(true/false) | true(默认) |
cache_repo | 可选 | 缓存镜像仓库地址(默认使用目标仓库) | my-docker-repo/build-cache |
build_args | 可选 | 传递给Dockerfile的构建参数(键值对,用逗号分隔) | APP_VERSION=1.0.0,ENV=prod |
skip_tls_verify | 可选 | 是否跳过仓库TLS证书验证(用于私有仓库自签名证书) | false(默认) |
snapshot_mode | 可选 | 文件系统快照模式(full/redo/time,Kaniko原生参数) | full(默认) |
push | 可选 | 是否推送镜像至仓库(true/false,默认:true) | true |
yamlsteps: build-multiarch: image: woodpeckerci/plugin-kaniko settings: repo: my-repo/my-app tag: multiarch platforms: linux/amd64,linux/arm64 dockerfile: Dockerfile.multiarch registry: [***] username: from_secret: docker_username password: from_secret: docker_password
yamlsteps: build-with-cache: image: woodpeckerci/plugin-kaniko settings: repo: my-repo/my-app tag: ${CI_COMMIT_BRANCH} cache: true cache_repo: my-repo/build-cache # 独立缓存仓库,避免污染目标镜像 dockerfile: Dockerfile context: .
yamlsteps: build-with-args: image: woodpeckerci/plugin-kaniko settings: repo: my-repo/my-app tag: ${CI_COMMIT_SHA:0:8} build_args: "APP_VERSION=${CI_COMMIT_TAG},BUILD_DATE=$(date +%Y-%m-%d)" dockerfile: Dockerfile
from_secret从密钥管理中获取,避免明文暴露。tag参数支持动态值(如Git提交哈希、分支名),需结合Woodpecker CI的环境变量(如CI_COMMIT_SHA、CI_COMMIT_BRANCH)。--privileged权限,但需确保构建上下文(代码仓库)可被插件访问。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务