LoginSignup
1
1

More than 5 years have passed since last update.

Travis CI でのセンシティブな情報の暗号化

Last updated at Posted at 2019-03-28

.travis.ymlにトークンなどのセンシティブな情報を暗号化して記述する方法のメモ。

例えば、Slackへの通知のトークンを暗号化したり、GitHubにpushしたい場合などに使用するGitHubのパーソナルアクセストークンを暗号化したりなどに利用する。

仕組み

Travis CIの側で各リポジトリ毎に秘密鍵と公開鍵のペアを持っている。travisコマンドで公開鍵を使ってセンシティブな情報を暗号化して.travis.ymlに記載しておくと、ジョブの実行時にTravis CIのサーバー側で復号される。

準備

travisコマンドが必要なのでインストールする。

brew install ruby
gem install travis

手順

エンドポイントの確認と変更

エンドポイントを確認する。デフォルトのエンドポイントはhttps://api.travis-ci.org/となっている。

travis endpoint

travis-ci.orgではなくtravis-ci.comの場合は、以降のコマンドで-e https://api.travis-ci.com/のようにエンドポイントを指定する。あるいはそのショートカットである--comまたは--proを指定することもできる。

Enterpriseの場合は、-Xフラグも必要なので、-X -e https://travis.example.com/apiを指定する。

デフォルトのエンドポイントを変更することもできる。

travis endpoint --set-default -X -e https://travis.example.com/api
フラグ 意味
-X, --enterpise Enterprise向けのセットアップを使う
-e, --api-endpoint エンドポイントのURLを指定
--set-default エンドポイントをデフォルトとして設定

ログイン

GitHubのアカウントにログインする。パスワードあるいはGitHubでパーソナルアクセストークンを発行し、そのトークンでもログインできる。パーソナルアクセストークンに与えるべき権限についてはこちらを参照。

travis login --com

GitHub Enterpriseへのログインがシングルサインオンの場合は、パスワードがないのでパーソナルアクセストークンでログインする必要がある。

travis login -X -e https://travis.example.com/api --github-token <personal access token>

暗号化

暗号化したい文字列を指定して暗号化する。どこのリポジトリかはカレントディレクトリから自動的に検知されるが、-r sotoiwa/webapp-sampleのように明示的に指定することも可能。

ここではSlackへの通知用のトークンの例を示す。Slack通知用のトークンをSlack Appの設定から確認し、暗号化する。

travis encrypt --com "sotoiwa:<通知用のトークン>"

表示された文字列を.travis.yamlに記載する。

notifications:
  slack:
    secure: "<暗号化された文字列>"

なお、--add notifications.slackのようにオプションをつけることで、暗号化と同時に.travis.ymlに直接追加することもできる。

参考リンク

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1