# drone-email [![Build Status](https://drone.cryptic.systems/api/badges/volker.raschek/drone-email/status.svg)](https://drone.cryptic.systems/volker.raschek/drone-email) A Drone CI/CD plugin to send build status notifications via email. The plugin is currently available for the following architectures: - x86_64 / amd64 - aarch64 / arm64 - armv7 / arm ## Compile or install the binary locally Checkout the source code of the project and use `make` to compile or install the binary locally. ```bash make all # compile all targets, including shell completions make drone-email # compile only the binary make install # install the binary with completions locally ``` ## Usage All params can be defined via cli flags. A list of all provided cli-flags will be written to `stdout` via `drone-email --help`. Alternatively can be the flags defined via environment variables or a config file. ### Environment variables | name | description | | ------------------------------- | ----------------------------------------------- | | `DRONE_BUILD_CREATED` | Unix timestamp when the build has been created | | `DRONE_BUILD_EVENT` | Drone event which triggered the build | | `DRONE_BUILD_FINISHED` | Unix timestamp when the build has been finished | | `DRONE_BUILD_LINK` | URL to the build pipeline | | `DRONE_BUILD_NUMBER` | Build number | | `DRONE_BUILD_STARTED` | Unix timestamp when the build has been started | | `DRONE_BUILD_STATUS` | Build status | | `DRONE_COMMIT_AUTHOR_NAME` | Name of the commit author | | `DRONE_COMMIT_AUTHOR_AVATAR` | Avatar of the commit author | | `DRONE_COMMIT_AUTHOR_EMAIL` | EMail of the commit author | | `DRONE_COMMIT_BRANCH` | Commit branch | | `DRONE_COMMIT_LINK` | Link to the commit | | `DRONE_COMMIT_MESSAGE` | Commit message | | `DRONE_COMMIT_REF` | Commit reference | | `DRONE_COMMIT_SHA` | Commit sha sum | | `DRONE_DEPLOY_TO` | Deploy target | | `DRONE_JOB_EXIT_CODE` | Job exit code | | `DRONE_JOB_FINISHED` | Unix timestamp when the job has been created | | `DRONE_JOB_NUMBER` | Job number | | `DRONE_JOB_STARTED` | Unix timestamp when the job has been started | | `DRONE_JOB_STATUS` | Job status | | `DRONE_PREV_BUILD_NUMBER` | Previous build number | | `DRONE_PREV_BUILD_STATUS` | Previous build status | | `DRONE_PREV_COMMIT_SHA` | Previous commit sha sum | | `DRONE_PULL_REQUEST` | Number of pull-requests | | `DRONE_REMOTE_URL` | Clone URL of the repository | | `DRONE_REPO` | Name of the repository, including org/owner | | `DRONE_REPO_AVATAR` | Avatar of the repository | | `DRONE_REPO_BRANCH` | Branch of the repository | | `DRONE_REPO_LINK` | URL of the repository | | `DRONE_REPO_NAME` | Name of the repository, without org/owner | | `DRONE_REPO_OWNER` | Org/Owner of the repository | | `DRONE_REPO_PRIVATE` | Private repository | | `DRONE_REPO_SCM` | SCM of the repository | | `DRONE_REPO_TRUSTED` | Trusted repository | | `DRONE_TAG` | Tag | | `DRONE_YAML_SIGNED` | Yaml is singed | | `DRONE_YAML_VERIFIED` | Yaml is trusted | | `SMTP_FROM_ADDRESS` | SMTP-From Address | | `SMTP_FROM_NAME` | SMTP-From Name | | `SMTP_HELO` | SMTP-HELO\EHLO | | `SMTP_HOST` | SMTP-Host | | `SMTP_MAIL_SUBJECT` | Overwrite default mail subject template | | `SMTP_PASSWORD` | SMTP-Password | | `SMTP_PORT` | SMTP-Port | | `SMTP_START_TLS` | SMTP-Start-TLS | | `SMTP_TLS_INSECURE_SKIP_VERIFY` | Trust insecure TLS certificate | | `SMTP_TO_ADDRESSES` | SMTP-To Addresses | | `SMTP_USERNAME` | SMTP-Username | ### Config file Instead of environment variables, a `config.yaml` can be places in `/etc/drone-email` or next to the binary. The yaml should contain the same parameters as the cli flags. For example: ```yaml drone-build-link: https://drone.example.local/max.mustermann/drone-email/1 drone-build-number: 1 drone-build-status: success drone-build-started: 1656354006 drone-commit-author-email: max@example.local drone-commit-author-name: Max Mustermann drone-commit-branch: master drone-commit-sha: 06b44cbfa054f146881e7234f1773008f006a756 drone-repo: max.mustermann/drone-email drone-repo-link: https://git.example.local/max.mustermann/drone-email smtp-from-address: noreply@example.local smtp-from-name: noreply smtp-helo: hostname.example.local smtp-host: smtp1.example.local smtp-password: my-password smtp-username: noreply@example.local ``` ## Known issues ### Multiple success emails despite failed ci step The [drone-runner-kube](https://github.com/drone-runners/drone-runner-kube) does not define the environment variable `DRONE_PREV_BUILD_STATUS` like the [drone-runner-docker](https://github.com/drone-runners/drone-runner-docker). This make it impossible to use the correct email template based on the build state of the previous step. Furthermore, the environment variable `DRONE_BUILD_STATUS` is always defined as `success`, even if the build has failed. Related issues: - [Drillster/drone-email](https://github.com/Drillster/drone-email/issues/69) - [stackoverflow - drone-ci: get status of previous step](https://stackoverflow.com/questions/73096709/drone-ci-get-status-of-previous-step)