云记
首页
常用软件
操作系统
技术分享
东云生态
  • 技术网站
  • 其他
关于我们
首页
常用软件
操作系统
技术分享
东云生态
  • 技术网站
  • 其他
关于我们
  • 前端

    • WebStorm
    • Node.js
    • Nginx
  • 后端

    • IntelliJ IDEA
    • Java(JDK)
    • jd-gui
    • Maven
    • 项目部署
    • Nacos
  • 数据库

    • DataGrip
    • Navicat
    • PL/SQL
    • MySQL
    • Redis
  • 中间件

    • Tomcat
  • 版本控制

    • Git
    • TortoiseSVN
  • 自动化部署工具

    • Jenkins
  • SSH工具

    • MobaXterm
  • 其他

    • Beyond Compare 4
    • Jetbrains系列产品激活
    • 科学上网
    • Frp内网穿透

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的问题。

配置

  1. 左侧菜单选择“新建任务”。
  2. 输入一个任务名称 yunji (这里以“云记”为例),选择“构建一个自由风格的软件项目”,点击“确定”。
  3. 源码管理:选择“Git”,在“Repository URL”中添加码云上项目的SSH下载路径(git@...yunji.git)。在“Credentials”中点击“添加”按钮,选择“Jenkins”,类型选择“SSH Username with private key”,填写用户名(Gitee的登录名),点击单选按钮“Enter directly”,点击右侧“Add”按钮,添加您的私钥(点我查看如何生成公钥与私钥),特别提醒,这里要填私钥,不是公钥。点击添加即可。
  4. 构建触发器:勾选“Generic Webhook Trigger”,“Token”添加一个字符串,这里在码云中添加URL的时候会用到。
  5. 构建:添加构建步骤中选择“执行shell”,在命令栏中添加:
  1. 打开码云,选择对应的项目,选择“管理”→“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;
    }
}
最后更新时间:
贡献者: xiaozhe