LoginSignup
1
3

More than 5 years have passed since last update.

JenkinsでJobを作る時のTips集

Posted at

概要

Jenkins上でJobをつくる時のTips集です。

Tips

古いビルドを破棄する

スクリーンショット 2018-05-17 16.25.46.png

古いビルドの破棄にチェックを入れてビルドの保存日数や最大数を設定します
高度な設定からビルドの成果物の日数や最大数を設定することも可能です。
Jenkinsマシンの容量不足対策になります。

クローンとフェッチのタイムアウト

スクリーンショット 2018-05-17 16.30.37.png

ソースコード管理でGitを使う場合には、タイムアウト時間を設定することが可能です。
[ソースコード管理] -> [Git] -> [追加処理] -> [Advanced clone behavious]から設定ができます。
何も設定しない場合には10分です。大きなレポジトリの場合、やや短いこともありここでJobがこけることもあるので注意です。

レポジトリの一部分をクローンする

Sparse checkout pathsで欲しいディレクトリだけcloneしてくることが可能になっています。
スクリーンショット 2018-05-17 17.14.00.png

プロジェクトの削除を行ってもslaveのworkspaceは残ってしまう問題への対応

スクリーンショット 2018-05-17 16.35.59.png

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

参考
* https://stackoverflow.com/questions/39868578/security-codesign-in-sierra-keychain-ignores-access-control-settings-and-ui-p

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