概要
Jenkins上でJobをつくる時のTips集です。
Tips
古いビルドを破棄する
古いビルドの破棄にチェックを入れてビルドの保存日数や最大数を設定します
高度な設定からビルドの成果物の日数や最大数を設定することも可能です。
Jenkinsマシンの容量不足対策になります。
クローンとフェッチのタイムアウト
ソースコード管理でGitを使う場合には、タイムアウト時間を設定することが可能です。
[ソースコード管理] -> [Git] -> [追加処理] -> [Advanced clone behavious]から設定ができます。
何も設定しない場合には10分です。大きなレポジトリの場合、やや短いこともありここでJobがこけることもあるので注意です。
レポジトリの一部分をクローンする
Sparse checkout pathsで欲しいディレクトリだけcloneしてくることが可能になっています。
プロジェクトの削除を行ってもslaveのworkspaceは残ってしまう問題への対応
Jenkinsをmaster-slave構成にしている場合には、管理画面上からプロジェクトを削除してもslave上のワークスペースは残り続けてしまいます。
以下のスクリプトをJobとしてslaveで定期実行させることで存在しないプロジェクトのワークスペースを削除することが可能です。
require 'net/http'
require 'uri'
require 'fileutils'
require 'json'
uri = URI.parse("http://JENKINS_URL/api/json")
request = Net::HTTP::Get.new(uri)
request.basic_auth("user_name", "password")
req_options = {
use_ssl: uri.scheme == "https",
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
result = JSON.load(response.body)
jobs = result["jobs"].map{|job| job["name"] }
workspace_dirs = Dir.glob("../*")
workspace_dirs = workspace_dirs.map{|dir| File.basename(dir)}
workspace_dirs.each do |dir|
FileUtils.rm_rf("../#{dir}") unless jobs.include?(dir)
end
puts "Job of jenkins synchronization completed!"
auth認証をかけていない場合はrequest.basic_auth
は設定不要です。
Xcodeのアーカイブを定期的に削除する
Xcodeビルド限定の話ですが、Xcodeのキャッシュやアーカイブは定期的に削除すると容量不足対策になります。不必要な場合は削除してしまいましょう。
# Xcodeアーカイブ、キャッシュクリア
rm -rf ~/Library/Developer/Xcode/DerivedData/
rm -rf ~/Library/Developer/Xcode/Archives
↑このスクリプトを定期JobとしてJenkinsで実行させる。
Jenkinsを通して(Master -> Slaveの)keychainアクセスに失敗する
キーチェーンアクセスをアンロックする必要があります。
マシンの再起動のたびに必要のようです。
security unlock -p パスワード ~/Library/Keychains/login.keychain
一部のSierraのバージョンでは、さらに以下の設定も必要のようです。
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k LoginPassword login.keychain
参考