Jenkins初探
随着技术的进步,我切入了越来越多的技术栈,但有一个问题却一直困扰我,就是编写代码后,本地环境和服务器环境不一致,像 Java 程序要打成 Jar 包,通过 ftp 传到服务器,数据库这类配置,服务器和本地环境不一样,也非常恼火。后来,接触到了持续集成(CI)。便学习了 Jenkins
Jenkins 是个啥
Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。
Jenkins 提供了一个平台,能够将恼人且耗时的编译部署环节自动完成,让程序员专心聚焦于代码,通过工作流的集成,也能提高工作效率。对于团队项目,能够降低工作成本。
Jenkins 安装
Jenkins 官网如上
下载
Jenkins 可以通过多种方式下载安装,如 Docker,war 包等,因为我们已经有了 Tomcat 做容器。所以选择了下载 War 包。
Jenkins 也有许多版本可选,建议选择 LTS 版本,更稳定。
安装
环境前提
- Linux(本文是阿里的龙蜥 OS,为 centos 社区分支)
- 有 Tomcat 环境
- 安装有 git
- 有 nginx
安装
在 Tomcat 目录下的 webapps 目录中
执行
wget https://get.jenkins.io/war-stable/2.346.1/jenkins.war
会将 jenkins 的 war 包下载至 Tomcat 的 webapps 目录下
此时 Tomcat 会自动解压 war 包
稍等片刻即可看到目录中有个名为 jenkins 的目录出现
配置 nginx
因为安全因素,我们的服务器并不希望开放太多端口,更希望进行端口复用,因此就需要用到 Nginx,Nginx 安装本文不再赘述。
在 nginx.conf 文件中新建 Server,放入如下内容
server
{
listen 443 ssl;
server_name <自己的域名>;
index index.php index.html index.htm default.php default.htm default.html;
ssl_certificate cert-file-name.pem; #需要将cert-file-name.pem替换成已上传的证书文件的名称
ssl_certificate_key cert-file-name.key ; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型
ssl_prefer_server_ciphers on;
#禁止访问的文件或目录
location / {
rewrite ^(.*)$ /jenkins/$1 last;
}
location /jenkins {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log /www/wwwlogs/jenkins.zzgpro.top.log;
error_log /www/wwwlogs/jenkins.zzgpro.top.error.log;
}
#这里是为了实现80强制跳转443
server{
listen 80;
server_name <自己的域名>;
rewrite ^(.*) https://$server_name$1 permanent;
}
配置 Jenkins
通过输入配置好的域名,就能进入以上初始化界面(Linux 我已经配置好了,这里用的 Windows)
初始密码在图中红色字体所提到的文件中
安装插件
这里选安装推荐的插件就好了
设置用户
插件安装好之后,就会进入创建用户界面,这里密码要仔细记得。不然忘了挺麻烦
初始化配置完成
配置完成后,就会进入如上,工作台界面。出现这个页面也就意味着。Jenkins 的基础配置完成
高级配置
在工作台左面板,选择系统管理,进入管理页面
选择插件管理
选择可选插件
下载以下几个插件
- Maven Integration
- Git
- Gitee
- Jersey 2 API
而后重启 Jenkins
重启 Jenkins 可以通过 urls 的请求来实现,在 Jenkins 根路径的最后,拼接/restart 即可
全局工具配置
退回管理面板,点击全局工具配置
配置 Maven
这里设置 settings.xml 文件,不要选择系统默认的 settings.xml
同时页面最下方也有 Maven 安装
这里配置自己的 Maven_HOME
JDK 配置
不要选择自动安装
Java_HOME,选择自己的 Java 目录
忘了自己的 Java 目录?
使用 java -verbose
刷到输出的第一行,便是 Java 目录
配置 GIT
这里不知道自己 git 路径的。可以 which git
随后,保存配置
Gitee 配置
gitee 是国内比较大的代码托管平台,网络状况对国内用户比较友好,这里我们配置 Gitee
退回系统管理,进入系统配置
下滑,刷到 Gitee 配置的位置
- 链接名可任意写
- gitee 域名 url 提示已给出
- 证书令牌,点击添加,凭证选择 Gitee 私人令牌,令牌获取地址:https://gitee.com/profile/personal_access_tokens
- 点击测试链接
出现成功,则配置完成
新建项目
退回工作台主页
左上角新建项目
新建 Maven 项目
Jenkins 还有很多可能,在这里我们选择 Maven 项目
名字任意输入
源码管理
仓库 url 输入自己的仓库路径
凭证添加,用户名为 Gitee 用户名,密码为 Gitee 密码
** 若添加无反应,可以直接在系统管理,凭据管理里添加**
构建触发器
勾选 Gitee webhook 触发
点击生成,稍后将会把这个密码添加到 Gitee 中
构建环境
勾选
build
保存
配置 Gitee
进入 gitee 自己的仓库页面,点击管理,左栏选择 webhook
点击添加
Gitee 会像 jenkins 推送一条请求
,如果正常。就会收到这样一条消息
那么,恭喜,Jenkins+git 工作流搭建成功
从此,往仓库推送代码,服务器便能自己完成构建。