- Encrypting Files のとおり
- travis 1.7.0 (2014/08/06公開?)で encrypt-file コマンドが追加され、それにより簡単にTravisCIでファイルを暗号化して扱えるようになりました
準備
- travisコマンドをインストールします
$ gem install travis
- 本記事記述時点でのバージョンは1.7.1
Encrypting Files
- 共通鍵暗号(AES-256)によりファイルを暗号化するようです
- 変更 https://github.com/travis-ci/travis.rb/commit/4fc18f6dcad1abdbc7d27e4cb2dadf64e624ef6e
$ travis encrypt-file --help
Encrypts a file and adds decryption steps to .travis.yml.
Usage: travis encrypt-file INPUT_PATH [OUTPUT_PATH] [OPTIONS]
-h, --help Display help
-i, --[no-]interactive be interactive and colorful
-E, --[no-]explode don't rescue exceptions
--skip-version-check don't check if travis client is up to date
--skip-completion-check don't check if auto-completion is set up
-e, --api-endpoint URL Travis API server to talk to
-I, --[no-]insecure do not verify SSL certificate of API endpoint
--pro short-cut for --api-endpoint 'https://api.travis-ci.com/'
--org short-cut for --api-endpoint 'https://api.travis-ci.org/'
--staging talks to staging system
-t, --token [ACCESS_TOKEN] access token to use
--debug show API requests
-X, --enterprise [NAME] use enterprise setup (optionally takes name for multiple setups)
--adapter ADAPTER Faraday adapter to use for HTTP requests
-r, --repo SLUG repository to use (will try to detect from current git clone)
-R, --store-repo SLUG like --repo, but remembers value for current directory
-K, --key KEY encryption key to be used (randomly generated otherwise)
--iv IV encryption IV to be used (randomly generated otherwise)
-d, --decrypt decrypt the file instead of encrypting it, requires key and iv
-f, --force override output file if it exists
-p, --print-key print (possibly generated) key and iv
-w, --decrypt-to PATH where to write the decrypted file to on the Travis CI VM
-a, --add [STAGE] automatically add command to .travis.yml (default stage is before_install)
- travis encryptコマンド同様--addオプションが用意されており自動的に.travis.ymlに記述することも可能です
- ただしこれまた同様にインデントが崩れることがあるので注意が必要です
実行してみる
$ travis encrypt-file hoge
encrypting hoge for kmats/test
storing result as hoge.enc
storing secure env variables for decryption
Please add the following to your build scirpt (before_install stage in your .travis.yml, for instance):
openssl aes-256-cbc -K $encrypted_d9ff679cf7a4_key -iv $encrypted_d9ff679cf7a4_iv -in hoge.enc -out hoge -d
Pro Tip: You can add it automatically by running with --add.
Make sure to add hoge.enc to the git repository.
Make sure not to add hoge to the git repository.
Commit all changes to your .travis.yml.
- 説明されるように.travis.ymlのbefore_installステージにopenssl aes-256-cbc... を追加すればOKです
- 最後説明されているように、暗号化したhoge.encはリポジトリに追加しますが元のhogeは追加しないようにしましょう
おまけ
- encrypt-file登場以前のファイル暗号化と言えば、自分でoepensslコマンドなどでファイルを暗号化して使用した鍵をtravis encryptで暗号化して管理…といっためんどくさいものだったのでこのコマンドの登場は非常に助かります
- Travis-CI でコミットして GitHub にプッシュする - 公開鍵認証を利用してみる
- ただ以前のやり方と比較した場合.travis.yml的には暗号化/複合化に使用する鍵の管理が1つ減るだけなので、既にやってるよ!って人にはそこまで必要とされないのかも
- もっと早くこのコマンド欲しかったw