くりにっき

フルスタックキュアエンジニアです

Travis CIで暗号化したパラメータを2つ以上使う方法

テストコード中でTwitter APIを使っているんだけど、それをそのままTravis CIでテストしようとするとgithubにconsumer keyやconsumer serrectをcommitする必要が出てくるため、Travis CIで使うために暗号化したパラメータを複数渡す方法を探していました。

忙しい人のための結論

暗号化したいパラメータを空白で区切りで渡せばok

travis encrypt VAR1=foo VAR2=baz

調べた

gem install travis

すればコマンドがインストールできる。

この辺のサイトを見ても暗号化したいパラメータが1つの場合しかなかったので実際に実験してみました

空白で区切る

$ travis encrypt VAR1=foo VAR2=baz
Please add the following to your .travis.yml file:

  secure: "h+1848Nsz5phbcdUMt8FpYNBHIWQu+6aLiCNyX/uGgcC/bx71K8AE+52x22+EiHDamk8yrVAajVwsPYv8nBKSEEj9IGkEmaOETXi+v5Bi1cHwghK7fbFAdpBLBhwIgoRcmSZel96q9s4njBSXbBYnlLxcwdTyzOpUZ1iwVNLzFk="

.travis.yml を作ってencryptで出力されたtokenを書く

script: echo "VAR1=$VAR1, VAR2=$VAR2"
env:
  global:
    # travis encrypt VAR1=foo VAR2=baz
    secure: "h+1848Nsz5phbcdUMt8FpYNBHIWQu+6aLiCNyX/uGgcC/bx71K8AE+52x22+EiHDamk8yrVAajVwsPYv8nBKSEEj9IGkEmaOETXi+v5Bi1cHwghK7fbFAdpBLBhwIgoRcmSZel96q9s4njBSXbBYnlLxcwdTyzOpUZ1iwVNLzFk="

travisでテストする

$ export VAR1=[secure]
$ export VAR2=[secure]
$ echo "VAR1=$VAR1, VAR2=$VAR2"
VAR1=foo, VAR2=baz
The command "echo "VAR1=$VAR1, VAR2=$VAR2"" exited with 0.

https://travis-ci.org/sue445/dotfiles/builds/17421104

一発目で成功したw

セミコロンで区切る

念のため実験

travis encrypt VAR1=foo;VAR2=baz
Please add the following to your .travis.yml file:

  secure: "IKwvtmkcbjr/ShewETVAikVfjWlA0IkbkMLCH/8wzVMEcIZIysVpdgpnGOpp8dSPAJjZsPdJi5oJlOaHAIslrnphfL1yw0Fyy0dC3wZMb6cANdmawGx5U5JZZFHeI1m4uuwnE/yCgYoV1uwZxoaEgM4f6uej7kKPryiFLzy76Z4="

同様に .travis.yml に書き込む

script: echo "VAR1=$VAR1, VAR2=$VAR2"
env:
  global:
    # travis encrypt VAR1=foo;VAR2=baz
    secure: "IKwvtmkcbjr/ShewETVAikVfjWlA0IkbkMLCH/8wzVMEcIZIysVpdgpnGOpp8dSPAJjZsPdJi5oJlOaHAIslrnphfL1yw0Fyy0dC3wZMb6cANdmawGx5U5JZZFHeI1m4uuwnE/yCgYoV1uwZxoaEgM4f6uej7kKPryiFLzy76Z4="

travisでテストする

$ export VAR1=[secure]
$ echo "VAR1=$VAR1, VAR2=$VAR2"
VAR1=foo, VAR2=
The command "echo "VAR1=$VAR1, VAR2=$VAR2"" exited with 0.

https://travis-ci.org/sue445/dotfiles/builds/17421816

2つ目の変数がとれてないのでダメ