A WoodpeckerCI plugin for
buildctl to build container images using a remote builtkitd instance.
https://hub.docker.com/r/kokuwaio/buildctl
- Shell 73.6%
- Dockerfile 26.4%
| .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 reproducible builds
- attestations not yet supported because of github.com/moby/buildkit/issues/3552
- runnable with local buildkit daemon
Example
WoodpeckerCI:
steps:
buildctl:
depends_on: []
image: kokuwaio/buildctl:v0.29.0
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: (using script is needed because of https://gitlab.com/gitlab-org/gitlab/-/issues/19717)
buildctl:
needs: []
stage: lint
image:
name: kokuwaio/buildctl:v0.29.0
entrypoint: [""]
script: [/usr/local/bin/entrypoint.sh]
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"
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. |
reproducible |
PLUGIN_REPRODUCIBLE | true |
Build with reproducible settings. |
source-date-epoch |
PLUGIN_SOURCE_DATE_EPOCH | git log -1 --format="%at" |
Timestamp to use for reproducible 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 |