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