buildctl/README.md
Stephan Schnabel 236588001b
All checks were successful
ci/woodpecker/push/dockerhub Pipeline was successful
ci/woodpecker/push/lint Pipeline was successful
ci/woodpecker/push/build Pipeline was successful
ci/woodpecker/push/test/1 Pipeline was successful
ci/woodpecker/push/test/2 Pipeline was successful
Initial draft of plugin.
2025-06-25 13:27:38 +02:00

7.4 KiB

Buildctl WoodpeckerCI Plugin

pulls size dockerfile license prs issues

A WoodpeckerCI plugin for buildctl to build container images using a remote buildkit host.
Also usable with Gitlab, Github or locally, see examples for usage.

Features

Example

WoodpeckerCI:

steps:
  buildctl:
    image: kokuwaio/buildctl
    settings:
      name:
        - registry.example.org/foo:latest
        - registry.example.org/foo:0.0.1
      annotation:
        org.opencontainers.image.title: My Image
        org.opencontainers.image.description: A description.
      build-args:
        NPM_CONFIG_REGISTRY: ${NPM_CONFIG_REGISTRY} # reused from ci env
        FOO: bar
      platform: [linux/amd64, linux/arm64]
      auth:
        registry.example.org:
          username: {from_secret: my_username}
          password: {from_secret: my_password}
        https://index.docker.io/v1/":
          username: {from_secret: docker_io_username}
          password: {from_secret: docker_io_password}

Gitlab:

buildctl:
  stage: lint
  image: kokuwaio/buildctl
  variables:
    PLUGIN_ADDR: tcp://0.8.1.5:1234
    PLUGIN_NAME: registry.example.org/foo:latest,registry.example.org/foo:0.0.1
    PLUGIN_PLATFORM: linux/amd64,linux/arm64
    PLUGIN_AUTH: '{"registry.example.org":{"username":"my-user","password":"changeMe"}}'
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
      changes: [.buildctl.yaml, "**/*.y*ml"]

CLI (will reuse docker credentials of current user):

PLUGIN_ADDR=tcp://0.8.1.5:1234
PLUGIN_NAME=registry.example.org/foo:latest,registry.example.org/foo:0.0.1
PLUGIN_PLATFORM=linux/amd64,linux/arm64
docker run --rm --user=$(id -u) --volume=$HOME:$HOME:ro --workdir=$PWD --env=PLUGIN_ADDR --env=PLUGIN_NAME --env=PLUGIN_PLATFORM kokuwaio/buildctl

Settings

Settings Name Environment Default Description
addr PLUGIN_ADDR $BUILDKIT_HOST Buildkit host to use.
frontend PLUGIN_FRONTEND dockerfile.v0 Only dockerfile frontend supported right now
context PLUGIN_CONTEXT $PWD Context directory to use for build
dockerfile PLUGIN_DOCKERFILE Dockerfile Dockerfile to use.
target PLUGIN_TARGET none Dockerfile target
build-args PLUGIN_BUILD_ARGS none Build args to pass to build
platform PLUGIN_PLATFORM none Target platform for container image.
source-epoch-date PLUGIN_SOURCE_DATE_EPOCH 0 Timestamp to use for reproduceable builds.
name PLUGIN_NAME none Images names where to push the image.
annotation PLUGIN_ANNOTATION none Annotations (also known as labels) to add to image
push PLUGIN_PUSH true Push images if output names are set.
auth PLUGIN_AUTH none Auth for private registries
env-file PLUGIN_ENV_FILE none Source environment values from given file

Alternatives

Image Comment amd64 arm64
kokuwaio/buildctl Woodpecker plugin size size
moby/buildkit not a Woodpecker plugin size size
nordseth/buildctl not a Woodpecker plugin size size
shopstic/buildctl not a Woodpecker plugin, outdated size size
agisoft/buildctl not a Woodpecker plugin, outdated size size