2017-07-19 3 views
2

Je vois que Travis a un flux de travail pour le cryptage d'un fichier, here.Comment GPG signer un fichier qui est construit par Travis-CI

Mon cas d'utilisation est légèrement plus simple, je veux juste générer une signature pour un fichier qui a été construit sur Travis-CI. Dis:

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

Dans ce cas hello-0.0.1-a.bin est créé par un Travis construire, et seront poussés à Github comme une libération. De même, la signature doit également être transmise à Github en tant que version (c'est-à-dire sous la même étiquette).

Je ne m'inquiète pas fortement (c'est-à-dire, pas un disjoncteur) si la paire de clés privée/publique est unique à cette construction. Mais ce serait idéal si la paire de clés privée/publique est partagée entre les générations.

Appréciez et donnez des astuces ou des incantations.

Répondre

1

Cela se résume à quelques étapes.

  1. Export votre GPG keyring gpg --export > all.gpg
  2. Utilisez le petit bijou rubis travis-encrypt-file le trousseau de clés GPG (ex all.gpg)
  3. Ajouter all.gpg.enc à votre repo (PAS le all.gpg non crypté)
  4. Assurez-vous que le repo pouvez accéder à des variables sécurisées
  5. Ajoutez cette ligne à votre fichier .travis.yml pour décrypter votre clé de signature privée cryptée

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

  6. Importer les clés GPG gpg --import all.gpg

  7. Inscrivez votre image gpg --output hello.bin.asc --sign hello.bin
$ 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.