jenkins安装及国内源配置
安装
-
docker安装或运行:
docker pull jenkins/jenkins:lts
docker pull jenkins/jenkins
-
yum安装
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key yum install jenkins
运行
-
war包:
nohup java -jar jenkins.war --ajp13Port=-1 --httpPort=9999 > jenkins.log 2>&1 &
[1] -
docker:
JENKINS_HOME='/var/jenkins_home'
mkdir $JENKINS_HOME
chmod 777 -R $JENKINS_HOME
docker run -d -p 8882:8080 -p 50000:50000 -v $JENKINS_HOME:/var/jenkins_home --name=jenkins --restart=unless-stopped jenkins/jenkins:lts
- yum:
systemctl start jenkins
国内源配置
先不急着登录, 因为Jenkins
默认的插件更新源地址是 https://updates.jenkins.io/update-center.json
。不过,由于网络原因,国内用户访问 Jenkins 官方插件更新源可能会比较慢,甚至出现超时的情况。因此,通常建议将 Jenkins
的插件更新源更换为国内的镜像源,以提高下载速度和稳定性。
以下是一些常用的国内 Jenkins 插件更新源地址:
清华大学:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
华为开源镜像站:https://mirrors.huaweicloud.com/jenkins/updates/update-center.json
腾讯云:https://mirrors.cloud.tencent.com/jenkins/updates/update-center.json
中国科学技术大学:https://mirrors.ustc.edu.cn/jenkins/updates/update-center.json
北京理工大学:https://mirror.bit.edu.cn/jenkins/updates/update-center.json
筛选最新源
我们以这几个常用源为例, 写个测试脚本, 确保使用最新的源:
echo "正在扫描..."
echo ""
declare -A dict
jenkins_mirrors=("mirrors.tuna.tsinghua.edu.cn" "mirrors.huaweicloud.com" "mirrors.ustc.edu.cn" "mirror.bit.edu.cn" "mirrors.cloud.tencent.com")
latest_update_utc=0
for mirror in "${jenkins_mirrors[@]}"; do
date_time_str=$(timeout 1 curl -v -k https://${mirror}/jenkins/plugins/git/latest/ 2>/dev/null | grep git.hpi | grep -oP '\d{2}(-| )[A-Za-z]{3}(-| )\d{4} \d{2}:\d{2}' | xargs -I{} date -d "{}" +%s) || 0
if [[ -z $date_time_str ]]; then
date_time_str=0
fi
# echo $mirror:$date_time_str
if (( $date_time_str > $latest_update_utc )); then
latest_update_utc=$date_time_str
fi
dict[$mirror]=$date_time_str
done
echo "最新更新时间:"$(date -d @"$latest_update_utc" +"%Y-%m-%d %H:%M")
keys_with_max_value=()
# 遍历字典,找到最大值及其对应的键
for key in "${!dict[@]}"; do
if (( ${dict[$key]} == $latest_update_utc )); then
keys_with_max_value+=("$key") # 添加到数组
fi
done
available_host=''
update_center_url=''
select mirror_host in ${keys_with_max_value[@]}; do
break
done
http_update_center_url=http://${mirror}/jenkins/updates/update-center.json
https_update_center_url=https://${mirror}/jenkins/updates/update-center.json
if wget -q --spider "${http_update_center_url}"; then
update_center_url=${http_update_center_url}
elif wget -q --spider "${https_update_center_url}"; then
update_center_url=${https_update_center_url}
else
echo "无可用源"
exit 1
fi
read -p "输入jenkins系统配置目录(默认为当前目录)" jenkins_home
jenkins_home=${jenkins_home:-$(pwd)}
default_json=${jenkins_home}/updates/default.json
update_center_xml=${jenkins_home}/hudson.model.UpdateCenter.xml
echo "更新$default_json"
sed -i "s#updates.jenkins.io/download#${mirror_host}/jenkins#g" $default_json
sed -i 's#www.google.com#www.baidu.com#g' $default_json
echo "更新$update_center_xml"
sed -i "s#https://updates.jenkins.io/update-center.json#${update_center_url}#g" $update_center_xml
echo "恭喜完成配置, 请重启jenkins:"
echo "docker restart jenkins"
echo "systemctl restart jenkins"
本文假设https://mirrors.ustc.edu.cn/jenkins/updates/update-center.json
为最新源
配置原理:
默认情况下,Jenkins 的配置文件位于/var/jenkins_home/updates/default.json
, 如果该文件不存在,可能会使用/var/lib/jenkins/hudson.model.UpdateCenter.xml
。
初始化密码
刚开始登录需要初始密码,jenkins
将其打印在日志中。
- war包:
tail -f jenkins.log
- docker:
docker logs -f jenkins
- yum:
tail -f /var/log/jenkins/jenkins.log
无论哪种方式,得到类似如下信息:
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
f300b000b5284cedaf49da7410217313
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
此时即可使用f300b000b5284cedaf49da7410217313
登录。
重启 Jenkins:
重启 Jenkins 服务以使配置生效:
systemctl restart jenkins
如果 Jenkins 是通过 Docker 运行的,可以使用以下命令重启容器:
docker restart jenkins
验证配置是否生效
检查插件更新:
在 Jenkins 管理界面中,进入 “插件管理” 页面,查看是否有新的插件可用。
尝试安装一个新插件,以验证国内源是否生效。
检查日志:
查看 Jenkins 的日志文件(通常位于 /var/lib/jenkins/logs/),确认插件下载和安装过程中没有错误。
常用国内源
更多
官网已经整理了各个系统的安装包,而且还提供了脚本,非常方便。
设置环境变量
JENKINS_HOME=/usr/local/jenkins
并开放端口:firewall-cmd --zone=public --add-port=9999/tcp --permanent
↩︎