前面了解了 Jenkins 上各种任务的区别后,我们就来实践应用下,先创建一个【文件夹】类型的任务,将我们目前的一些基础的演示任务【移动】到文件夹里面去,这样可以先做个简单的分类。
新建一个【文件夹】类型的任务,名称为 Jenkins-Basic:
可以看到【文件夹】类型的任务可配置的内容很少,不做特殊设置,默认即可:
然后我们将前面的演示项目移动到这个文件夹下面:
接下来我们将做个实战任务,演示任务的构建、打包、上传、部署等操作,以及详细解析任务的各个配置阶段。
新建一个【构建一个自由风格的软件项目】类型的任务,名称为 demo-todo-list:
配置如下:
我构建了多次才成功,主要是下载构建工具 Gradle 超时,在第九次构建后才成功,构建后看看日志如下:
我们现在调整下配置,在【构建后操作】下面添加一项【Send build artifacts over SSH】,这样做的目的是将我们构建出来的可执行 jar 包发送到我们的服务器,然后在用命令行启动我们的 Spring boot 应用:
简单说下这里的配置:在 SSH Server Name 这里展开选择我们之前配置好的一台服务器;Source files 定位到我们 jar 包的位置;Remove prefix 和 Remote directory 是可选的,我这里为了目录简洁,在 Remove prefix 这里填入 build/libs/,这表示会将 Source files 中 build/libs/demo-todo-list*.jar 的前面 build/libs/ 移除掉;Remote directory 我这里填入的是 service-deploy,这表示将文件发送到远程服务器用户目录下的 service-deploy 文件夹下面,需要注意的是要确保目录 service-deploy 存在。然后在 Exec command 处填入下面的指令: # 进入到指定的目录 cd service-deploy # 检查服务是否在运行,如果在运行就将其停掉 ps -ef | grep demo-todo-list | grep -v grep | awk '{print $2}' | xargs kill -15 | echo "todo list 服务不存在" # 将旧的 jar 删除 rm -rf demo-todo-list.jar # 将新的 jar 重命名下 mv demo-todo-list*.jar demo-todo-list.jar # 启动我们的服务 nohup java -jar demo-todo-list.jar > /dev/null 2>nohup.log &