我正在使用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: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c7b3a2b4b387b3a2b4b3e9a4a8aa" rel="noreferrer noopener nofollow">[email protected]</a>
recipients: [ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="671214021527130214134904080a" rel="noreferrer noopener nofollow">[email protected]</a> ]
secret 的配置如下图所示: 构建完成后,我收到以下异常:
time="2017-09-20T02:14:10Z"level=error msg="调用 SMTP 服务器时出错:调用 tcp :587: getsockopt: 连接被拒绝"调用 tcp :587: getsockopt: 连接被拒绝
当我在 yml 文件中对值进行硬编码时,通知会起作用。所以我想知道我在 secret 方面做错了什么或者如何解决这种情况?
最佳答案
您使用的语法 ${secret}
在无人机 0.6 中已弃用,并替换为以下语法:
pipeline:
notify:
image: drillster/drone-email
from: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="97e3f2e4e3d7e3f2e4e3b9f4f8fa" rel="noreferrer noopener nofollow">[email protected]</a>
recipients: [ <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="89fcfaecfbc9fdecfafda7eae6e4" rel="noreferrer noopener nofollow">[email protected]</a> ]
secrets: [EMAIL_HOST, EMAIL_PORT, EMAIL_USERNAME, EMAIL_PASSWORD]
上述语法指示无人机向插件提供请求的 secret 。 secret 作为环境变量公开到容器中并由插件使用。
进一步阅读
关于docker - 使用无人机电子邮件插件时,无人机 CI 不会看到 secret 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46312429/