安装Jenkins实现自动化部署

0. 前言

和同事做网站,我负责后端代码开发。每次写完代码,都要打包上传到服务器,手动执行脚本,太累。我一直跟我的小兄弟们说,如果一件事情要做3遍以上,你就需要考虑自动化。今天弄个Jenkins做自动化部署,从繁重的手动操作中解放出来。

1. 配置yum源并安装Jenkins

CentOS官方yum源未提供Jenkins ,需要配置yum.repo。

0. 下载yum.repo文件

1
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo

jenkins.repo文件下载到/etc/yum.repos.d/目录下看到

1. 导入公钥

1
rpm --import http://pkg.jenkins.io/redhat-stable/jenkins.io.key

2. 安装

1
yum install jenkins

3. 配置

Jenkins工作目录为/var/lib/jenkins/,配置文件位于/etc/sysconfig/jenkins

Jenkins默认端口为8080,8080我已经使用了,所以改成其他端口,并在Nginx反向代理到该端口。

Jenkins会使用/usr/bin/java作为默认Java安装位置,修改java所在位置为正确位置。

4. 启动

1
service jenkins start

注意:这里启动可能失败。我遇到的问题是配置文件里的修改没起作用。我把应用的8080改成其他端口了,并且建了一个软连接:

1
ln -s /xxx/xxx/java /usr/bin/java

update:我第二次安装的时候仍然启动失败,报找不到java的错误。google了一圈,发现Jenkins用systemctl启动时读取的是/usr/lib/systemd/system/jenkins.service。删掉这个文件,在/etc/init.d/jenkins配置好java路径,启动成功

2. 配置Jenkins工具、插件

在浏览器打开Jenkins,需要输入/var/lib/jenkins/secrets/initialAdminPassword文件中的安全码,设置好用户名及插件

在体统管理->全局工具配置中,根据实际目录配置java、maven、git等信息。

因为要在构建成功后启动spring boot程序,还要安装build post task插件。

3. 开始使用

点击新建任务,输入任务名。因为只是为了实现自己简单的部署,选择第一个选项:构建软件项目。

逐项开始设置:

  1. General

    我只选择了丢弃旧的构建,保留最多5个构建记录

  2. 源码管理

    选择Git,填入repository地址和响应的credential,选择对应的分支

  3. 构建触发器

    直接选轮询 * * * * *每分钟检测一次代码更新

  4. 构建环境

  5. 构建

    调用之前设置的maven配置,目标填clean package

  6. 构建后操作

    选择post build task,输入脚本执行cp和sh start.sh命令,勾选只有之前所有步骤全部成功时才执行

4. 坑

  1. 权限问题。

    执行构建不成功,查看log发现下载依赖时出错。把maven本地仓库所有者改成了jenkins解决了

  2. 有些人遇到启动程序后被kill掉的问题,在执行脚本时修改BUILD_ID解决问题。我没遇到