#author("2017-11-27T16:51:35+09:00","default:wikiwriter","wikiwriter") #author("2019-07-11T05:35:13+00:00","default:wikiwriter","wikiwriter") &tag(Jenkins); *目次 [#rb313331] #contents *関連ページ [#a35094ae] -[[./トラブルシューティング]] *参考情報 [#ob6dde29] -[[Jenkins:https://jenkins-ci.org/]] *OS X El Capitanにインストール [#b1bf15bd] **warファイルのダウンロード [#i757b5c8] -[[Jenkins:https://jenkins-ci.org/]]からjenkins.warをダウンロードしTomcatに配備する。 **設定ファイルの修正 [#h72c4b3f] -tomcat-launchd.shに以下を追加。 export JENKINS_HOME=/opt/home/jenkins -JENKINS_HOMEのパーミッションを「_www:_www」に変更しておく。 ※この段階でTomcat経由では動くはず。 **リバースプロキシの設定 [#q7bf3743] -まじめに設定しておかないと「リバースプロキシの設定がおかしいです」といわれる。 #pre{{ # 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基本プロジェクトの作成 [#k76b023c] **プラグインのインストール [#v506040a] -Railsプロジェクトをビルドする場合、以下のプラグインをインストールしておく。 -Jenkinsの管理 > プラグイン > 利用可能より。 -- Rake plugin -- rbenv plugin -- git plugin -- RubyMetrics plugin for Jenkins **Jobの作成 [#be301ac2] -フリースタイルJobを作成 -ソースコード管理をgitとする。 -rbenv build wrapperを有効にする。高度な設定でRBENV_ROOTを以下のように設定。 $JENKINS_HOME/.rbenv -ビルド欄に以下を指定。rake db:migrateはdevelopment環境をデフォルトとしてしようするが、rake testは自動的にdevelopment環境をコピーするのでこれで問題ない。NOKOGIRI_USE_SYSTEM_LIBRARIESはNokogiriがビルドできないときだけ指定。 #pre{{ 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の作成 [#d7895553] -もともとあるRubyプロジェクトをコピーするのが簡単。 -プロジェクト名やgitのパスを修正する。 *Tips [#add5412f] **git pushで自動ビルドしたい [#k782bf2b] -gitのベアリポジトリにフックを仕込む。 -GitBucketを使っているならば、サーバー設定のServer HooksのWebhooksを使えばよい。 -URLを指定しておけば呼び出してくれる http://server/jenkins/job/my-job/build?delay=0sec **環境変数を知りたい [#kb832625] -Jobを作成してシェルの実行に以下を指定 #pre{{ whoami echo $HOME }} -テスト実行すると実行ユーザーやホームディレクトリを確認することができる。 **成功・失敗時にメールを送信したい [#tbbbb9ee] -Jenkinsのデフォルト状態ではビルド失敗時にしかメールが送信されない。 -Email-extプラグインを使用すれば成功時にもメールを送信できるようになる。SMTPサーバーの設定などはプラグインに引き継がれないのではじめからEmail-extプラグインを入れて設定したほうがよいかもしれない。 ***グローバル設定 [#cfeb0e42] -Jenkinsの管理から「拡張E-mail通知」を選び、SMTPサーバーなどの設定を行う。 -SMTPサーバー、デフォルトのE-mailのサフィックス、SMTP認証あたりを設定しておく。 ***プロジェクトごとの設定 [#f76fd1ed] -プロジェクトの「拡張E-mail通知」を選び、TriggersをAlwaysにする。 *トラブルシューティング [#a69a8978] **Nokogiri関連のエラー [#iea2feea] -Nokogiriが原因でビルドに失敗する場合、ワークスペースのビルド > シェルの実行設定を例えば以下のように変更する。 #pre{{ 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を使っているプロジェクトでラー [#r5919f8a] -「can't find Magick-config or pkg-config」エラーが発生する -グローバル設定で/opt/local/binを追加する。 **rbenvでエラー [#o3cbb675] -rbenvを使っているプロジェクトで以下のようなエラーが表示される #pre{{ [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:https://github.com/bundler/bundler/issues/4481]]によるとどうやらホームディレクトリに何やら書き込もうとしているのが原因っぽい。 -Jenkinsの環境設定でHOMEを/opt/home/jenkinsに設定したらとりあえず位血した。 ***rmagickのエラー [#ec8b7487] -以下のエラーが発生した 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のタスクを以下のように一端変更してみた。 #pre{{ 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:http://stackoverflow.com/questions/28683914/is-there-any-way-to-cleanup-jenkin-workspace-i-am-using-accurev-as-version-con]] **ActiveRecord::NoEnvironmentInSchemaError: [#d9db050d] -[[Rails 5, Rspec: Environment data not found in the schema - Stack Overflow:https://stackoverflow.com/questions/38209186/rails-5-rspec-environment-data-not-found-in-the-schema]]によると、Rails5で導入された安全機能の影響。以下を追加する。 bin/rails db:environment:set RAILS_ENV=test || true **Mysql2::Error: Index column size too large. The maximum column size is 767 bytes.: CREATE INDEX [#e810eb55] -MySQLのインデックスを拡張している場合に発生。 -通常testdbはよろしく設定してくれるのだがDYNAMIC設定は反映してくれない。 -プロジェクトのディレクトリで手動で以下のコマンドを実行しテストdbを作り直す。RAILS_ENVが必ず必要。 #pre{{ bundle exec rails db:environment:set RAILS_ENV=test bundle exec rails db:reset RAILS_ENV=test }}