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.
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:
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 does
not define the environment variable DRONE_PREV_BUILD_STATUS like the
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: