Jenkins
下载
官网下载
如果下载 war
包,请 进入官网 进行下载;
如果使用 yum
方式安装,无需下载,请直接往下看↓
安装
本教程以 CentOS 7
为例进行讲解。
提示
Jenkins运行需要先安装 Java
环境(我安装的 Java17
,传送门)和 Git
,如果是前端项目部署,还需要安装 Node
环境。
使用root用户执行:
1. yum安装Jenkins
# 下载依赖
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
# 导入秘钥
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
# 进行安装
yum install jenkins
2. 安装字体程序
yum install fontconfig
3. 创建Jenkins工作目录(推荐创建)
mkdir /usr/local/jenkins_home
4. 添加环境变量
提示
添加环境变量的作用是,后期配置执行脚本比较方便,这里建议添加。
vim /etc/profile
# 添加下方环境变量
#jenkins
export JENKINS_HOME=/usr/local/jenkins_home
刷新配置文件
source /etc/profile
5. 修改配置文件
提示
旧版本Jenkins的配置文件在这个位置/etc/sysconfig/jenkins(即使存在应用中,但是已不起作用),而新版本的配置文件在/usr/lib/systemd/system/jenkins.service,一定不要改错了。
# 修改配置文件
vim /usr/lib/systemd/system/jenkins.service
修改如下参数:
User=root
Group=root
Environment="JENKINS_HOME=/usr/local/jenkins_home"
WorkingDirectory=/usr/local/jenkins_home
Environment="JAVA_HOME=/opt/java/jdk-21"
Environment="JENKINS_PORT=8002"
增加如下参数(目的是为了禁用 CSRF 保护): 在 Environment="JAVA_OPTS=-Djava.awt.headless=true
后面增加(中间加一个空格) -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
,增加后如下所示:
Environment="JAVA_OPTS=-Djava.awt.headless=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true"
上述修改的解释
- 工作目录位置建议修改;
- jenkins用户,默认为
jenkins
,需修改为root
,否则后期会出现权限问题; - 默认端口号为
8080
,为防端口冲突,修改为8002
。
6. Jenkins启动(本次启动主要是为了在JENKINS_HOME中生成文件)
systemctl start jenkins
执行上述命令后,随即即可执行停止命令。
systemctl stop jenkins
7. 更换源(非常重要,否则无法启动)
find / -name *.UpdateCenter.xml
结果是 /usr/local/jenkins_home/hudson.model.UpdateCenter.xml
,如果没有执行第3步和低4步,则这里的结果是 /var/lib/jenkins/hudson.model.UpdateCenter.xml
。
将url标签里面的内容 https://updates.jenkins.io/update-center.json
改为 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
8. Jenkins再次启动
systemctl start jenkins
新版Jenkins启动需要大约15s时间。
默认密码查看
cat /usr/local/jenkins_home/secrets/initialAdminPassword
9. 登录Jenkins,修改全局安全配置
勾选“匿名用户具有可读权限”
目的
第5步“禁用CSRF保护” 和 第9步 是为了解决WebHook请求报403的问题。
配置
- 左侧菜单选择“新建任务”。
- 输入一个任务名称
yunji
(这里以“云记”为例),选择“构建一个自由风格的软件项目”,点击“确定”。 - 源码管理:选择“Git”,在“Repository URL”中添加码云上项目的SSH下载路径(git@...yunji.git)。在“Credentials”中点击“添加”按钮,选择“Jenkins”,类型选择“SSH Username with private key”,填写用户名(Gitee的登录名),点击单选按钮“Enter directly”,点击右侧“Add”按钮,添加您的私钥(点我查看如何生成公钥与私钥),特别提醒,这里要填私钥,不是公钥。点击添加即可。
- 构建触发器:勾选“Generic Webhook Trigger”,“Token”添加一个字符串,这里在码云中添加URL的时候会用到。
- 构建:添加构建步骤中选择“执行shell”,在命令栏中添加:
- 打开码云,选择对应的项目,选择“管理”→“WebHooks”→点击右侧“添加webHook”→输入URL地址:
http://Jenkins的IP:Jenkins的端口/generic-webhook-trigger/invoke?token=第4步设置的字符串
,选择事件:Push、激活,点击“添加”即可。
其他
- 停止Jenkins:
systemctl stop jenkins
- 重启Jenkins:
systemctl restart jenkins
- 开机自启Jenkins:
systemctl enable jenkins
反向代理
# http访问
upstream jenkins {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name jenkins.dongyunit.com;
charset utf-8;
client_body_buffer_size 10M;
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_next_upstream error timeout invalid_header http_502 http_503 http_504;
proxy_ignore_client_abort on;
proxy_read_timeout 180;
proxy_buffering on;
proxy_buffer_size 8k;
proxy_buffers 8 8M;
gzip on;
gzip_min_length 1000;
gzip_types text/plain text/css application/json text/xml application/xml application/xml+rss text/javascript;
location / {
proxy_pass http://jenkins;
proxy_redirect default;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}