Use /run/drone/env as default PLUGIN_ENV_FILE, overwrite env vars with it

It is required for the plugin to work correctly with Kubernetes runner, where
environment variables are created before the pipeline is finished and thus
initial DRONE_BUILD_STATUS is always "success".

Related discourse topic:

https://discourse.drone.io/t/drone-build-status-always-success-in-kubernetes/6627/2

Similar workaround in drone-slack:

59d3676b1c/main.go (L187-L189)
This commit is contained in:
immerrr 2020-05-31 12:36:06 +02:00
parent 8b63a0b1e1
commit e60e502514

13
main.go
View file

@ -10,8 +10,12 @@ import (
func main() {
// Load env-file if it exists first
if env := os.Getenv("PLUGIN_ENV_FILE"); env != "" {
godotenv.Load(env)
envFile, envFileSet := os.LookupEnv("PLUGIN_ENV_FILE")
if !envFileSet {
envFile = "/run/drone/env"
}
if _, err := os.Stat(envFile); err == nil {
godotenv.Overload(envFile)
}
app := cli.NewApp()
@ -84,13 +88,12 @@ func main() {
Usage: "attachment filename(s)",
EnvVar: "PLUGIN_ATTACHMENTS",
},
cli.StringFlag{
cli.StringFlag{
Name: "clienthostname",
Value: DefaultClientHostname,
Usage: "smtp client hostname",
EnvVar: "EMAIL_CLIENTHOSTNAME,PLUGIN_CLIENTHOSTNAME",
},
// Drone environment
// Repo
@ -388,7 +391,7 @@ func run(c *cli.Context) error {
Body: c.String("template.body"),
Attachment: c.String("attachment"),
Attachments: c.StringSlice("attachments"),
ClientHostname: c.String("clienthostname"),
ClientHostname: c.String("clienthostname"),
},
}