A thin shim-wrapper around Google Kaniko to make it behave like the Drone Docker plugin
Go to file
Nicolai Ort 9e5f2c7ae1
All checks were successful
ci/woodpecker/push/build Pipeline was successful
Typo
2023-11-04 15:35:46 +01:00
.woodpecker Typo 2023-11-04 15:35:46 +01:00
.gitignore Basic gitignore 2022-06-11 18:36:25 +02:00
Dockerfile Bumped kaniko version 2023-07-07 16:14:56 +02:00
LICENSE Switched License to MIT 2022-06-11 19:13:46 +02:00
plugin.sh Copy-paste mistake 2022-06-11 19:53:07 +02:00
README.md Small readme update 2022-06-11 21:51:00 +02:00
renovate.json Basic Renovate config 2022-06-11 19:05:08 +02:00

ODIT Logo

Drone Kaniko

Drone (self-hosted) with branch

A thin shim-wrapper around the official Google Kaniko Docker image to make it behave like the Drone Docker plugin.

Based on the original drone-kaniko by Banzai Cloud Modified by ODIT.Services to enable local builds to tar.

Settings 🛠️

  • registry: Your registry (defaults to docker hub)
  • repo: The image repository
  • tags: The image tags (as a simple string or an array)
  • username: Username for the chosen docker registry
  • password: Password for the chosen docker registry
  • nopush: Disable Pushing to registry (boolean)
  • tarpath: Export the image to tar (relative path)
  • cache: Use cached intermediate containers (boolean)
  • newrun: Use the experimental run implementation for detecting changes without requiring file system snapshots. (boolean)
  • snapshot_mode: Set how kaniko will snapshot the filesystem (full,redo,time).
  • skip_tls_verify: Skip SSL/TLS certificate verification (boolean)
  • build_args: Pass custom arguments to docker build
  • build_args_from_env: Pass the envvars as custom arguments to docker build
  • json_key: Provide registry auth data via json_key (mostly for gcr)
  • auto_tag: generate tag names automatically based on git branch and git tag

Examples

kind: pipeline
name: default

steps:
- name: publish
  image: registry.odit.services/library/drone-kaniko
  settings:
    registry: registry.example.com # if not provided index.docker.io is supposed
    repo: registry.example.com/example-project
    tags: ${DRONE_COMMIT_SHA}
    cache: true
    skip_tls_verify: false # set to true for testing registries ONLY with self-signed certs
    build_args:
    - COMMIT_SHA=${DRONE_COMMIT_SHA}
    - COMMIT_AUTHOR_EMAIL=${DRONE_COMMIT_AUTHOR_EMAIL}
    username:
      from_secret: docker-username
    password:
      from_secret: docker-password

Pushing to GCR:

kind: pipeline
name: default

steps:
- name: publish
  image: registry.odit.services/library/drone-kaniko
  settings:
    registry: gcr.io
    repo: example.com/example-project
    tags: ${DRONE_COMMIT_SHA}
    cache: true
    json_key:
      from_secret: google-application-credentials

Use .tags file for tagging

Similarily to official drone-docker plugin you can use .tags file to embed some custom logic for creating tags for an image.

kind: pipeline
name: default

steps:
- name: build
  image: golang
  commands:
      - go get 
      - go build
      - make versiontags > .tags
- name: publish
  image: registry.odit.services/library/drone-kaniko
  settings:
    registry: registry.example.com 
    repo: registry.example.com/example-project
    # tags: ${DRONE_COMMIT_SHA} <= it must be left undefined 
    username:
      from_secret: docker-username
    password:
      from_secret: docker-password

Auto tag

Set auto_tag: true.

kind: pipeline
name: default

steps:
- name: build
  image: golang
  commands:
      - go get 
      - go build
- name: publish
  image: registry.odit.services/library/drone-kaniko
  settings:
    registry: registry.example.com 
    repo: registry.example.com/example-project
    auto_tag: true # higher priority then .tags file
    # tags: ${DRONE_COMMIT_SHA} <= it must be left undefined to use auto_tag
    username:
      from_secret: docker-username
    password:
      from_secret: docker-password