踩了些坑瓮栗,記錄下
我的場(chǎng)景是一臺(tái)Mac mini做master命斧,另一臺(tái)Mac mini做slave
- Jenkins的插件中心安裝
ssh插件
- 節(jié)點(diǎn)列表中增加從節(jié)點(diǎn)
- 從節(jié)點(diǎn)電腦需要安裝和master同版本的Java環(huán)境
- 確保從節(jié)點(diǎn)使用固定的內(nèi)網(wǎng)ip琢唾,需要在系統(tǒng)設(shè)置->共享->打開遠(yuǎn)程登錄
- 從節(jié)點(diǎn)配置使用userName password登錄(使用ssh公鑰也行)
- 從節(jié)點(diǎn)環(huán)境變量
我需要執(zhí)行的Job都是一些shell腳本寡壮,在從節(jié)點(diǎn)中執(zhí)行時(shí)生闲,默認(rèn)無(wú)法訪問(wèn)到所有環(huán)境變量,比如會(huì)出現(xiàn)command not found
,需要再shell中手動(dòng)導(dǎo)出下
#導(dǎo)入環(huán)境變量
source ~/.bash_profile
source ~/.zshrc
# todo ..
- 打包腳本遇到簽名錯(cuò)誤,如這種
...xxxKitExtension.appex: errSecInternalComponent Command CodeSign failed with a nonzero exit code
解決方法是在腳本增加鑰匙串登錄命令
(下面的判斷可以不要属瓣,我是有需要才加的)
# 登錄從節(jié)點(diǎn)鑰匙串
if [ $(hostname) == "ios_slave_1.local" ]; then
echo "登錄從節(jié)點(diǎn)鑰匙串"
security unlock-keychain -p "password" ~/Library/Keychains/login.keychain
fi
問(wèn)題1: 打包機(jī)磁盤占用很高
- 僅保留有限的構(gòu)建日志,job配置里 ->
丟棄舊的構(gòu)建 -> 保持構(gòu)建的最大個(gè)數(shù)(50-100即可)
- 腳本定期清理構(gòu)建產(chǎn)物, 我設(shè)置job每周執(zhí)行一次
定時(shí)構(gòu)建 -> 日程表(H 5 * * 6)
echo "清理7天前的內(nèi)網(wǎng)包."
# 設(shè)置根目錄
root_dir="xxxx/itms-services"
# 計(jì)算7天前的時(shí)間(秒)
# $(date +%s) 獲取當(dāng)前時(shí)間的秒數(shù)
threshold=$(( $(date +%s) - 7 * 24 * 60 * 60 ))
# 遞歸遍歷目錄 (3層)
find "$root_dir" -type d -maxdepth 3 -mindepth 3 -print0 | while IFS= read -r -d '' dir; do
# 獲取文件夾的修改時(shí)間戳(秒)
mtime=$(stat -f %m "$dir") # macOS 上使用 %m 獲取修改時(shí)間
# 檢查時(shí)間戳是否大于閾值(即是否早于7天前)
if [ "$mtime" -lt "$threshold" ]; then
rm -rf "$dir"
else
echo "step this dir"
fi
printf "\n"
done