WerckerでPrivateリポジトリなGemやPuppetモジュールを利用する方法

皆様あけましておめでとうございます。歳を重ねるにつれて1年を短く感じるようになり年末、正月気分が年々薄れていき今年はさっぱり正月気分を味わえていませんが皆様はいかがでしょうか?

さてさて、最近巷で流行りのWerckerはご存知でしょうか?Github, Bitbucketに対応していてプライベートリポジトリだろうとCIし放題という便利なサービスです。

こんな便利なものを使わない手はないということで早速使ってみようとしたところCIしようとしたリポジトリが他のプライベートなGemやPuppetモジュールなんかに依存していてちょっと手間取ったのでその方法をご紹介。

やり方

まずApplicationのSettingsタブにあるKey managementでリポジトリへアクセスするための鍵ペアを作ります。

f:id:cynipe:20140106213958p:plain

対象とするリポジトリ郡に対してアクセスするために作成した公開鍵をBitbucket側にも設定しておきましょう。ダミーユーザなどを作ってそのユーザに鍵を登録しRead Onlyな権限を付与しておくのが管理上は楽かもしれません。

次にこれをビルドスクリプトから利用できるようにするために変数として定義します。変数の定義は同じSettingsタブのPipelineでAdd new variableをクリックすれば追加が出来ます。

f:id:cynipe:20140106214602p:plain

最後にビルド中に作成した鍵を使ってCloneされるようにwercker.ymlに以下の様に設定すれば完了です。add-sshkeyとadd-to-known_hostsステップだけきちんと設定出来ていれば、以降はbundle installするなり、librarian-puppet installするなりすればきちんとチェックアウトして利用することが出来ます。

box: wercker/ruby
build:
  steps:
    - add-ssh-key:
        keyname: BITBUCKET_KEY

    - add-to-known_hosts:
        hostname: bitbucket.org
        fingerprint: 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40

    - script:
        name: specs
        code: rake spec

それでは快適なWerckerライフを!

参考リンク

Using private repositories in your builds


Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)