GitHub アカウントを使っている場合に wercker CLI で認証を通す方法

先進的な CI サービスである wercker では、 CLI が提供されています。これを使うと、 wercker でのビルドプロセスをローカルで再現できたり、 ビルド済みのコンテナを pull してきて、中の状態を確認できたりします。 OS X 用と Linux 用が提供されており、 OS X の場合には、以下のコマンドで一発です。

1
$ curl -L https://s3.amazonaws.com/downloads.wercker.com/cli/stable/darwin_amd64/wercker -o /usr/local/bin/wercker

この wercker コマンドを使ってコンテナイメージを pull してくるには、あらかじめ wercker login で wercker のアカウントでログインしておく必要があります。そうでないと、以下のようなメッセージが表示されてしまいます。

1
2
3
$ wercker pull skatsuta/aerospike-sample --branch master --load
Fetching build information for application skatsuta/aerospike-sample
ERROR wercker-api: You are not authorized to access the resource (status code: 401)

ところが僕は GitHub のアカウントを使っており、このログイン情報では次のように認証が通りません。

1
2
3
4
5
6
$ wercker login
########### Logging into wercker! #############
Username: skatsuta
Password:
ERROR Unable to log into wercker Error=Invalid credentials
ERROR Invalid credentials

どうなってるのかと思い wercker/wercker-cli リポジトリの issues を見てみると、以下のような issue が挙げられていました。

案の定 GitHub アカウントでのログインには未対応のようです。しかしながら、 Issue #15@captn3m0 のコメントに興味深いことが書かれていました。

Alternatively, you can add instructions to directly generate a token and putting it in the ~/.werkcer/token file

なんと、トークンファイルを置いておけばいけると!?
ということで、早速試してみました。

wercker のアカウントページの右上のアイコンから Settings > Personal tokens をたどり、 wercker-cli という名前でトークンを生成し、コピーします。そしてそれを ~/.wercker/token ファイルに貼り付けて保存します。

さて、もう一度 pull してみましょう。

1
2
3
4
5
6
7
$ wercker pull skatsuta/aerospike-sample --branch master --load
Fetching build information for application skatsuta/aerospike-sample
Downloading Docker repository for build 55a3aaad50dc24ba7b102720
Downloading: 100%
Download complete
Importing into Docker
Finished importing into Docker

本当に成功しました! これで wercker CLI を活用できますね。