A WoodpeckerCI plugin for
buildctl
to build container images using a remote builtkitd instance.
https://hub.docker.com/r/kokuwaio/buildctl
.github/workflows | ||
.woodpecker | ||
.justfile | ||
.markdownlint.yaml | ||
.yamllint.yaml | ||
Dockerfile | ||
Dockerfile.dockerignore | ||
entrypoint.sh | ||
LICENSE | ||
README.md | ||
renovate.json |
buildctl Plugin
A Woodpecker CI plugin for buildctl to build container images using a remote buildkit host. Also usable with Gitlab, Github or locally, see examples for usage.
Features
- preconfigured for reproduceable builds
- runnable with local docker daemon
Example
Woodpecker:
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.
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
needs: []
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. |
platform |
PLUGIN_PLATFORM | none |
Target platform for container image. |
source-epoch-date |
PLUGIN_SOURCE_DATE_EPOCH | 0 |
Target platform for container image. |
name |
PLUGIN_NAME | none |
Images names where to push the image. |
annotation |
PLUGIN_ANNOTATION | none |
Annotations (also known as labels) to add to image |
auth |
PLUGIN_AUTH | none |
Auth for private registries |
Alternatives
Image | Comment | amd64 | arm64 |
---|---|---|---|
kokuwaio/buildctl | Woodpecker plugin | ||
moby/buildkit | not a Woodpecker plugin | ||
nordseth/buildctl | not a Woodpecker plugin | ||
shopstic/buildctl | not a Woodpecker plugin, outdated | ||
agisoft/buildctl | not a Woodpecker plugin, outdated |