A WoodpeckerCI plugin for buildctl to build container images using a remote builtkitd instance. https://hub.docker.com/r/kokuwaio/buildctl
Find a file
Stephan Schnabel d460532cb8
Some checks failed
ci/woodpecker/push/dockerhub Pipeline was successful
ci/woodpecker/push/build Pipeline failed
ci/woodpecker/push/lint Pipeline was successful
ci/woodpecker/push/test/2 unknown status
ci/woodpecker/push/test/1 unknown status
feat: read built timestamp from git
2025-06-27 12:55:43 +02:00
.github Initial draft of plugin. 2025-06-25 13:27:38 +02:00
.woodpecker Initial draft of plugin. 2025-06-25 13:27:38 +02:00
.justfile Initial draft of plugin. 2025-06-25 13:27:38 +02:00
.markdownlint.yaml Initial draft of plugin. 2025-06-25 13:27:38 +02:00
.yamllint.yaml Initial draft of plugin. 2025-06-25 13:27:38 +02:00
Dockerfile feat: read built timestamp from git 2025-06-27 12:55:43 +02:00
Dockerfile.dockerignore Initial draft of plugin. 2025-06-25 13:27:38 +02:00
entrypoint.sh feat: read built timestamp from git 2025-06-27 12:55:43 +02:00
LICENSE Initial draft of plugin. 2025-06-25 13:27:38 +02:00
README.md feat: read built timestamp from git 2025-06-27 12:55:43 +02:00
renovate.json chore: fix renovate preset location 2025-06-27 11:29:53 +02:00

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 git log -1 --format="%at" 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