如何GPG签署由Travis-CI构建的文件

时间:2017-07-19 11:10:03

标签: travis-ci gpg-signature

我发现Travis有一个加密文件的工作流程here

我的用例稍微简单一点,我只想为Travis-CI上构建的文件生成签名。 说:

hello-0.0.1-a.bin.asc
hello-0.0.1-a.bin
pubkey.gpg 
<or> hello-0.0.1-a.pub

在这种情况下,hello-0.0.1-a.bin由Travis构建创建,并将作为版本推送到Github。 同样,签名也必须作为版本推送到Github(即在同一标签下)。

如果私有/公共密钥对对于该构建是唯一的,我不会非常关心(即不是交易破坏者)。 但如果私有/公共密钥对在构建之间共享,那将是理想的。

欣赏并提示提示或咒语。

1 个答案:

答案 0 :(得分:7)

它基本上归结为几步。

  1. 从您的gpg密钥环gpg --export-secret-keys > all.gpg
  2. 导出密钥
  3. travis ruby​​ gem用于encrypt-file gpg密钥环(ex all.gpg
  4. all.gpg.enc添加到您的仓库(不是未加密的all.gpg
  5. 确保repo可以访问安全变量
  6. 将此行添加到.travis.yml文件中以解密加密的私人签名密钥

    openssl aes-256-cbc -K $encrypted_0a6446eb3ae3_key -iv $encrypted_0a6446eb3ae3_key -in all.gpg.enc -out all.gpg -d

  7. 导入gpg键gpg --import all.gpg

  8. 签署您的图片gpg --output hello.bin.asc --sign hello.bin
  9. $ travis encrypt-file all.gpg --add
    encrypting all.gpg for rkh/travis-encrypt-file-example
    storing result as all.gpg.enc
    storing secure env variables for decryption
    
    Make sure to add all.gpg.enc to the git repository.
    Make sure not to add all.gpg to the git repository.
    Commit all changes to your .travis.yml.