Phing×JenkinsでビルドされたレポートをAmazonS3に自動アップロードする

  • Pocket
  • このエントリーをはてなブックマークに追加
  • 162 follow us in feedly

まえがき

JenkinsのPublish HTMLプラグインなんかを使ってDoxygenやらカバレッジのレポートをJenkinsから覗けるようにはよくやるかと思いますが、今回はそれらの生成されたドキュメントたちをAmazonS3にアップロードしてみようと思います。

Jenkinsから除くのも便利だけどS3を使うことでJenkins鯖へのアクセスを抑えたり、複数のバージョンでのドキュメント保持も容易にできるのでいい感じです。

アップロードの流れ

  • 1.jenkinsでビルド
  • 2.s3cmdを使ってS3へアップロード
  • 3.Phingで一連の処理をつらつらと

s3cmdのインストール

s3cmdに関しては以前に記事を書いたことがあるのでそちらを確認していただけるとインストールからセットアップまではできるかと思います。

注意しないといけないのは、jenkinsユーザーのホームディレクトリに『.s3cfg』のファイルを設置すること。

s3cmdコマンドでAmazonS3を操作するメモ

s3cmdコマンドでAmazonS3を操作するメモ

Phingのビルドタスクの準備

Phingのインストールなどに関しては省略。

わたしはcomposerでプロジェクトのvendorライブラリとして取り込んでおります。

自分の場合はDoxygenでドキュメントを生成&phpunitでカバレッジのHTMLを生成をしております。

s3にアップロードする際のディレクトリ構造に関してはJenkinsのビルドの際の環境変数をつかうことでいいかんじにできます。

<?xml version="1.0" encoding="utf-8"?>
<project name="FuelPHP Project" basedir="." default="all">

    <property name="phing_dir_name"   value ="build" />
    <property name="build_dir_name"   value ="build" />
    <property name="s3_bucket_name"   value ="s3のbucket名" />
    <property name="phpunit_dir_name" value ="${phing_dir_name}/coverage" />
    <property name="doxygen_dir_name" value ="${phing_dir_name}/doxygen" />
    <property name="docs_dir_name"    value ="${phing_dir_name}/docs" />
    <property name="phpmd_dir_name"   value ="${phing_dir_name}/phpmd" />
    <property name="phpcpd_dir_name"  value ="${phing_dir_name}/phpcpd" />
    <property name="phpcs_dir_name"   value ="${phing_dir_name}/phpcs" />

    <target name="init">
        <delete dir="${phing_dir_name}" includeemptydirs="true" />
        <mkdir dir="${phing_dir_name}" />
    </target>

    <target name="phpunit">
        <mkdir dir="${phpunit_dir_name}" />
        <exec dir="." command="
            env FUEL_ENV=test
            php oil test
            --group=App
            --coverage-html=${phpunit_dir_name}/html
            --log-junit=${phpunit_dir_name}/junit.xml
            "/>
    </target>

    <target name="doxygen">
        <mkdir dir="${doxygen_dir_name}" />
        <exec dir="." command="
            doxygen ./Doxyfile
            "/>
    </target>

    <target name="phpcpd">
        <mkdir dir="${phpcpd_dir_name}" />
        <exec dir="." command="
            ./fuel/vendor/bin/phpcpd
            --log-pmd ${phpcpd_dir_name}/cpd.xml
            ./fuel/app
            "/>
    </target>

    <target name="s3cmd">
        <exec dir="." command="
            s3cmd
            put
            -r
            --acl-public
            ${build_dir_name}
            s3://${s3_bucket_name}/${JOB_NAME}/${BUILD_NUMBER}/
            "/>
    </target>

    <target name="all"    depends="init, phpunit, doxygen, phpcpd" />
    <target name="all_s3" depends="all, s3cmd" />

</project>

Jenkinsのジョブ設定

Jenkinsのジョブではスクリプトの実行にチェックをして

phing all_s3

みたいな感じで実行しているだけです。

ビルド後は『s.com/bucket名/ジョブ名/ビルド番号/build/coverage/html/index.html』みたいな感じでレポートが見れるかと思います。

あとがき

結構容量が大きいとアップロードにすごく時間がかかってしまって、なかなかジョブが終了しないので、ファイルをアップロードするだけのジョブを作るなどの対処をしたほうがいいかもしれません。

おすすめ書籍

継続的インテグレーション入門
ポール・M・デュバル スティーブ・M・マティアス アンドリュー・グローバー
日経BP社
売り上げランキング: 148,759

関連記事

Screeny Shot 2013-05-11 22.00.06.png

phpDocumentorのタグ書式と便利なプラグイン

まえがき http://www.absolute-keitarou....

記事を読む

rakuten-api-1rakuten-api-1.png

楽天APIでISBNコードを使って書籍検索してみる。『PHP&Ruby』

まえがき ちょっとした書籍検索サンプルのコードのメモ。 今回何がや...

記事を読む

250px-Mammouth.png

PHPをcoffeescriptっぽく書ける「Mammouth」を試してみたのでメモ

まえがき PHPのコードをcoffeescriptライクにかけるnod...

記事を読む

Screeny Shot 2013-07-01 2.45.52.png

ニコニコ動画マイリストrssをPHPとRubyで取得してみる

まえがき ニコニコ動画のマイリストをRSSで取得できるみたいなので試...

記事を読む

jenkins-install-1jenkins-install-1.png

MacBookとさくらVPS(CentOS)のJenkinsをインストールしてみた

まえがき はい、今回は『Jenkins』を触ってみようと思います!!...

記事を読む

新着記事

no image

PHPでRubyのirbっぽいインタラクティブなスクリプトが実行できる「boris」

まえがき PHPでもRubyのirbみたいなことがしたくて探してみたと...

記事を読む

2015年の抱負と去年の振り返り〜よちよちWEB業界1年経験して〜

まえがき あけましておめでとうございます。今年もどうぞよろしくお願いし...

記事を読む

Java SE 7 Bronze試験(1Z0-802)を受けてきました

まえがき 以前から少し受けてみたかった試験『Java SE 7 Bro...

記事を読む

HubotでJenkinsのジョブを実行する

まえがき HubotをつかってJenkinsのジョブをじっこうしてみた...

記事を読む

no image

Hubotをforeverでデーモン化する

まえがき 今回はHubotをforeverを使ってデーモン化してみた時...

記事を読む

スポンサーリンク

  • Sorry. No data so far.

PAGE TOP ↑