Plugin for woodpecker to deploy helm charts using helm3
Go to file
Erin Call a21848484b
Initialize run.Configs in the NewSTEP functions [#67]
This fixes the run package's leaky abstraction; other packages no longer
need to know or care that run.Config even exists.

Note that since the various Steps now depend on having a non-nil pointer
to a run.Config, it's unsafe (or at least risky) to initialize them
directly. They should be created with their NewSTEPNAME functions. All
their fields are now private, to reflect this.
2020-01-17 10:55:12 -08:00
.github Mention the external docs in the PR template [#63] 2020-01-07 13:04:21 -08:00
assets Mention that EKS isn't currently supported [#5] 2019-12-27 10:49:22 -08:00
cmd/drone-helm Put the Config in a new env package [#67] 2020-01-14 10:32:20 -08:00
docs Mention aliased settings in parameter_reference [#66] 2020-01-09 10:20:20 -08:00
internal Initialize run.Configs in the NewSTEP functions [#67] 2020-01-17 10:55:12 -08:00
.drone.yml Provide better e2e-testing instructions [#12] 2019-12-26 15:21:34 -08:00
.gitignore Directions on how to setup custom build of images till PR gets merged 2019-12-31 14:19:56 -05:00
CODE_OF_CONDUCT.md Use the Contributor Covenant code of conduct [#12] 2019-12-25 11:47:41 -08:00
Dockerfile pin version of docker image to alpine/helm:3.0.2 2019-12-31 17:57:32 -05:00
go.mod Fix godotenv dependency in go.mod 2020-01-08 11:08:39 -08:00
go.sum Load .env files on startup [#6] 2020-01-02 09:05:26 -08:00
LICENSE Use the apache 2.0 license [#23] 2019-12-27 11:18:13 -08:00
README.md Use "backward-compatible", not "backwardS" 2020-01-08 11:04:30 -08:00

Drone plugin for Helm 3

Build Status Go Report

This plugin provides an interface between Drone and Helm 3:

  • Lint your charts
  • Deploy your service
  • Delete your service

The plugin is inpsired by drone-helm, which fills the same role for Helm 2. It provides a comparable feature-set and the configuration settings are backward-compatible.

Example configuration

The examples below give a minimal and sufficient configuration for each use-case. For a full description of each command's settings, see docs/parameter_reference.md.

Linting

steps:
  - name: lint
    image: pelotech/drone-helm3
    settings:
      mode: lint
      chart: ./

Installation

steps:
  - name: deploy
    image: pelotech/drone-helm3
    settings:
      mode: upgrade
      chart: ./
      release: my-project
    environment:
      KUBE_API_SERVER: https://my.kubernetes.installation/clusters/a-1234
      KUBE_TOKEN:
        from_secret: kubernetes_token

Uninstallation

steps:
  - name: uninstall
    image: pelotech/drone-helm3
    settings:
      mode: uninstall
      release: my-project
    environment:
      KUBE_API_SERVER: https://my.kubernetes.installation/clusters/a-1234
      KUBE_TOKEN:
        from_secret: kubernetes_token

Upgrading from drone-helm

drone-helm3 is largely backward-compatible with drone-helm. There are some known differences:

  • You'll need to migrate the deployments in the cluster helm-v2-to-helm-v3.
  • EKS is not supported. See #5 for more information.
  • The prefix setting is no longer supported. If you were relying on the prefix setting with secrets: [...], you'll need to switch to the from_secret syntax.
  • During uninstallations, the release history is purged by default. Use keep_history: true to return to the old behavior.
  • Several settings no longer have any effect. The plugin will produce warnings if any of these are present:
    • purge -- this is the default behavior in Helm 3
    • recreate_pods
    • tiller_ns
    • upgrade
    • canary_image
    • client_only
    • stable_repo_url
  • Several settings have been renamed, to clarify their purpose and provide a more consistent naming scheme. For backward-compatibility, the old names are still available as aliases. If the old and new names are both present, the updated form takes priority. Conflicting settings will make your .drone.yml harder to understand, so we recommend updating to the new names:
    • helm_command is now mode ° helm_repos is now add_repos
    • api_server is now kube_api_server
    • service_account is now kube_service_account
    • kubernetes_token is now kube_token
    • kubernetes_certificate is now kube_certificate
    • wait is now wait_for_upgrade
    • force is now force_upgrade

Since helm 3 does not require Tiller, we also recommend switching to a service account with less-expansive permissions.

Contributing

This repo is setup in a way that if you enable a personal drone server to build your fork it will build and publish your image (makes it easier to test PRs and use the image till the contributions get merged)

  • Build local DRONE_REPO_OWNER=josmo DRONE_REPO_NAME=drone-ecs drone exec
  • on your server (or cloud.drone.io) just make sure you have DOCKER_USERNAME, DOCKER_PASSWORD, and PLUGIN_REPO set as secrets