share facebook facebook twitter menu hatena pocket slack

2015.08.18 TUE

wercker の step を自作するクイックメモ

川原 洋平

WRITTEN BY 川原 洋平

はじめに

step とは

最近のマイブームである CI の火付け役となっている wercker には build や deploy のステップで利用する手順を予め一纏めにして他のアプリケーションからも利用出来る step という仕組みが用意されている。

参考

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
  • nameversion は必須項目となり、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 も作ってみたいと思う。

元記事はこちら

wercker の step を自作するクイックメモ

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。