From 2404bc12a1ce7d2427ef7ceef99cfa768fe892cf Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sat, 11 Sep 2021 21:15:02 +0200 Subject: [PATCH] docs: add parameter documentation (#53) --- .dictionary | 17 ++ .drone.jsonnet | 59 +++++- .drone.yml | 289 +++++++++++++++--------------- .github/settings.yml | 10 ++ .markdownlint.yml | 6 + README.md | 38 +--- _docs/_index.md | 171 ++++++++++++++++++ cmd/drone-docker-buildx/config.go | 84 ++++----- 8 files changed, 448 insertions(+), 226 deletions(-) create mode 100644 .dictionary create mode 100644 .markdownlint.yml create mode 100644 _docs/_index.md diff --git a/.dictionary b/.dictionary new file mode 100644 index 0000000..9c0d8c7 --- /dev/null +++ b/.dictionary @@ -0,0 +1,17 @@ +url +ip +mtu +dns +ipv6 +buildkit +json +config +dockerfile +og +gzip +json +config +host:ip +drone-docker-buildx +multiarch +buildx diff --git a/.drone.jsonnet b/.drone.jsonnet index 928ee35..b7ca95b 100644 --- a/.drone.jsonnet +++ b/.drone.jsonnet @@ -235,6 +235,60 @@ local PipelineBuildContainer(arch='amd64') = { }, }; +local PipelineDocs = { + kind: 'pipeline', + name: 'docs', + platform: { + os: 'linux', + arch: 'amd64', + }, + concurrency: { + limit: 1, + }, + steps: [ + { + name: 'markdownlint', + image: 'thegeeklab/markdownlint-cli', + commands: [ + "markdownlint 'docs/content/**/*.md' 'README.md' 'CONTRIBUTING.md'", + ], + }, + { + name: 'spellcheck', + image: 'node:lts-alpine', + commands: [ + 'npm install -g spellchecker-cli', + "spellchecker --files '_docs/**/*.md' 'README.md' 'CONTRIBUTING.md' -d .dictionary -p spell indefinite-article syntax-urls --no-suggestions", + ], + environment: { + FORCE_COLOR: true, + NPM_CONFIG_LOGLEVEL: 'error', + }, + }, + { + name: 'publish', + image: 'plugins/gh-pages', + settings: { + username: { from_secret: 'github_username' }, + password: { from_secret: 'github_token' }, + pages_directory: '_docs/', + target_branch: 'docs', + }, + when: { + ref: ['refs/heads/main'], + }, + }, + ], + depends_on: [ + 'build-binaries', + 'build-container-amd64', + 'build-container-arm64', + ], + trigger: { + ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'], + }, +}; + local PipelineNotifications = { kind: 'pipeline', image_pull_secrets: ['docker_config'], @@ -320,9 +374,7 @@ local PipelineNotifications = { }, ], depends_on: [ - 'build-binaries', - 'build-container-amd64', - 'build-container-arm64', + 'docs', ], trigger: { ref: ['refs/heads/main', 'refs/tags/**'], @@ -335,5 +387,6 @@ local PipelineNotifications = { PipelineBuildBinaries, PipelineBuildContainer(arch='amd64'), PipelineBuildContainer(arch='arm64'), + PipelineDocs, PipelineNotifications, ] diff --git a/.drone.yml b/.drone.yml index c8020ea..0abaee3 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,106 +1,96 @@ --- +image_pull_secrets: +- docker_config kind: pipeline name: test - platform: - os: linux arch: amd64 - + os: linux steps: -- name: staticcheck - image: golang:1.16 - commands: +- commands: - go run honnef.co/go/tools/cmd/staticcheck ./... + image: golang:1.16 + name: staticcheck volumes: - name: gopath path: /go - -- name: lint - image: golang:1.16 - commands: +- commands: - go run golang.org/x/lint/golint -set_exit_status ./... + image: golang:1.16 + name: lint volumes: - name: gopath path: /go - -- name: vet - image: golang:1.16 - commands: +- commands: - go vet ./... + image: golang:1.16 + name: vet volumes: - name: gopath path: /go - -- name: test - image: golang:1.16 - commands: +- commands: - go test -cover ./... + image: golang:1.16 + name: test volumes: - name: gopath path: /go - -volumes: -- name: gopath - temp: {} - -image_pull_secrets: -- docker_config - trigger: ref: - refs/heads/main - refs/tags/** - refs/pull/** - +volumes: +- name: gopath + temp: {} --- +depends_on: +- test +image_pull_secrets: +- docker_config kind: pipeline name: build-binaries - platform: - os: linux arch: amd64 - + os: linux steps: -- name: build - image: techknowlogick/xgo:go-1.16.x - commands: - - "[ -z \"${DRONE_TAG}\" ] && BUILD_VERSION=${DRONE_COMMIT_SHA:0:8} || BUILD_VERSION=${DRONE_TAG##v}" +- commands: + - '[ -z "${DRONE_TAG}" ] && BUILD_VERSION=${DRONE_COMMIT_SHA:0:8} || BUILD_VERSION=${DRONE_TAG##v}' - mkdir -p release/ - - cd cmd/drone-docker-buildx && xgo -ldflags "-s -w -X main.version=$BUILD_VERSION" -tags netgo -targets 'linux/amd64,linux/arm-6,linux/arm-7,linux/arm64' -out drone-docker-buildx . + - cd cmd/drone-docker-buildx && xgo -ldflags "-s -w -X main.version=$BUILD_VERSION" + -tags netgo -targets 'linux/amd64,linux/arm-6,linux/arm-7,linux/arm64' -out drone-docker-buildx + . - mv /build/* /drone/src/release/ - ls -l /drone/src/release/ - -- name: executable - image: alpine - commands: + image: techknowlogick/xgo:go-1.16.x + name: build +- commands: - $(find release/ -executable -type f | grep drone-docker-buildx-linux-amd64) --help - -- name: compress image: alpine - commands: + name: executable +- commands: - apk add upx - find release/ -maxdepth 1 -executable -type f -exec upx {} \; - ls -lh release/ - -- name: checksum image: alpine - commands: + name: compress +- commands: - cd release/ && sha256sum * > sha256sum.txt - -- name: changelog-generate - image: thegeeklab/git-chglog - commands: + image: alpine + name: checksum +- commands: - git fetch -tq - - git-chglog --no-color --no-emoji -o CHANGELOG.md ${DRONE_TAG:---next-tag unreleased unreleased} - -- name: changelog-format - image: thegeeklab/alpine-tools - commands: + - git-chglog --no-color --no-emoji -o CHANGELOG.md ${DRONE_TAG:---next-tag unreleased + unreleased} + image: thegeeklab/git-chglog + name: changelog-generate +- commands: - prettier CHANGELOG.md - prettier -w CHANGELOG.md - -- name: publish - image: plugins/github-release + image: thegeeklab/alpine-tools + name: changelog-format +- image: plugins/github-release + name: publish settings: api_key: from_secret: github_token @@ -112,36 +102,32 @@ steps: when: ref: - refs/tags/** - -image_pull_secrets: -- docker_config - trigger: ref: - refs/heads/main - refs/tags/** - refs/pull/** - +--- depends_on: - test - ---- +image_pull_secrets: +- docker_config kind: pipeline name: build-container-amd64 - platform: - os: linux arch: amd64 - + os: linux steps: -- name: build +- commands: + - '[ -z "${DRONE_TAG}" ] && BUILD_VERSION=${DRONE_COMMIT_SHA:0:8} || BUILD_VERSION=${DRONE_TAG##v}' + - go build -v -ldflags "-X main.version=$BUILD_VERSION" -a -tags netgo -o release/amd64/drone-docker-buildx + ./cmd/drone-docker-buildx image: golang:1.16 - commands: - - "[ -z \"${DRONE_TAG}\" ] && BUILD_VERSION=${DRONE_COMMIT_SHA:0:8} || BUILD_VERSION=${DRONE_TAG##v}" - - go build -v -ldflags "-X main.version=$BUILD_VERSION" -a -tags netgo -o release/amd64/drone-docker-buildx ./cmd/drone-docker-buildx - -- name: dryrun + name: build +- depends_on: + - build image: plugins/docker:19 + name: dryrun settings: config: from_secret: docker_config @@ -155,11 +141,10 @@ steps: when: ref: - refs/pull/** - depends_on: - - build - -- name: publish-dockerhub +- depends_on: + - dryrun image: plugins/docker:19 + name: publish-dockerhub settings: auto_tag: true auto_tag_suffix: amd64 @@ -175,11 +160,10 @@ steps: ref: - refs/heads/main - refs/tags/** - depends_on: +- depends_on: - dryrun - -- name: publish-quay image: plugins/docker:19 + name: publish-quay settings: auto_tag: true auto_tag_suffix: amd64 @@ -196,38 +180,32 @@ steps: ref: - refs/heads/main - refs/tags/** - depends_on: - - dryrun - -image_pull_secrets: -- docker_config - trigger: ref: - refs/heads/main - refs/tags/** - refs/pull/** - +--- depends_on: - test - ---- +image_pull_secrets: +- docker_config kind: pipeline name: build-container-arm64 - platform: - os: linux arch: arm64 - + os: linux steps: -- name: build +- commands: + - '[ -z "${DRONE_TAG}" ] && BUILD_VERSION=${DRONE_COMMIT_SHA:0:8} || BUILD_VERSION=${DRONE_TAG##v}' + - go build -v -ldflags "-X main.version=$BUILD_VERSION" -a -tags netgo -o release/arm64/drone-docker-buildx + ./cmd/drone-docker-buildx image: golang:1.16 - commands: - - "[ -z \"${DRONE_TAG}\" ] && BUILD_VERSION=${DRONE_COMMIT_SHA:0:8} || BUILD_VERSION=${DRONE_TAG##v}" - - go build -v -ldflags "-X main.version=$BUILD_VERSION" -a -tags netgo -o release/arm64/drone-docker-buildx ./cmd/drone-docker-buildx - -- name: dryrun + name: build +- depends_on: + - build image: plugins/docker:19 + name: dryrun settings: config: from_secret: docker_config @@ -241,11 +219,10 @@ steps: when: ref: - refs/pull/** - depends_on: - - build - -- name: publish-dockerhub +- depends_on: + - dryrun image: plugins/docker:19 + name: publish-dockerhub settings: auto_tag: true auto_tag_suffix: arm64 @@ -261,11 +238,10 @@ steps: ref: - refs/heads/main - refs/tags/** - depends_on: +- depends_on: - dryrun - -- name: publish-quay image: plugins/docker:19 + name: publish-quay settings: auto_tag: true auto_tag_suffix: arm64 @@ -282,32 +258,67 @@ steps: ref: - refs/heads/main - refs/tags/** - depends_on: - - dryrun - -image_pull_secrets: -- docker_config - trigger: ref: - refs/heads/main - refs/tags/** - refs/pull/** - +--- +concurrency: + limit: 1 depends_on: -- test - +- build-binaries +- build-container-amd64 +- build-container-arm64 +kind: pipeline +name: docs +platform: + arch: amd64 + os: linux +steps: +- commands: + - markdownlint 'docs/content/**/*.md' 'README.md' 'CONTRIBUTING.md' + image: thegeeklab/markdownlint-cli + name: markdownlint +- commands: + - npm install -g spellchecker-cli + - spellchecker --files '_docs/**/*.md' 'README.md' 'CONTRIBUTING.md' -d .dictionary + -p spell indefinite-article syntax-urls --no-suggestions + environment: + FORCE_COLOR: true + NPM_CONFIG_LOGLEVEL: error + image: node:lts-alpine + name: spellcheck +- image: plugins/gh-pages + name: publish + settings: + pages_directory: _docs/ + password: + from_secret: github_token + target_branch: docs + username: + from_secret: github_username + when: + ref: + - refs/heads/main +trigger: + ref: + - refs/heads/main + - refs/tags/** + - refs/pull/** --- +depends_on: +- docs +image_pull_secrets: +- docker_config kind: pipeline name: notifications - platform: - os: linux arch: amd64 - + os: linux steps: -- name: manifest-dockerhub - image: plugins/manifest +- image: plugins/manifest + name: manifest-dockerhub settings: auto_tag: true ignore_missing: true @@ -319,9 +330,8 @@ steps: when: status: - success - -- name: manifest-quay - image: plugins/manifest +- image: plugins/manifest + name: manifest-quay settings: auto_tag: true ignore_missing: true @@ -333,10 +343,7 @@ steps: when: status: - success - -- name: pushrm-dockerhub - image: chko/docker-pushrm:1 - environment: +- environment: DOCKER_PASS: from_secret: docker_password DOCKER_USER: @@ -344,23 +351,23 @@ steps: PUSHRM_FILE: README.md PUSHRM_SHORT: Drone plugin to build multiarch Docker images with buildx PUSHRM_TARGET: thegeeklab/${DRONE_REPO_NAME} + image: chko/docker-pushrm:1 + name: pushrm-dockerhub when: status: - success - -- name: pushrm-quay - image: chko/docker-pushrm:1 - environment: +- environment: APIKEY__QUAY_IO: from_secret: quay_token PUSHRM_FILE: README.md PUSHRM_TARGET: quay.io/thegeeklab/${DRONE_REPO_NAME} + image: chko/docker-pushrm:1 + name: pushrm-quay when: status: - success - -- name: matrix - image: plugins/matrix +- image: plugins/matrix + name: matrix settings: homeserver: from_secret: matrix_homeserver @@ -368,17 +375,15 @@ steps: from_secret: matrix_password roomid: from_secret: matrix_roomid - template: "Status: **{{ build.status }}**
Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.link }}) ({{ build.branch }}) by {{ build.author }}
Message: {{ build.message }}" + template: 'Status: **{{ build.status }}**
Build: [{{ repo.Owner }}/{{ repo.Name + }}]({{ build.link }}) ({{ build.branch }}) by {{ build.author }}
Message: + {{ build.message }}' username: from_secret: matrix_username when: status: - success - failure - -image_pull_secrets: -- docker_config - trigger: ref: - refs/heads/main @@ -386,14 +391,8 @@ trigger: status: - success - failure - -depends_on: -- build-binaries -- build-container-amd64 -- build-container-arm64 - --- kind: signature -hmac: d9ed315db5e0514b6151de65d4281802fad0882c5f71feff2f27a5686a794356 +hmac: 8dfd1d8d060f0e05affcae91a05e8d6184219c6d5f99747bcd73da0739e82c81 ... diff --git a/.github/settings.yml b/.github/settings.yml index 396906d..ab36ba6 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -1,6 +1,7 @@ repository: name: drone-docker-buildx description: Drone plugin to build multiarch Docker images with buildx + homepage: https://drone-plugin-index.geekdocs.de/plugins/drone-docker-buildx topics: drone, drone-plugin private: false @@ -53,3 +54,12 @@ branches: - continuous-integration/drone/pr enforce_admins: null restrictions: null + - name: docs + protection: + required_pull_request_reviews: null + required_status_checks: null + enforce_admins: true + restrictions: + users: [] + teams: + - bot diff --git a/.markdownlint.yml b/.markdownlint.yml new file mode 100644 index 0000000..b59a114 --- /dev/null +++ b/.markdownlint.yml @@ -0,0 +1,6 @@ +--- +default: True +MD013: False +MD041: False +MD004: + style: dash diff --git a/README.md b/README.md index 4f244a4..b7f5fb9 100644 --- a/README.md +++ b/README.md @@ -10,46 +10,12 @@ Drone plugin to build multiarch Docker images with buildx [![Source: GitHub](https://img.shields.io/badge/source-github-blue.svg?logo=github&logoColor=white)](https://github.com/thegeeklab/drone-docker-buildx) [![License: MIT](https://img.shields.io/github/license/thegeeklab/drone-docker-buildx)](https://github.com/thegeeklab/drone-docker-buildx/blob/main/LICENSE) -Drone plugin to build multiarch Docker images with buildx. This plugin is a fork of [drone-plugins/drone-docker](https://github.com/drone-plugins/drone-docker). +Drone plugin to build multiarch Docker images with buildx. This plugin is a fork of [drone-plugins/drone-docker](https://github.com/drone-plugins/drone-docker). You can find the full documentation at You can find the full documentation at [https://drone-plugin-index.geekdocs.de](https://drone-plugin-index.geekdocs.de/plugins/drone-docker-buildx). -## Docker Tags +## Versioning Tags are following the main Docker version e.g. `20.10`, the second part is reflecting the plugin "version". A full example would be `20.10.5`. -## Build - -Build the binary with the following command: - -```Shell -export GOOS=linux -export GOARCH=amd64 -export CGO_ENABLED=0 -export GO111MODULE=on - -go build -v -a -tags netgo -o release/drone-docker-buildx -``` - -Build the Docker image with the following command: - -```Shell -docker build --file docker/Dockerfile.amd64 --tag thegeeklab/drone-docker-buildx . -``` - -## Usage - -> Notice: Be aware that the tis plugin requires privileged capabilities, otherwise the integrated Docker daemon is not able to start. - -```console -docker run --rm \ - -e PLUGIN_TAG=latest \ - -e PLUGIN_REPO=octocat/hello-world \ - -e DRONE_COMMIT_SHA=00000000 \ - -v $(pwd):$(pwd) \ - -w $(pwd) \ - --privileged \ - thegeeklab/drone-docker-buildx --dry-run -``` - ## Community diff --git a/_docs/_index.md b/_docs/_index.md new file mode 100644 index 0000000..dbac872 --- /dev/null +++ b/_docs/_index.md @@ -0,0 +1,171 @@ +--- +title: drone-docker-buildx +--- + +[![Build Status](https://img.shields.io/drone/build/thegeeklab/drone-docker-buildx?logo=drone&server=https%3A%2F%2Fdrone.thegeeklab.de)](https://drone.thegeeklab.de/thegeeklab/drone-docker-buildx) +[![Docker Hub](https://img.shields.io/badge/dockerhub-latest-blue.svg?logo=docker&logoColor=white)](https://hub.docker.com/r/thegeeklab/drone-docker-buildx) +[![Quay.io](https://img.shields.io/badge/quay-latest-blue.svg?logo=docker&logoColor=white)](https://quay.io/repository/thegeeklab/drone-docker-buildx) +[![GitHub contributors](https://img.shields.io/github/contributors/thegeeklab/drone-docker-buildx)](https://github.com/thegeeklab/drone-docker-buildx/graphs/contributors) +[![Source: GitHub](https://img.shields.io/badge/source-github-blue.svg?logo=github&logoColor=white)](https://github.com/thegeeklab/drone-docker-buildx) +[![License: MIT](https://img.shields.io/github/license/thegeeklab/drone-docker-buildx)](https://github.com/thegeeklab/drone-docker-buildx/blob/main/LICENSE) + + + +{{< toc >}} + + + +## Versioning + +Tags are following the main Docker version e.g. `20.10`, the second part is reflecting the plugin "version". A full example would be `20.10.5`. + +## Build + +Build the binary with the following command: + +```Shell +export GOOS=linux +export GOARCH=amd64 +export CGO_ENABLED=0 +export GO111MODULE=on + +go build -v -a -tags netgo -o release/drone-docker-buildx +``` + +Build the Docker image with the following command: + +```Shell +docker build --file docker/Dockerfile.amd64 --tag thegeeklab/drone-docker-buildx . +``` + +## Usage + +{{< hint warning >}} +**Note**\ +Be aware that the this plugin requires privileged capabilities, otherwise the +integrated Docker daemon is not able to start. +{{< /hint >}} + +```Shell +docker run --rm \ + -e PLUGIN_TAG=latest \ + -e PLUGIN_REPO=octocat/hello-world \ + -e DRONE_COMMIT_SHA=00000000 \ + -v $(pwd):$(pwd) \ + -w $(pwd) \ + --privileged \ + thegeeklab/drone-docker-buildx --dry-run +``` + +### Parameters + +dry_run +: disables docker push + +drone_remote_url +: sets the git remote url + +mirror +: sets a registry mirror to pull images + +storage_driver +: sets the docker daemon storage driver + +storage_path +: sets the docker daemon storage path (default `/var/lib/docker`) + +bip +: allows the docker daemon to bride ip address + +mtu +: sets docker daemon custom mtu setting + +custom_dns +: sets custom docker daemon dns server + +custom_dns_search +: sets custom docker daemon dns search domain + +insecure +: allows the docker daemon to use insecure registries + +ipv6 +: enables docker daemon ipv6 support + +experimental +: enables docker daemon experimental mode + +debug +: enables verbose debug mode for the docker daemon + +daemon_off +: disables the startup of the docker daemon + +buildkit_config +: sets content of the docker buildkit json config + +dockerfile +: sets dockerfile to use for the image build (default `./Dockerfile`) + +context +: sets the path of the build context to use (default `./`) + +tags +: sets repository tags to use for the image; tags can also be loaded from a `.tags` file (default `latest`) + +auto_tag +: generates tag names automatically based on git branch and git tag + +auto_tag_suffix +: generates tag names with the given suffix + +build_args +: sets custom build arguments for the build + +build_args_from_env +: forwards environment variables as custom arguments to the build + +quiet +: enables suppression of the build output + +target +: sets the build target to use + +cache_from +: sets images to consider as cache sources + +pull_image +: enforces to pull base image at build time (default `true`) + +compress +: enables compression og the build context using gzip + +repo +: sets repository name for the image + +registry +: sets docker registry to authenticate with (default `https://index.docker.io/v1/`) + +username +: sets username to authenticates with + +password +: sets password to authenticates with + +email +: sets email address to authenticates with + +config +: sets content of the docker daemon json config + +purge +: enables cleanup of the docker environment at the end of a build (default `true`) + +no_cache +: disables the usage of cached intermediate containers + +add_host +: sets additional host:ip mapping + +platforms +: sets target platform for build diff --git a/cmd/drone-docker-buildx/config.go b/cmd/drone-docker-buildx/config.go index 4ee3f34..20c7943 100644 --- a/cmd/drone-docker-buildx/config.go +++ b/cmd/drone-docker-buildx/config.go @@ -10,232 +10,232 @@ func settingsFlags(settings *plugin.Settings) []cli.Flag { return []cli.Flag{ &cli.BoolFlag{ Name: "dry-run", - Usage: "dry run disables docker push", EnvVars: []string{"PLUGIN_DRY_RUN"}, + Usage: "disables docker push", Destination: &settings.Dryrun, }, &cli.StringFlag{ Name: "remote.url", - Usage: "git remote url", EnvVars: []string{"DRONE_REMOTE_URL"}, + Usage: "sets the git remote url", Destination: &settings.Build.Remote, }, &cli.StringFlag{ Name: "daemon.mirror", - Usage: "docker daemon registry mirror", EnvVars: []string{"PLUGIN_MIRROR", "DOCKER_PLUGIN_MIRROR"}, + Usage: "sets a registry mirror to pull images", Destination: &settings.Daemon.Mirror, }, &cli.StringFlag{ Name: "daemon.storage-driver", - Usage: "docker daemon storage driver", EnvVars: []string{"PLUGIN_STORAGE_DRIVER"}, + Usage: "sets the docker daemon storage driver", Destination: &settings.Daemon.StorageDriver, }, &cli.StringFlag{ Name: "daemon.storage-path", - Usage: "docker daemon storage path", - Value: "/var/lib/docker", EnvVars: []string{"PLUGIN_STORAGE_PATH"}, + Usage: "sets the docker daemon storage path", + Value: "/var/lib/docker", Destination: &settings.Daemon.StoragePath, }, &cli.StringFlag{ Name: "daemon.bip", - Usage: "docker daemon bride ip address", EnvVars: []string{"PLUGIN_BIP"}, + Usage: "allows the docker daemon to bride ip address", Destination: &settings.Daemon.Bip, }, &cli.StringFlag{ Name: "daemon.mtu", - Usage: "docker daemon custom mtu setting", EnvVars: []string{"PLUGIN_MTU"}, + Usage: "sets docker daemon custom mtu setting", Destination: &settings.Daemon.MTU, }, &cli.StringSliceFlag{ Name: "daemon.dns", - Usage: "docker daemon dns server", EnvVars: []string{"PLUGIN_CUSTOM_DNS"}, + Usage: "sets custom docker daemon dns server", Destination: &settings.Daemon.DNS, }, &cli.StringSliceFlag{ Name: "daemon.dns-search", - Usage: "docker daemon dns search domains", EnvVars: []string{"PLUGIN_CUSTOM_DNS_SEARCH"}, + Usage: "sets custom docker daemon dns search domain", Destination: &settings.Daemon.DNSSearch, }, &cli.BoolFlag{ Name: "daemon.insecure", - Usage: "docker daemon allows insecure registries", EnvVars: []string{"PLUGIN_INSECURE"}, + Usage: "allows the docker daemon to use insecure registries", Destination: &settings.Daemon.Insecure, }, &cli.BoolFlag{ Name: "daemon.ipv6", - Usage: "docker daemon IPv6 networking", EnvVars: []string{"PLUGIN_IPV6"}, + Usage: "enables docker daemon IPv6 support", Destination: &settings.Daemon.IPv6, }, &cli.BoolFlag{ Name: "daemon.experimental", - Usage: "docker daemon Experimental mode", EnvVars: []string{"PLUGIN_EXPERIMENTAL"}, + Usage: "enables docker daemon experimental mode", Destination: &settings.Daemon.Experimental, }, &cli.BoolFlag{ Name: "daemon.debug", - Usage: "docker daemon executes in debug mode", EnvVars: []string{"PLUGIN_DEBUG", "DOCKER_LAUNCH_DEBUG"}, + Usage: "enables verbose debug mode for the docker daemon", Destination: &settings.Daemon.Debug, }, &cli.BoolFlag{ Name: "daemon.off", - Usage: "don't start the docker daemon", EnvVars: []string{"PLUGIN_DAEMON_OFF"}, + Usage: "disables the startup of the docker daemon", Destination: &settings.Daemon.Disabled, }, &cli.StringFlag{ Name: "daemon.buildkit-config", - Usage: "docker buildkit json config content", EnvVars: []string{"PLUGIN_BUILDKIT_CONFIG"}, + Usage: "sets content of the docker buildkit json config", Destination: &settings.Daemon.BuildkitConfig, }, &cli.StringFlag{ Name: "dockerfile", - Usage: "build dockerfile", - Value: "Dockerfile", EnvVars: []string{"PLUGIN_DOCKERFILE"}, + Usage: "sets dockerfile to use for the image build", + Value: "Dockerfile", Destination: &settings.Build.Dockerfile, }, &cli.StringFlag{ Name: "context", - Usage: "build context", - Value: ".", EnvVars: []string{"PLUGIN_CONTEXT"}, + Usage: "sets the path of the build context to use", + Value: ".", Destination: &settings.Build.Context, }, &cli.StringSliceFlag{ Name: "tags", - Usage: "build tags", - Value: cli.NewStringSlice([]string{"latest"}...), EnvVars: []string{"PLUGIN_TAG", "PLUGIN_TAGS"}, + Usage: "sets repository tags to use for the image", + Value: cli.NewStringSlice([]string{"latest"}...), FilePath: ".tags", Destination: &settings.Build.Tags, }, &cli.BoolFlag{ Name: "tags.auto", - Usage: "default build tags", EnvVars: []string{"PLUGIN_DEFAULT_TAGS", "PLUGIN_AUTO_TAG"}, + Usage: "generates tag names automatically based on git branch and git tag", Destination: &settings.Build.TagsAuto, }, &cli.StringFlag{ Name: "tags.suffix", - Usage: "default build tags with suffix", EnvVars: []string{"PLUGIN_DEFAULT_SUFFIX", "PLUGIN_AUTO_TAG_SUFFIX"}, + Usage: "generates tag names with the given suffix", Destination: &settings.Build.TagsSuffix, }, &cli.StringSliceFlag{ Name: "args", - Usage: "build args", EnvVars: []string{"PLUGIN_BUILD_ARGS"}, + Usage: "sets custom build arguments for the build", Destination: &settings.Build.Args, }, &cli.StringSliceFlag{ Name: "args-from-env", - Usage: "build args", EnvVars: []string{"PLUGIN_BUILD_ARGS_FROM_ENV"}, + Usage: "forwards environment variables as custom arguments to the build", Destination: &settings.Build.ArgsEnv, }, &cli.BoolFlag{ Name: "quiet", - Usage: "quiet docker build", EnvVars: []string{"PLUGIN_QUIET"}, + Usage: "enables suppression of the build output", Destination: &settings.Build.Quiet, }, &cli.StringFlag{ Name: "target", - Usage: "build target", EnvVars: []string{"PLUGIN_TARGET"}, + Usage: "sets the build target to use", Destination: &settings.Build.Target, }, &cli.StringSliceFlag{ Name: "cache-from", - Usage: "images to consider as cache sources", EnvVars: []string{"PLUGIN_CACHE_FROM"}, + Usage: "sets images to consider as cache sources", Destination: &settings.Build.CacheFrom, }, &cli.BoolFlag{ Name: "pull-image", - Usage: "force pull base image at build time", EnvVars: []string{"PLUGIN_PULL_IMAGE"}, + Usage: "enforces to pull base image at build time", Value: true, Destination: &settings.Build.Pull, }, &cli.BoolFlag{ Name: "compress", - Usage: "compress the build context using gzip", EnvVars: []string{"PLUGIN_COMPRESS"}, + Usage: "enables compression og the build context using gzip", Destination: &settings.Build.Compress, }, &cli.StringFlag{ Name: "repo", - Usage: "docker repository", EnvVars: []string{"PLUGIN_REPO"}, + Usage: "sets repository name for the image", Destination: &settings.Build.Repo, }, &cli.StringFlag{ Name: "docker.registry", - Usage: "docker registry", - Value: "https://index.docker.io/v1/", EnvVars: []string{"PLUGIN_REGISTRY", "DOCKER_REGISTRY"}, + Usage: "sets docker registry to authenticate with", + Value: "https://index.docker.io/v1/", Destination: &settings.Login.Registry, }, &cli.StringFlag{ Name: "docker.username", - Usage: "docker username", EnvVars: []string{"PLUGIN_USERNAME", "DOCKER_USERNAME"}, + Usage: "sets username to authenticates with", Destination: &settings.Login.Username, }, &cli.StringFlag{ Name: "docker.password", - Usage: "docker password", EnvVars: []string{"PLUGIN_PASSWORD", "DOCKER_PASSWORD"}, + Usage: "sets password to authenticates with", Destination: &settings.Login.Password, }, &cli.StringFlag{ Name: "docker.email", - Usage: "docker email", EnvVars: []string{"PLUGIN_EMAIL", "DOCKER_EMAIL"}, + Usage: "sets email address to authenticates with", Destination: &settings.Login.Email, }, &cli.StringFlag{ Name: "docker.config", - Usage: "docker json dockerconfig content", EnvVars: []string{"PLUGIN_CONFIG", "DOCKER_PLUGIN_CONFIG"}, + Usage: "sets content of the docker daemon json config", Destination: &settings.Login.Config, }, &cli.BoolFlag{ Name: "docker.purge", - Usage: "docker should cleanup images", EnvVars: []string{"PLUGIN_PURGE"}, + Usage: "enables cleanup of the docker environment at the end of a build", Value: true, Destination: &settings.Cleanup, }, &cli.BoolFlag{ Name: "no-cache", - Usage: "do not use cached intermediate containers", EnvVars: []string{"PLUGIN_NO_CACHE"}, + Usage: "disables the usage of cached intermediate containers", Destination: &settings.Build.NoCache, }, &cli.StringSliceFlag{ Name: "add-host", - Usage: "additional host:IP mapping", EnvVars: []string{"PLUGIN_ADD_HOST"}, + Usage: "sets additional host:ip mapping", Destination: &settings.Build.AddHost, }, &cli.StringSliceFlag{ Name: "platforms", - Usage: "arget platform for build", EnvVars: []string{"PLUGIN_PLATFORMS"}, + Usage: "sets target platform for build", Destination: &settings.Build.Platforms, }, }