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

関連記事

Jenkinsにログインできなくなった時の対処方法

まえがき とうとう、今日Jenkinsの設定を誤ってログインできなくな...

記事を読む

Screeny Shot 2013-07-02 2.42.14.png

今更、Google URL短縮APIを試してみた。for PHP

まえがき いまさらですがGoogleURL短縮APIを試してみたのでメ...

記事を読む

YAMLをRuby,Python,PHPで使ってみた

まえがき 『YAML』Rubyなんかをやってるとよく見る拡張子・書き...

記事を読む

octopress-on-amazons3-1octopress-on-amazons3-1.png

OctopressブログをAmazonS3にデプロイしてみるの巻【s3cmd】

まえがき AmazonS3×s3cmd×Octopressで静的ブログ...

記事を読む

heroku-pukiwiki-1heroku-pukiwiki-1.png

HerokuでWikiページ(PukiWiki)をあっさり作っちゃうの巻

まえがき 今回はHerokuを使ってWikiページを簡単に作っちゃおう...

記事を読む

新着記事

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 ↑