Jenkins换源解决方案

博文背景

Jenkins换源一直难住了我,这次趁此机会彻底解决这个问题。
在我琢磨了很多方案之后,最终选择了这个办法,希望对读者有所帮助。

具体操作

1.安装Jenkins软件

前面的大同小异的东西就不在这里说了,先假设读者进行到这一步
unlock jenkins
输入密码点击下一步过后等一小会应该会出现
/var/lib/jenkins/updates/default.json
这个文件,然后我们使用文本替换命令对它里面的内容进行替换

sudo sed -i 's/updates.jenkins-ci.org\/download/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /var/lib/jenkins/updates/default.json
sudo sed -i 's/www.google.com/www.baidu.com/g' /var/lib/jenkins/updates/default.json

后面应该会出现安装插件的界面,我建议安装推荐插件,然后配置好密码。

2.配置文本替换程序

首先我们要安装监控程序监控那个文件的变化

sudo apt install inotify-tools

然后创建一个监控脚本来监控文件的变化并执行替换操作

ubuntu@focal:~$ ls -l /opt/jenkins/sed_updates_json.sh
-rwxrw-r-- 1 ubuntu ubuntu 296 Sep 10 16:23 /opt/jenkins/sed_updates_json.sh
ubuntu@focal:~$ cat /opt/jenkins/sed_updates_json.sh
#!/usr/bin/bash
while inotifywait /var/lib/jenkins/updates/default.json; do 
sudo sed -i 's/updates.jenkins-ci.org\/download/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /var/lib/jenkins/updates/default.json; 
sudo sed -i 's/www.google.com/www.baidu.com/g' /var/lib/jenkins/updates/default.json; 
done

再安装进程管理程序supervisor保证上面的脚本一直处于运行状态

sudo apt install supervisor

配置进程管理文件

参考https://www.jianshu.com/p/0b9054b33db3进行操作

执行echo_supervisord_conf可以查看到模板文件

ubuntu@focal:~$ cat /etc/supervisor/conf.d/sed_jenkins.conf
[program:sed_jenkins]
command=/opt/jenkins/sed_updates_json.sh
directory=/tmp
autostart=true
autorestart=false
user=ubuntu
stderr_logfile=/tmp/sed_jenkins_stderr.log
stdout_logfile=/tmp/sed_jenkins_stdout.log
redirect_stderr=true
stdout_logfile_maxbytes=20MB
stdout_logfile_backups=20

重新加载配置文件

sudo supervisorctl update
sudo supervisorctl status
sudo supervisorctl start sed_jenkins

替换upate site
update site

https://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

点击Check Now按钮

并执行head -c 800 /var/lib/jenkins/updates/default.json发现文本已被替换
jenkins baidu

### 如何在 Jenkins 中实现镜像的自动替换 #### 使用 Docker 插件管理容器镜像 为了实现在 Jenkins 构建过程中自动替换使用的 Docker 镜像,可以利用 Jenkins 的 Docker 插件来完成这一操作。Docker 插件允许定义特定版本或标签的镜像用于构建环境。 通过 `Jenkins->Manage Jenkins->Configure System` 可以配置全局工具中的 Docker 设置[^1]。对于更灵活的应用场景,在 Pipeline 脚本内指定所需镜像是常见做法: ```groovy pipeline { agent { docker { image 'node:latest' } } stages { stage('Build') { steps { sh 'npm install' } } } } ``` 此脚本示例展示了如何切换到最新版 Node.js 官方镜像执行 npm 命令。如果要动态改变所用镜像,则可以通过参数化构建或者变量传递给 pipeline 来达成目的。 #### 利用 Webhook 实现 CI/CD 流水线触发更新 当新的 Docker 镜像被推送到仓库时,可通过设置 webhook 至 Jenkins 服务器监听此类事件,并据此启动相应的流水线作业来进行测试验证或是生产部署等工作流。这种方式能够确保每次有新版本发布都能及时响应并应用最新的变更。 #### 参数化 Build 和条件逻辑控制 借助于 Jenkins 提供的强大 Groovy 支持能力,可以在编写 Pipelines 时加入更多复杂的业务逻辑判断语句,比如根据不同分支、tag 或者其他因素决定具体采用哪个镜像版本;也可以让用户输入想要使用的镜像名称作为 build parameter,从而达到更加个性化的定制需求。 ```groovy parameters { string(name: 'DOCKER_IMAGE', defaultValue: 'myapp:v1', description: 'Which Docker Image to use') } stages { ... stage('Deploy with selected image'){ when{ expression{ return params.DOCKER_IMAGE != null && !params.DOCKER_IMAGE.isEmpty() } } steps { script { echo "Using ${params.DOCKER_IMAGE}" // Use the provided DOCKER_IMAGE here... } } } } ``` 上述代码片段说明了怎样创建一个字符串类型的参数让使用者自定义要拉取的镜像名,同时仅当该字段不为空白的情况下才会进入对应的处理阶段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值