Tag: Jenkins

目次

関連ページ

参考情報

OS X El Capitanにインストール

warファイルのダウンロード

  • Jenkinsからjenkins.warをダウンロードしTomcatに配備する。

設定ファイルの修正

  • tomcat-launchd.shに以下を追加。
    export JENKINS_HOME=/opt/home/jenkins
  • JENKINS_HOMEのパーミッションを「_www:_www」に変更しておく。

※この段階でTomcat経由では動くはず。

リバースプロキシの設定

  • まじめに設定しておかないと「リバースプロキシの設定がおかしいです」といわれる。
        # To Tomcat
        <IfModule mod_proxy_ajp.c>
            <Proxy *>
                Order deny,allow
                Allow from all
            </Proxy>
            ProxyPass /jenkins ajp://localhost:8009/jenkins nocanon
            ProxyRequests off
            AllowEncodedSlashes nodecode
        </IfModule>
    
  • ProxyRequests OFFとAllowEncodedSlashes nodecodeとno canonあたりが重要らしい。

Rails基本プロジェクトの作成

プラグインのインストール

  • Railsプロジェクトをビルドする場合、以下のプラグインをインストールしておく。
  • Jenkinsの管理 > プラグイン > 利用可能より。
    • Rake plugin
    • rbenv plugin
    • git plugin
    • RubyMetrics plugin for Jenkins

Jobの作成

  • フリースタイルJobを作成
  • ソースコード管理をgitとする。
  • rbenv build wrapperを有効にする。高度な設定でRBENV_ROOTを以下のように設定。
    $JENKINS_HOME/.rbenv
  • ビルド欄に以下を指定。rake db:migrateはdevelopment環境をデフォルトとしてしようするが、rake testは自動的にdevelopment環境をコピーするのでこれで問題ない。NOKOGIRI_USE_SYSTEM_LIBRARIESはNokogiriがビルドできないときだけ指定。
    export NOKOGIRI_USE_SYSTEM_LIBRARIES=1
    bundle install --path=vendor/bundle
    bundle exec rake db:migrate RAILS_ENV=test
    bundle exec rake test
    
  • ビルド実行するとテストできる。

2回目からのJobの作成

  • もともとあるRubyプロジェクトをコピーするのが簡単。
  • プロジェクト名やgitのパスを修正する。

Tips

git pushで自動ビルドしたい

  • gitのベアリポジトリにフックを仕込む。
  • GitBucketを使っているならば、サーバー設定のServer HooksのWebhooksを使えばよい。
  • URLを指定しておけば呼び出してくれる
    http://server/jenkins/job/my-job/build?delay=0sec

環境変数を知りたい

  • Jobを作成してシェルの実行に以下を指定
    whoami
    echo $HOME
    
  • テスト実行すると実行ユーザーやホームディレクトリを確認することができる。

成功・失敗時にメールを送信したい

  • Jenkinsのデフォルト状態ではビルド失敗時にしかメールが送信されない。
  • Email-extプラグインを使用すれば成功時にもメールを送信できるようになる。SMTPサーバーの設定などはプラグインに引き継がれないのではじめからEmail-extプラグインを入れて設定したほうがよいかもしれない。

グローバル設定

  • Jenkinsの管理から「拡張E-mail通知」を選び、SMTPサーバーなどの設定を行う。
  • SMTPサーバー、デフォルトのE-mailのサフィックス、SMTP認証あたりを設定しておく。

プロジェクトごとの設定

  • プロジェクトの「拡張E-mail通知」を選び、TriggersをAlwaysにする。

トラブルシューティング

Nokogiri関連のエラー

  • Nokogiriが原因でビルドに失敗する場合、ワークスペースのビルド > シェルの実行設定を例えば以下のように変更する。
    export NOKOGIRI_USE_SYSTEM_LIBRARIES=1
    bundle install --path vendor/bundle
    bundle exec rake db:migrate
    bundle exec rspec spec
    bundle exec rake test
    
    
  • システムライブラリとの整合性のエラーの場合(例えばLibXMLとか)、ビルド設定でvendor/bundleを削除する設定にいったん変更して元に戻す(rmagickのように)。
    rm -rf vendor/bundle

ImageMagickを使っているプロジェクトでラー

  • 「can't find Magick-config or pkg-config」エラーが発生する
  • グローバル設定で/opt/local/binを追加する。

rbenvでエラー

  • rbenvを使っているプロジェクトで以下のようなエラーが表示される
    [demo-job] $ /bin/sh -xe /opt/home/tomcat/temp/hudson2541636611034405808.sh
    + bundle install --path vendor/bundle
    There was an error while trying to write to
    `/Library/WebServer/.bundle/cache/compact_index/rubygems.org.443.29b0360b937aa4d161703e6160654e47`.
    
  • Bundle run as user with no home directory fails · Issue #4481 · bundler/bundlerによるとどうやらホームディレクトリに何やら書き込もうとしているのが原因っぽい。
  • Jenkinsの環境設定でHOMEを/opt/home/jenkinsに設定したらとりあえず位血した。

rmagickのエラー

  • 以下のエラーが発生した
    Gem Load Error is: This installation of RMagick was configured with ImageMagick 6.9.3 but ImageMagick 6.9.4-4 is in use.
  • Gemfile.lockは同一のままImageMagickをバージョンアップしたのが原因?
  • Jenkinsのタスクを以下のように一端変更してみた。
    rm -rf vendor/bundle
    bundle install --path vendor/bundle
    bundle exec rake db:migrate
    bundle exec rspec spec
    bundle exec rake test
    
    
  • もしくはIs there any way to cleanup jenkin workspace?? I am using AccuRev as version control tool - Stack Overflow

ActiveRecord::NoEnvironmentInSchemaError:

Mysql2::Error: Index column size too large. The maximum column size is 767 bytes.: CREATE INDEX

  • MySQLのインデックスを拡張している場合に発生。
  • 通常testdbはよろしく設定してくれるのだがDYNAMIC設定は反映してくれない。
  • プロジェクトのディレクトリで手動で以下のコマンドを実行しテストdbを作り直す。RAILS_ENVが必ず必要。
    bundle exec rails db:environment:set RAILS_ENV=test
    bundle exec rails db:reset RAILS_ENV=test
    

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-11-27 (月) 16:51:36 (417d)