A WoodpeckerCI plugin for
buildctl
to build container images using a remote builtkitd instance.
https://hub.docker.com/r/kokuwaio/buildctl
|
||
---|---|---|
.github | ||
.woodpecker | ||
.justfile | ||
.markdownlint.yaml | ||
.yamllint.yaml | ||
Dockerfile | ||
Dockerfile.dockerignore | ||
entrypoint.sh | ||
LICENSE | ||
README.md | ||
renovate.json |
Buildctl WoodpeckerCI Plugin
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
- preconfigured for reproduceable builds
- attestations not yet supported because of github.com/moby/buildkit/issues/3552
- runnable with local buildkit daemon
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 | ||
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 |