1年以上経過しており情報が古い可能性があります
Packageから落とした場合と、Homebrewから落としてきた場合のJenkins設定まとめ
動作環境
- MacOSX 10.11
- Jenkins 1.634
- JDK 1.8.0_65
- Homebrew 0.9.5 (git revision 9942; last commit 2015-11-07)
- Ruby 2.2.3
- bundler 1.10.6
目標
- テスト自動化
- デプロイ自動化
- 通知を適度なタイミングで届ける
Packageからのインストール
構成
- Jobホーム
/Users/Shared/Jenkins/Home/jobs/xxx
- 設定ファイルの置き場所
/Users/Shared/Jenkins/Home/jobs/xxx/config.xml
Jenkinsへの書き込み権限の付与
Packageでインストールすると、jenkins
という名前のユーザーをJenkinsが自動で作成する。
% sudo chown jenkins /var/log/jenkins
パス設定
# Jenkins用 export JENKINS_HOME="/Users/Shared/Jenkins/Home"
アンインストール
// 選択肢1 % sh /Library/Application\ Support/Jenkins/Uninstall.command // 選択肢2 % sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist % sudo rm -rf /Applications/Jenkins "/Library/Application Support/Jenkins" /Library/Documentation/Jenkins % sudo rm -rf /Users/Shared/Jenkins % sudo dscl . -delete /Users/jenkins % sudo dscl . -delete /Groups/jenkins
Jenkinsの停止
% sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
アップデート
/Applacations/Jenkins/jenkins.war
を最新verへ切り替える。
環境設定ファイルの編集
% sudo vi /Library/LaunchDaemons/org.jenkins-ci.plist <!-- 追加 --> <key>EnvironmentVariables</key> <dict> <key>JENKINS_HOME</key> <string>/Users/Shared/Jenkins/Home</string> <key>JAVA_HOME</key> <string>/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home</string> </dict>
logや設定ファイルの確認
// logファイル % vi /Users/Shared/Jenkins/Home/jobs/{Project_name}/builds/1/log // Daemonの確認 % vi /Library/LaunchDaemons/org.jenkins-ci.plist
エラーまとめ
- java.io.IOException: Cannot run program "cmd"
- Windows環境ではない環境で実行している。
- ビルドに失敗する...
/var/log/jenkins
配下のログを消す。
デバッグ
シェルの実行でenvを用い、環境変数を表示させる。
Homebrewからのインストール
Homebrewの環境構築
Homebrewの環境構築はこちらを参照。
Jenkinsのインストール
brew install jenkins
よりインストール可能。
% brew install jenkins
jenkins: Java 1.6+ is required to install this formula.
You can install with Homebrew Cask:
brew install Caskroom/cask/java
You can download from:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Error: An unsatisfied requirement failed this build.
JDKがなくErrorが表示されてしまので、Logの通りJDKをインストール。
% brew install Caskroom/cask/java You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b <new-branch-name> This Cask makes minor modifications to the JRE to prevent issues with packaged applications, as discussed here: https://bugs.eclipse.org/bugs/show_bug.cgi?id=411361 If your Java application still asks for JRE installation, you might need to reboot or logout/login. Installing this Cask means you have AGREED to the Oracle Binary Code License Agreement for Java SE at ==> Downloading http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-macosx-x64.dmg ==> installer: Package name is JDK 8 Update 66 🍺 java staged at '/opt/homebrew-cask/Caskroom/java/1.8.0_66-b17' (2 files, 227M)
再度、jenkinsのインストール。
% brew install jenkins Note: When using launchctl the port will be 8080. To have launchd start jenkins at login: ln -sfv /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents Then to load jenkins now: launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist Or, if you don't want/need launchctl, you can just run: jenkins
Logにはln -sfv
より.plist
のシンボリックリンクを貼るとあるが、HomebrewのUpdateに合わせて.plist
もUpdateされてしまうため、シンボリックリンクではなくコピーする。
% cp -p /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents
設定ファイルの更新
% vi ~/Library/LaunchAgents/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>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=8080</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
<string>--httpPort=8080</string>
を <string>--httpPort=8081</string>
へ変更。
<string>-Dfile.encoding=utf-8</string>
を追加。
外部からアクセスさせる場合は <string>--httpListenAddress=127.0.0.1</string>
の行を削除。
メモリの設定を適宜。
自動で起動するようにload
% launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist // 停止は loadをunloadへ変更するだけ。
Jenkinsへ接続
http://localhost:8081/ へアクセスを行う。
新規プロジェクトの作成
% rails new circle -T
Gemの更新
% bundle install
Jenkinsの各種設定
パス ( 環境変数 ) の設定
http://localhost:8081/configure のグローバルプロパティより設定可能。
設定を行わないと command not found
となってしまう。
再起動
% sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist % sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
もしくはブラウザで http://{JENKINS_HOST}/safeRestart より再起動
プラグインのインストール
以下をインストール
- Git client
- Git plugin
- Slack Notification Plugin
セキュリティ
方法1. セキュアに127.0.0.1からのみアクセス可能にする
% sudo touch /Library/Preferences/org.jenkins-ci % sudo defaults write /Library/Preferences/org.jenkins-ci httpListenAddress -string 127.0.0.1
方法2. ユーザーを作成
http://localhost:8080/configureSecurity/ の 行列による権限設定
から、admin と operator ユーザーを作成。adminにはすべての権限を付与し、operatorには全体のread権限とジョブのreadとbuild権限を付与する。
適用
ボタンではなく、保存ボタンを押下する。
http://localhost:8080/securityRealm/ から、admin と operator ユーザーを登録する。
スケジュール作成
// 毎時起動 H * * * * // 5分ごとに H/5 * * * *
ログインできなくなった場合
一旦Jenkinsを停止させる。
% launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
Jenkinsのconfig.xml
を編集し、Securityを一旦消す。
vi ~/.jenkins/config.xml
<mode>NORMAL</mode> // falseへ変更。 <useSecurity>false</useSecurity> // ここから <authorizationStrategy class="hudson.security.ProjectMatrixAuthorizationStrategy"> <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Create:admin</permission> <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Delete:admin</permission> <permission>com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains:admin</permission> <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Update:admin</permission> <permission>com.cloudbees.plugins.credentials.CredentialsProvider.View:admin</permission> <permission>hudson.model.Computer.Build:admin</permission> <permission>hudson.model.Computer.Configure:admin</permission> <permission>hudson.model.Computer.Connect:admin</permission> <permission>hudson.model.Computer.Create:admin</permission> <permission>hudson.model.Computer.Delete:admin</permission> <permission>hudson.model.Computer.Disconnect:admin</permission> <permission>hudson.model.Hudson.Administer:admin</permission> <permission>hudson.model.Hudson.ConfigureUpdateCenter:admin</permission> <permission>hudson.model.Hudson.Read:admin</permission> <permission>hudson.model.Hudson.Read:operator</permission> <permission>hudson.model.Hudson.RunScripts:admin</permission> <permission>hudson.model.Hudson.UploadPlugins:admin</permission> <permission>hudson.model.Item.Build:admin</permission> <permission>hudson.model.Item.Build:operator</permission> <permission>hudson.model.Item.Cancel:admin</permission> <permission>hudson.model.Item.Configure:admin</permission> <permission>hudson.model.Item.Create:admin</permission> <permission>hudson.model.Item.Delete:admin</permission> <permission>hudson.model.Item.Discover:admin</permission> <permission>hudson.model.Item.Read:admin</permission> <permission>hudson.model.Item.Read:operator</permission> <permission>hudson.model.Item.Workspace:admin</permission> <permission>hudson.model.Run.Delete:admin</permission> <permission>hudson.model.Run.Update:admin</permission> <permission>hudson.model.View.Configure:admin</permission> <permission>hudson.model.View.Create:admin</permission> <permission>hudson.model.View.Delete:admin</permission> <permission>hudson.model.View.Read:admin</permission> </authorizationStrategy> <securityRealm class="hudson.security.SecurityRealm$None"/> // ここまでを削除。 <disableRememberMe>false</disableRememberMe>
Jenkinsを再起動させる。
% launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
その後、再度セキュリティを設定
より設定し直す。