rcmdnk's blog

絢爛たる暗号―百人一首の謎を解く (集英社文庫)

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

Encrypting Files - Travis CI

上にあるままですが、.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。

Sponsored Links
Sponsored Links

« Vimのdeinプラグインのアップデートに伴う.vimrcの変更 Python2.XとPython3.Xを共存させる: Brew-fileのアップデート »

}