Perl Hackers Hub

第49回 CPANモジュールの品質を支えるCI技術(2)

この記事を読むのに必要な時間:およそ 3.5 分

テスト実行結果のSlackへの通知

Travis CIでは,テストの実行結果をメールやチャットで通知できます。通知を行うと,テストが失敗したときにすぐ気付けて便利です。

ここでは,Travis CIとSlackを連携させる方法を説明します。Travis CIとSlackを連携させるには,次のステップが必要です。

  • Slackの設定画面からTravis CIを追加する
  • ❷ 取得したトークンをtravisコマンドで暗号化する
  • .travis.ymlに,暗号化したトークンを追加し,コミットする

❷で暗号化するのは,トークンをOSSに載せ公開すると,Slackへ任意の投稿を行えるためです。travisコマンドはRubyで記述されているため,gemコマンドを使ってインストールします注2)⁠

$ gem install travis
$ travis --version
1.8.8

travisコマンドが動作したら,次のコマンドでトークンを暗号化します。domainは連携したいSlackチームのドメインに,tokenは取得したトークンに置き換えてください。

$ travis encrypt "domain:token"
Detected repository as pine/sample, is this correct? |yes| yes
Please add the following to your .travis.yml file:

  secure: "XXX"

Pro Tip: You can add it automatically by running with --add.

❸の.travis.ymlには,次のような記述を行います。XXXは先ほどtravisコマンドで暗号化したトークンです。

language: perl
perl:
  - "5.26"

script:
  - prove -lvr t

notifications:
travis:
  - secure: "XXX"

これで,リポジトリにgit pushを行うとテストが実行され,結果がSlackに通知されます図7)⁠

図7 Travis CIとSlackの連携

図7 Travis CIとSlackの連携

注2)
Rubyがインストールされていない場合は,別途インストールする必要があります。
バッジの追加

Travis CIのテスト結果を一目でわかる画像で表す,⁠バッジ」と呼ばれるものをドキュメントに貼ることができます図8)⁠これにより,モジュールがきちんとテストされていることを利用者にアピールできます。

図8 README.mdにTravis CIのバッジを貼った状態

図8 README.mdにTravis CIのバッジを貼った状態

バッジの情報は,図4~6のようなTravis CIのページへいき,リポジトリ名の右に表示されている画像をクリックすることで取得できます。

CPANオーサリングツールであるMinillaを使って開発を行っている場合,Travis CIのバッジを貼るのはより簡単です。Minillaの設定ファイルであるminil.tomlに次の設定を追記します。

badges = ["travis"]

こうすることで,Minillaでモジュールをビルドするコマンドであるminil buildを実行したときに,README.mdに自動的にバッジが貼られます。

AppVeyorによるWindowsテストの自動実行

本項では,Windows上でテストが実行できるAppVeyorを使ったテストの方法を説明します。

AppVeyorとは

Travis CIを使うとLinux上で複数のPerlバージョンに対してテストを行えますが,開発するモジュールがWindows環境でも動作する必要がある場合,これだけでは不十分です。

AppVeyorはWindows環境でのテストをサポートした,数少ないSaaS型のCIサービスです。AppVeyorを使うと,Linux環境だけではなくWindows上でも継続的にテストを実行できます。

Windows向けPerlディストリビューション

Windows上でPerlを使うには,あらかじめコンパイルされインストーラとして提供されているPerlディストリビューションを利用するのが一般的です。有名なものとして,ActivePerlStrawberry Perlがあります。

ActivePerlはWindows向けにコンパイルされたPerlに拡張を加えたものです。独自のパッケージマネージャPPMPerl Package Managerや,WSHWindows Script HostスクリプトをPerl 記述できる機能など,Windowsで便利にPerlを使うための機能があります。

それに対してStrawberry Perlは,どちらかと言うと素のPerlに近いディストリビューションです。Cコンパイラによるビルドが必要なXSモジュールは,MinGWのGCCによってビルドされます。UNIX環境のPerlに慣れた人がWindowsでも同じようにPerlを使いたい場合,Strawberry Perlを使うと便利です。

今回はStrawberry Perlを使ってテストを実行する方法を解説します。

AppVeyorでテストの実行

Travis CIでテストを行ったときと同じ要領で,AppVeyorでもテストを実行してみましょう。

AppVeyorを使ってテストを実行するには,次のステップが必要です。

  • ❶ AppVeyorへGitHubアカウントでログインし,連携する
  • ❷ AppVeyorの管理画面からテスト対象のリポジトリを指定する
  • ❸ 対象のリポジトリのルートに設定ファイルappveyor.ymlをコミットする

❸のappveyor.ymlには,次の記述を行います。

init:
  - git config --global core.autocrlf input

install:
  - choco install strawberryperl -version 5.26.1.1  …①
  - SET PATH=C:\strawberry\c\bin;C:\strawberry\perl\site\b
in;C:\strawberry\perl\bin;%PATH%  …②
  - cpanm --installdeps --notest --quiet --with-configure
--with-develop .

build: off
test_script:
  - prove -lvr t

shallow_clone: true

appveyor.xmlで重要なのはinstallステップです。で,Windows向けのパッケージマネージャであるChocolateyを使って,Strawberry Perlをインストールしています。Chocolateyを使うと,さまざまなコマンドラインツール,デスクトップアプリがコマンド経由でインストールできます。Strawberry Perlの場合,公式に提供されている.msi形式のインストーラのサイレントインストールの処理が走ります。では,Strawberry Perlがインストールした実行ファイルにパスを通しています。これにより,cpanmproveがフルパスを書かずに実行できます。

これで,リポジトリにgit pushを行うと自動でprove -lvrtが実行され,AppVeyor上に結果が表示されます図9)⁠

図9 AppVeyorでテストが実行される様子

図9 AppVeyorでテストが実行される様子

<続きの(3)こちら。>

WEB+DB PRESS

本誌最新号をチェック!
WEB+DB PRESS Vol.108

2018年12月22日発売
B5判/168ページ
定価(本体1,480円+税)
ISBN978-4-297-10324-8

  • 特集1
    [効率急上昇!]スキーマ駆動Web API開発
    OpenAPI/GraphQLで仕様からコードもテストも作成
  • 特集2
    詳解PostgreSQL
    [10/11対応]現場で役立つ新機能と実践知識
  • 特集3
    ZOZO開発ノウハウ大公開
    既存資産を活かしたシステムリプレース
  • 18周年記念エッセイ
    壁の先に見えたもの
    限界! もうダメ! もはやこれまで!?

著者プロフィール

水音ぴね(みずねぴね)

新卒で入社した会社では,Perlでソーシャルゲームの開発に従事。

現在は転職し,アプリとサーバーサイドをScalaで書いている。JavaScriptが好き。

GitHub:pine

コメント

コメントの記入