dbdf13277d
From de43f3afb698f9e141145b8715cad396ac08f3e6, both the code and the commit message used singular form of expand_tag, but the example in the README used the plural form of expand_tags. Based on that I assume the singular form was the intention and the plural form in the README was a typo (the plural form does not work because the code only checks for the singular form env var). |
||
---|---|---|
.github | ||
cmd | ||
docker | ||
pkg | ||
scripts | ||
.drone.yml | ||
.gitignore | ||
go.mod | ||
go.sum | ||
kaniko_test.go | ||
kaniko.go | ||
LICENSE | ||
README.md |
drone-kaniko
Drone kaniko plugin uses kaniko to build and publish Docker images to a container registry.
Build
Build the binaries with the following commands:
export GOOS=linux
export GOARCH=amd64
export CGO_ENABLED=0
export GO111MODULE=on
go build -v -a -tags netgo -o release/linux/amd64/kaniko-docker ./cmd/kaniko-docker
go build -v -a -tags netgo -o release/linux/amd64/kaniko-gcr ./cmd/kaniko-gcr
go build -v -a -tags netgo -o release/linux/amd64/kaniko-ecr ./cmd/kaniko-ecr
Docker
Build the Docker images with the following commands:
docker build \
--label org.label-schema.build-date=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
--label org.label-schema.vcs-ref=$(git rev-parse --short HEAD) \
--file docker/docker/Dockerfile.linux.amd64 --tag plugins/kaniko .
docker build \
--label org.label-schema.build-date=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
--label org.label-schema.vcs-ref=$(git rev-parse --short HEAD) \
--file docker/gcr/Dockerfile.linux.amd64 --tag plugins/kaniko-gcr .
docker build \
--label org.label-schema.build-date=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
--label org.label-schema.vcs-ref=$(git rev-parse --short HEAD) \
--file docker/ecr/Dockerfile.linux.amd64 --tag plugins/kaniko-ecr .
Usage
Manual Tagging
docker run --rm \
-e PLUGIN_TAGS=1.2,latest \
-e PLUGIN_DOCKERFILE=/drone/Dockerfile \
-e PLUGIN_REPO=foo/bar \
-e PLUGIN_USERNAME=foo \
-e PLUGIN_PASSWORD=bar \
-v $(pwd):/drone \
-w /drone \
plugins/kaniko:linux-amd64
With expanded tagging enabled, semantic versions can be passed to PLUGIN_TAGS directly for expansion.
Note: this feature only works for build labels. Artifact labels are not supported.
docker run --rm \
-e PLUGIN_TAGS=v1.2.3,latest \
-e PLUGIN_EXPAND_TAG=true \
-v $(pwd):/drone \
-w /drone \
plugins/kaniko:linux-amd64
would both be equivalent to
PLUGIN_TAGS=1,1.2,1.2.3,latest
This allows for passing $DRONE_TAG
directly as a tag for repos that use semver tags.
To avoid confusion between repo tags and image tags, PLUGIN_EXPAND_TAG
also recognizes a semantic version
without the v
prefix. As such, the following is also equivalent to the above:
docker run --rm \
-e PLUGIN_TAGS=1.2.3,latest \
-e PLUGIN_EXPAND_TAG=true \
-v $(pwd):/drone \
-w /drone \
plugins/kaniko:linux-amd64
Auto Tagging
The auto tag feature of docker plugin is also supported.
When auto tagging is enabled, if any of the case is matched below, a docker build will be pushed with auto generated tags. Otherwise the docker build will be skipped.
Note: this feature only works for build labels. Artifact labels are not supported.
Git Tag Push:
docker run --rm \
-e DRONE_COMMIT_REF=refs/tags/v1.2.3 \
-e PLUGIN_REPO=foo/bar \
-e PLUGIN_USERNAME=foo \
-e PLUGIN_PASSWORD=bar \
-e PLUGIN_AUTO_TAG=true \
-v $(pwd):/drone \
-w /drone \
plugins/kaniko:linux-amd64
Tags to push:
- 1.2.3
- 1.2
- 1
Git Commit Push in default branch:
docker run --rm \
-e DRONE_COMMIT_REF=refs/heads/master \
-e DRONE_REPO_BRANCH=main \
-e PLUGIN_REPO=foo/bar \
-e PLUGIN_USERNAME=foo \
-e PLUGIN_PASSWORD=bar \
-e PLUGIN_AUTO_TAG=true \
-v $(pwd):/drone \
-w /drone \
plugins/kaniko:linux-amd64
Tags to push:
- latest