Jenkins 简明教程

Jenkins 简明教程


2018-09-03

最近不知道为什么,macos 中编译 Spring boot 项目变的越来越慢,无奈将编译任务交给服务器来做,速度果然快了很多。如果每次上传、编译、运行的动作都自己手工来做,很浪费时间,Jenkins 可以帮我自动地完成这些工作。

安装 Jenkins

根据官网要求服务器硬件配置需要大于 512M 内存和 10GB 的硬盘空间,需要预安装 JDK 8 (或更新的版本) 和 Docker 。满足上述要求后,下载 Jenkins 的 war 包,运行 java -jar jenkins.war --httpPort=8080 即可启动 Jenkins。

启动后,按照提示下一步即可,在选择安装软件时,推荐的软件直接安装。如果是自己使用,并不需要新建用户,直接使用管理员登陆,记住密码。如果忘记了登陆密码,可以根据提示,去相应的目录下查看。

Jenkins 配置

Global Tool Configuration

配置 JDK、Git、Maven 和 Docker 的安装位置,保存。

安装插件

除了安装 Jenkins 时默认安装的插件我们还需要两个插件:

  • Generic Webhook Trigger :在项目代码提交时可触发 Jenkins 拉取代码,开始构建。
  • Maven Integration plugin :在项目创建时可以选择 Maven 项目。

配置 SSH Key

由于我使用的是 Git 私有项目,所以必须使用正确的私钥才能拉取到项目代码。
使用命令 ssh-keygen -t rsa 生成公私钥,将公钥放在代码服务器,私钥填入 Jenkins 中的 Credentials ,以便在新建项目时使用。

项目配置

点击 New Item 开始新建项目,填入项目名称,选择 Maven Project。

在项目描述中勾选 Discard old builds ,Source Code Management 中选择 Git,并填入仓库相关信息,选择刚刚添加的私钥。

Build Triggers 中选择 Trigger builds remotely 并填入 token 值,建议长一些。由于某些 Git 服务器只接收 Get 请求的触发,所以我们使用了 Generic Webhook Trigger(勾选它)。

Pre Steps, Execute shell

1
2
3
4
5
6
echo "Stopping SpringBoot Application"
pid=`ps -ef | grep application-1.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill $pid
fi

Build,根文件是 pom.xml ,执行命令:clean package -Dmaven.test.skip=true

Post Steps,选择成功后执行。

1
2
3
4
5
rm -rf /usr/local/application/application-1.jar
rm -rf /usr/local/application/application.log
mv /root/.jenkins/workspace/application/target/application-1.jar /usr/local/application/application-1.jar
BUILD_ID=dontKillMe nohup java -jar /usr/local/application/application-1.jar > /usr/local/application/application.log 2>&1 &
echo "Happy Run !"

最后,将请求 token 在 Git 服务器中进行配置,即可使用 Jenkins 。