我正在使用drone-ci(0.8.0-rc.5)作为CI工具和drone-email插件来发送电子邮件。如果构建成功或失败,我想发送通知。我使用Gmail SMTP服务器发送电子邮件。

我的.drone.yml文件:

notify:
  image: drillster/drone-email
  host: ${EMAIL_HOST}
  port: ${EMAIL_PORT}
  username: ${EMAIL_USERNAME}
  password: ${EMAIL_PASSWORD}
  from: test@test.com
  recipients: [ user@test.com ]

secret 配置如下图所示:
docker - 使用无人机电子邮件插件时,无人机CI无法看到 secret 变量-LMLPHP
构建完成后,我收到以下异常:
time="2017-09-20T02:14:10Z" level=error msg="Error while dialing SMTP server: dial tcp :587: getsockopt: connection refused" dial tcp :587: getsockopt: connection refused
当我对yml文件中的值进行硬编码时,通知起作用。所以我想知道我在做什么 secret 或如何解决这种情况?

最佳答案

您正在使用的语法${secret}在drone 0.6中已弃用,并替换为以下语法:

pipeline:
  notify:
    image: drillster/drone-email
    from: test@test.com
    recipients: [ user@test.com ]
    secrets: [EMAIL_HOST, EMAIL_PORT, EMAIL_USERNAME, EMAIL_PASSWORD]

上面的语法指示无人机将请求的 secret 信息提供给插件。 secret 作为环境变量公开到容器中,并由插件使用。

进一步阅读
  • http://docs.drone.io/manage-secrets/
  • http://docs.drone.io/secrets-not-working/#variable-expansion
  • http://docs.drone.io/release-0.6.0(请参阅重大更改部分)
  • 关于docker - 使用无人机电子邮件插件时,无人机CI无法看到 secret 变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46312429/

    10-08 20:30