ymyzk/homebrew-ymyzk - Travis CI

brew tap 用のリポジトリを Travis CI でテストする

パッケージマネージャの Homebrew は tap を用いることで, サードパーティーが提供しているリポジトリの Formulae を利用することが出来ます. この記事では brew tap 用のリポジトリを Travis CI 上でテストする方法について紹介します.

brew tap 用のリポジトリの作成

brew tap のためのリポジトリの作成は GitHub 上にリポジトリを作成することで可能です. 一般的には <ユーザー名>/homebrew-<tap 名> という風にリポジトリに名前をつけます.

例えば, ymyzk/homebrew-ymyzk というリポジトリは, brew tap ymyzk/ymyzk とするか, brew install ymyzk/ymyzk/<formula> のようにして利用します.

詳細は公式のマニュアル等を参照してください.

何をテストするか

Homebrew 公式リポジトリが提供している Formulae は Brew Test Bot と呼ばれる Bot (Jenkins) でテストされています. これと全く同じことを行うのはコストが高いのでもう少し簡単にテストすることを考えます.

brew tap 用のリポジトリを提供するにあたって, 最低限以下のことが満たせていれば良いと考えてみます:

  • Formula がコーディングスタイルを満たしている
  • Formula が実際にインストールできる

前者は brew audit というコマンドを用いることでテストすることが出来ます. 後者は実際に brew install することで実現出来そうです.

Travis CI でテストする

Travis CI は OSS であれば無料で利用でき, macOS でのビルド環境を提供してくれています. osx_image を指定することで複数のバージョンの macOS でテストすることが出来ます.

以下に, Travis CI での設定例 (.travis.yml) を示します.

language: ruby
matrix:
  include:
    # See https://docs.travis-ci.com/user/osx-ci-environment/#OS-X-Version
    # OS X 10.11
    - os: osx
      osx_image: xcode8
    - os: osx
      osx_image: xcode7.3
    # OS X 10.10
    - os: osx
      osx_image: xcode7.1
    # OS X 10.9
    - os: osx
      osx_image: beta-xcode6.2
install:
  - brew update
script:
  - brew audit --strict ./*.rb
  - brew install --verbose --build-bottle ./*.rb

この例では, OS X 10.9 〜 OS X 10.11 の3つの OS でテストを実行しています. brew audit --strict ./*.rb でコーディングスタイルのチェックを行い, brew install --verbose --build-bottle ./*.rb で実際にビルドしてインストール出来るかをテストしています.

また, 上記のテストを行う前に brew update を実行しています. これは Travis CI が Homebrew を利用する前に実行することを推奨しているために追加しています.

このテストは実際に ymyzk/homebrew-ymyzk で利用しています.

最後に

brew tap 用のリポジトリに CI を導入することで, Formulae のテストを簡単に行えるようになります. ビルドに時間が掛かるパッケージでは, CI がタイムアウトすることも考えられるので, もう少し工夫が必要かもしれません.

更新履歴

  • 2016/7/5 一部表現を修正.