はじめに
step とは
最近のマイブームである CI の火付け役となっている wercker には build や deploy のステップで利用する手順を予め一纏めにして他のアプリケーションからも利用出来る step という仕組みが用意されている。
参考
step を自作するにあたり以下の記事を参考にさせて頂いた。
- http://old-devcenter.wercker.com/articles/steps/create.html
- http://devcenter.wercker.com/docs/steps/creating-steps.html
- https://github.com/wwwouter/wercker-step-campfire-notify
- Werckerの仕組み,独自のboxとstepのつくりかた
ありがとうございます。特にこちらの記事には wercker-step.yml の各項目について詳しく解説頂いていてとても参考になった。スーパー有難うございましたm(__)m
出来たもの
github
モチベーション
- rvm をインストールして Ruby をインストールする手順を wercker.yml の script に記載したら wercker.yml が読みにくいなあと思ったので
- terraform をダウンロードして展開する手順を wercker.yml の script に記載していたら wercker.yml が読みにくいなあと思ったので
いずれも wercker.yml の記述を簡素化したいというモチベーション。
使い方
以下のように wercker.yml 内で step を指定、合わせて変数(${terraform-version}
)を定義する。
build: steps: - inokappa/terraform-install: version: ${terraform-version}
step 導入のメリット
- step に置き換えることで wercker.yml の行数を削減し見通しが良くなった
- 別のアプリケーションからも再利用出来るのが嬉しい
memo
wercker-step.yml と run.sh のサンプル
例えば rvm-install のマニフェスト(wercker-step.yml)は以下の通り。
name: rvm-install version: 0.1.2 description: rvm-install keywords: - rvm properties: version: type: string required: true
name
とversion
は必須項目となり、wercker.yml から指定する場合にはuser_name/name
と指定するdescription
には概要、keywords
には step を検索する際のキーワードとなる単語を入れておくと良さそう(例:rvm)properties
には step で利用する変数を定義する(例:変数名→ version / タイプ→ string / 必須→ true)properties
に指定した変数は step の実際の挙動を記述する run.sh に渡す変数として利用することが出来る
以下は rvm-install の run.sh ファイル。
#!/bin/sh if [ ! -n "${WERCKER_RVM_INSTALL_VERSION}" ]; then error 'Please specify ruby-version property' exit 1 fi curl -sSL https://rvm.io/mpapis.asc | gpg --import - curl -sSL https://get.rvm.io | bash -s stable source $HOME/.rvm/scripts/rvm rvm install ${WERCKER_RVM_INSTALL_VERSION} --default echo "gem: --no-rdoc --no-ri" >> $HOME/.gemrc
wercker-step.yml の properties
に指定した変数 version
は run.sh 内では WERCKER_RVM_INSTALL_VERSION
という変数で参照することが出来る。
ということで
wercker が面白くなってきた
step 自作で wercker が俄然面白くなってきた(個人比)ので、今度は box も作ってみたいと思う。