Travis CIを使っていて、テストジョブ内で他のGitHubレポジトリに
push
したりするため、
それ用の鍵を暗号化してレポジトリに置いてたりするんですが、
そのような暗号化したファイルを複数使いたいと思った時に
ちょっと躓いたのでその辺について。
Travis CI用の暗号化ファイルを使う
Travis CIでのテスト中に他のGitHubレポジトリ等にpush
をしたい場合、
push
の権限を持つ秘密鍵が必要になります。
普段使っているようなアカウント全体用の鍵を登録しても可能ですが、 それだと鍵が漏れた時に大変なので、 各レポジトリ専用の鍵を使います。
これがその辺の話。
この際、秘密鍵をtravis encrypt-file
コマンドを使って作業するレポジトリに結びつけて
暗号化し、作業レポジトリに置きます。
2つ以上の暗号化ファイルを使う
ここで、例えば2つ以上のテストマトリックスがあったりして、
それぞれ別のレポジトリをテスト用のpush
レポジトリにしたいとした時、
鍵をそれぞれに用意しないといけません。
(同じ公開鍵を別のレポジトリに登録しようとすると、既に使われている、と言うエラーが出ます。)
なので2つ鍵を用意して、それぞれをtravis encrypt-file
して。。。
とか思ってたんですが、これだと上手く行きません。
暗号化する際、毎回暗号化を変更しそれを使うので、 最初に行った暗号の方は復元出来ず、
bad decrypt
なエラーが出ます。
今のところ複数の暗号化ファイルを直接取り扱う方法というのは実は無くて、 複数使うたい場合は、一度一つのファイルにまとめて、そのファイルを暗号化し、 使う際にはそれを解いて中身を抽出して、みたいなことをする必要があります。
encrypt-file
cannot be used for multiple files · Issue #239 · travis-ci/travis.rb
上にあるままですが、.travis_rsa_1、.travis_rsa_2という2つのファイルを使いたい時、
$ tar cvf .travis_rsa.tar .travis_rsa_1 .travis_rsa_2
$ travis encrypt-file -r rcmdnk/travis-test .travis_rsa.tar
として.travis_rsa.tar.encというまとめた暗号化ファイルを作りこれを レポジトリに置いて、.travis.ymlの中で、
- openssl aes-256-cbc -K $encrypted_ee14946e6582_key -iv $encrypted_ee14946e6582_iv -in .travis_rsa.tar.enc -out .travis_rsa.tar -d
- tar xvf .travis_rsa.tar
と言った具合にdecryptして展開してあげて使えばOK。