LoginSignup
1
3

More than 5 years have passed since last update.

brew services で起動したJenkinsの環境変数の設定

Last updated at Posted at 2017-06-03

Jenkins起動時にPATHに/usr/local/binを設定するようにする

/usr/local/Cellar/homebrew.mxcl.jenkins.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <!-- ここから -->
    <key>EnvironmentVariables</key>
    <dict>
      <key>PATH</key>
      <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
    </dict>
    <!-- ここまで -->
    <key>Label</key>
    <string>homebrew.mxcl.jenkins</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/bin/java</string>
      <string>-Dmail.smtp.starttls.enable=true</string>
      <string>-jar</string>
      <string>/usr/local/opt/jenkins/libexec/jenkins.war</string>
      <string>--httpListenAddress=127.0.0.1</string>
      <string>--httpPort=8081</string>
      <string>-Dfile.encoding=utf-8</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
  </dict>
</plist>

追記するときの注意点

  • 環境変数はLabelより前に定義すること
  • ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plistには直接編集しない。(サービスを再起動すると/usr/local/Cellar/のファイルがコピーされる。)

brew services で起動したJenkinsだとmvnが実行できない

ターミナルからjenkinsで手動起動していた時にはビルド実行に成功していたのですが、brew servicesから起動するように変更したところ失敗するようになりました。

コンソールを見ると「Caused: java.io.IOException: Cannot run program "mvn" : error=2, No such file or directory」とエラーを出力しており、mvnコマンドが実行でいていないようでした。

  • Jenkins > Jenkinsの管理 > システム情報 > 環境変数 > PATHの値が/usr/bin:/bin:/usr/sbin:/sbinになっていて/usr/local/binが抜けているのが原因のよう。(brew servicesじゃなくてjenkinsで起動した場合は、/usr/local/binが含まれている。)
  • Jenkins > Jenkinsの管理 > システムの設定 > グローバル プロパティ > 環境変数 で PATHを$PATH:/usr/local/binとしても解消しなかった。

結局、plistに追記することでシステム情報の環境変数に/usr/local/binが表記され、mvnが実行でき、ビルドが成功しました。

brew servicesで実行しようとした理由

Jenkinsのportを8080から変更したかったため。冒頭のplistのように8081に変更していてもjenkinsで手動起動すると8080になってしまうので、brew servicesから実行したら8081でアクセスできたから。

PATHもportも動きが違う原因は同じような気がするが、これはあくまでも自分のPCでの検証用で目的の状況は得られたのでこれ以上の調査はしない予定です。

Jenkinsをアップデートしてもplistがコピーされなかった

今日、homebrewで2.64が公開されてたから早速upgradeして起動したら、portが8080に戻ってた。plistは自動的にコピーされないんですね。なので2.63で編集したplistを持ってきたら8081で接続できてビルドも実行されました。
cleanupする前に気づいてよかった。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3