我已经构建了一个OSS项目https://github.com/datlinq/scalafiniti Travis-ci管道工作正常,但最后一步。
我遵循了这些指南:
在本地,我已将所有步骤正常工作并实际发布到Nexus。
在.travis.yml
我在安装前导入密钥(在travis.ci env中加密)
before_install:
- echo "$PGP_SECRET" | base64 --decode | gpg --import
- echo "$PGP_TRUST" | base64 --decode | gpg --import-ownertrust
$PGP_PASS
也在Travis环境中加密,可用于build.sbt
我检查过它实际上得到了这个命令中的键
pgpPassphrase := sys.env.get("PGP_PASS").map(_.toArray)
现在如果Travis运行命令
sbt publishSigned
它仍会提示输入密钥
的密码您需要使用密码为用户解锁密钥: " com.datlinq.datalabs(Datalabs OSS的关键)" 2048位RSA密钥,ID 305DA15D,创建于2017年9月1日
输入密码:
我不知道应该怎样做才能使这项工作
此时刻被捕获:
代码: https://github.com/datlinq/scalafiniti/tree/0d8a6a92bf111bae2a1081b17005a649f8fd00c9 构建日志: https://travis-ci.org/datlinq/scalafiniti/builds/271328874
答案 0 :(得分:0)
因此,它提示输入密码并忽略所有基于sbt的配置的原因是由于构建脚本使用本地gnupg安装而不是使用sbt-pgp(bouncy castle)打包的安装。 本地gpg希望您第一次手动输入密码。使用TravisCI有点困难
所以解决方案是忽略本地gpg并使用捆绑的,使用pgpPassphrase
设置
回顾文档:
在第一行中,它实际上说:
如果您正在使用内置的Bouncy Castle PGP实施,请跳过此步骤。
使用GPG命令行工具的第一步是使sbt-pgp gpg-> gt知道。
useGpg := true
所以解决方案是设置useGpg := false
有关详细信息,请查看当前的回购: https://github.com/datlinq/scalafiniti
或者查看此博客(我稍后会发现)https://alexn.org/blog/2017/08/16/automatic-releases-sbt-travis.html