jenkins安装及国内源配置

安装

  1. Jenkins_War包下载

  2. docker安装或运行:

    • docker pull jenkins/jenkins:lts
    • docker pull jenkins/jenkins
  3. 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/),确认插件下载和安装过程中没有错误。

常用国内源

更多

官网已经整理了各个系统的安装包,而且还提供了脚本,非常方便。


  1. 设置环境变量JENKINS_HOME=/usr/local/jenkins并开放端口:firewall-cmd --zone=public --add-port=9999/tcp --permanent ↩︎

posted @ 2025-02-24 17:13  舒山  阅读(19)  评论(0编辑  收藏  举报