2017-09-03 373 views
0

我已經構建了一個OSS項目https://github.com/datlinq/scalafiniti Travis-ci管道完美地工作,但最終完成了一步。sbt發佈使用pgpPassphrase通過Travis CI在Sonatype Nexus上簽名

我跟着這些指南:

本地我得到了做工精細的所有步驟,實際上發佈到了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也被加密特拉維斯env和可用於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

所以,它之所以提示一個密碼並忽略所有基於sbt的配置是由於構建腳本使用本地gnupg安裝而不是使用sbt-pgp(bouncy castle)打包的配置。 本地gpg希望你第一次手動輸入密碼。硬盤使用TravisCI

了一點,所以解決方案就是忽略本地GPG和使用捆綁的一個,使用了pgpPassphrase設置

回首文檔:

在實際的第一行中有一行說:

如果您使用內置的Bouncy Castle PGP實施,請跳過此步驟。

使用GPG命令行工具的第一步是使sbt-pgp gpg-> aware。

useGpg := true

因此,解決辦法是設置useGpg := false

欲瞭解更多詳細信息,看看目前的回購: https://github.com/datlinq/scalafiniti

或查看博客(這是我後來發現的)https://alexn.org/blog/2017/08/16/automatic-releases-sbt-travis.html