Werckerでgit submoduleを使う
WerckerでGitHubのソースをgit submodule
で活用する場合には準備が必要。
このように単純にgit submodule
を実行するスクリプトを定義しても失敗する。
- script:
name: git submodules
code: git submodule update -i --recursive
必要な準備は次の2つ。
- SSHキー使用の準備
- GitHubをknown_hostsに登録する
git submodule
を実行する際にそのサーバーが信頼できることと、パスワードを求められないようにするための施策である。
SSHキー使用の準備
SSHキーの登録はWerckerのサイト内だけで完結する。
[-] wercker - Applications https://app.wercker.com/applications
- 上記ページからSSHキーを登録したいアプリケーションを選択する
Environment
タブを選択する- 右下の
Generate SSH Keys
をクリックする - 適当な名称を指定してSSHキーを生成する
ここではWERCKER_BLOG
という名称でSSHキーを生成したとする。
以上の手順を踏むと次の2つの環境変数が生成される。
- WERCKER_BLOG_PUBLIC
- WERCKER_BLOG_PRIVATE
WERCKER_BLOG_PUBLIC
のValue(公開鍵)をコピーする。
次にGitHubのSSH keysに登録する。
[-] SSH and GPG keys
https://github.com/settings/keys
右上のNew SSH Key
をクリックし、先程コピーしておいた公開鍵を貼り付け、登録を完了する。
wercker.yml
には次のように追記する。
- add-ssh-key:
keyname: WERCKER_BLOG
host: github.com
keyname
は先程作った環境変数であり、_PUBLIC
と_PRIVATE
を含まない文字列である。
GitHubをknown_hostsに登録する
GitHubに接続するためにknown_hostsに登録しておく。
単純にwercker.yml
に次の3行を追記するだけである。
- add-to-known_hosts:
hostname: github.com
fingerprint: 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
git submoduleに関するwercker.yml
まとめると、wercker.ymlは次のようになる。
steps:
- add-ssh-key:
keyname: WERCKER_BLOG
host: github.com
- add-to-known_hosts:
hostname: github.com
fingerprint: 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
- script:
name: git submodules
code: git submodule update -i --recursive