Werckerでgit submoduleを使う

Ken published on
3 min, 488 words

Categories: tech

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

  1. 上記ページからSSHキーを登録したいアプリケーションを選択する
  2. Environmentタブを選択する
  3. 右下のGenerate SSH Keysをクリックする
  4. 適当な名称を指定して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