为什么我的安全Travis CI环境变量不起作用?

时间:2019-09-29 06:17:23

标签: github travis-ci badge infection

我每次部署到Github时,Travis CI在报告末尾都说:

  

Dashboard report has not been sent: neither INFECTION_BADGE_API_KEY nor STRYKER_DASHBOARD_API_KEY were found in the environment

我尝试设置环境变量至少四次:

起初,我的.travis.yml文件看起来像这样:

language: php

php:
  - '7.3'

install: composer update

script:
  - vendor/bin/infection --min-covered-msi=90 --min-msi=90

dd:
  secure: "A/s0...bS8="

这是因为我错过了travis encrypt STRYKER_DASHBOARD_API_KEY=<my-secret-uuid-key> --add--add中的一个破折号(来自链接的第4步)。

当我修复它时,会给出相同的错误消息:

-dd:
-  secure: A/s0...bS8=
+env:
+  global:
+    secure: A/s0...bS8=

随后的每次尝试都给出了相同的错误。尝试生成新密钥:

-    secure: A/s0...bS8=
+    - secure: iQra...Ol0=

引用加密值:

-    - secure: iQra...Ol0=
+    - secure: 'iQra...Ol0='

不使用--add选项,而是从控制台手动复制并粘贴到配置文件中:

-    - secure: 'iQra...Ol0='
+    secure: "CPPE...3nk="

什么是使它正常工作的正确方法?

1 个答案:

答案 0 :(得分:1)

TL; DR:现在在专业服务器上创建了新的免费Travis CI帐户。


难以诊断,易于修复! The instructions for creating a secure environment variable on Travis CI没提到现在所有新帐户都在专业服务器(travis-ci.com)上创建,并且不再在旧的免费服务器(travis-ci.org)上创建,即使是免费帐户!更令人困惑的是,您可以在两个地址上看到相同的帐户!

因此,要加密环境变量,必须将服务器标志(--pro--com)传递给travis encrypt

travis encrypt --pro MY_SECRET_ENV=super_secret --add

travis encrypt --com MY_SECRET_ENV=super_secret --add

用变量名替换MY_SECRET_ENV,用实际值替换super_secret

如果您的免费帐户仍在travis-ci.org上,则可以继续使用:

travis encrypt MY_SECRET_ENV=super_secret --add

travis encrypt --org MY_SECRET_ENV=super_secret --add

要让travis encrypt输出可以成功解密的值,您必须知道您的帐户位于哪台服务器上,而这对于新用户来说非常令人困惑。