• 特征
  • 设置
  • auto_tag
  • 例子
  • 高级设置
  • 多注册表推送示例

Docker Buildx 插件

悟空CI插件,用buildx构建多架构Docker镜像.

特征

  • 无需推送即可构建

  • 使用自定义注册表

  • 需要时基于现有标记生成

  • 推送至多个注册表/转发

如果满足以下条件,它将自动生成buildkit配置以使用自定义CA证书:

  • 未设置buildkit_config

  • 提供了自定义的registry/logins

  • 文件存在/etc/docker/certs.d/<registry-value>/ca.crt

注意!要装载自定义CA,您可以使用Woodpicker CI runner配置环境WOODPECKER_BACKEND_DOCKER_VOLUMES,其值为/etc/ssl/certs:/etc/ssl/certs:ro,/etc/docker/certs.d:/etc/docker/certs.d:ro.并在runner服务器主机上创建了带有CA证书的文件/etc/docker/certs.d/<registry-value>/ca.crt.

设置

Settings NameDefaultDescription
dry-runfalse禁用docker推送
reponone设置图像的存储库名称(可以是列表)
usernamenone设置要进行身份验证的用户名
passwordnone设置要进行身份验证的密码/令牌
emailnone设置要进行身份验证的电子邮件地址
registryhttps://index.docker.io/v1/设置docker注册表以进行身份验证
dockerfileDockerfile设置用于图像生成的dockerfile
tag/tagsnone设置要用于图像的存储库标记
platformsnone为构建设置目标平台

auto_tag

如果设置为true,它将在标记事件或默认分支上使用default_tag ("latest"). 如果它是一个标记事件,它还将采用sem版本控制并相应地添加标记(x, x.x and x.x.x). 如果它不是标记事件,并且没有默认分支,则会跳过自动标记.

例子

  publish-next-agent:
    image: woodpeckerci/plugin-docker-buildx
    secrets: [docker_username, docker_password]
    settings:
      repo: woodpeckerci/woodpecker-agent
      dockerfile: docker/Dockerfile.agent.multiarch
      platforms: windows/amd64,darwin/amd64,darwin/arm64,freebsd/amd64,linux/amd64,linux/arm64/v8
      tag: next
    when:
      branch: ${CI_REPO_DEFAULT_BRANCH}
      event: push
  publish:
    image: woodpeckerci/plugin-docker-buildx
    settings:
      platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm64/v8,linux/ppc64le,linux/riscv64,linux/s390x
      repo: codeberg.org/${CI_REPO_OWNER}/hello
      registry: codeberg.org
      tags: latest
      username: ${CI_REPO_OWNER}
      password:
        from_secret: cb_token
  docker-build:
    image: woodpeckerci/plugin-docker-buildx
    settings:
      repo: codeberg.org/${CI_REPO_OWNER}/hello
      registry: codeberg.org
      dry_run: true
      output: type=oci,dest=${CI_REPO_OWNER}-hello.tar

高级设置

Settings NameDefaultDescription
mirrornone设置注册表镜像以提取映像
storage_drivernone设置docker守护程序存储驱动程序
storage_path/var/lib/docker设置docker守护程序存储路径
bipnone允许docker守护进程绑定ip地址
mtunone设置docker后台进程自定义mtu设置
custom_dnsnone设置自定义docker后台进程dns服务器
custom_dns_searchnone设置自定义docker后台进程dns搜索域
insecurefalse允许docker守护进程使用不安全的注册表
ipv6false启用docker守护进程IPv6支持
experimentalfalse启用docker后台进程实验模式
debugfalse为docker守护进程启用详细调试模式
daemon_offfalse禁用docker后台进程的启动
buildkit_confignone设置docker的内容 构建工具包TOML配置open in new window
tags_filenone用指定文件中的值覆盖“标记”选项
context.设置要使用的生成上下文的路径
auto_tagfalse根据git分支和git标记自动生成标记名,通过“tags”提供的标记被添加到auto_tag中,不带后缀
default_suffix"/auto_tag_suffixnone生成具有给定后缀的标记名
default_taglatest覆盖在启用“auto_tag”的情况下生成时使用的默认标记名
label/labelsnone设置用于图像的标签,格式为<name>=<value>
default_labels/auto_labelstrue基于git信息设置docker图像标签
build_argsnone为生成设置自定义生成参数
build_args_from_envnone将环境变量作为自定义参数转发到生成
quietfalse启用生成输出的抑制
targetnone设置要使用的生成目标
cache_fromnone设置要视为缓存源的图像
pull_imagetrue强制在生成时提取基本映像
compressfalse允许使用gzip压缩生成上下文
confignone设置docker守护进程json-config的内容
purgetrue允许在生成结束时清除docker环境
no_cachefalse禁用缓存的中间容器的使用
add_hostnone设置附加主机:ip映射
outputnone格式设置生成输出type=<type>[,<key>=<value>]
loginsnone用于登录多个注册表的选项

多注册表推送示例

settings:
  repo: a6543/tmp,codeberg.org/6543/tmp
  tag: demo
  logins:
    - registry: https://index.docker.io/v1/
      username: a6543
      password:
        from_secret: docker_token
    - registry: https://codeberg.org
      username: "6543"
      password:
        from_secret: cb_token