一、准备相关软件
整个自动化部署的过程就是从git仓库拉取最新代码,然后使用maven进行构建代码,构建包构建好了之后,通过ssh发送到发布服务的linux服务器的目录,最后在此服务器上执行相关的linux命令进行发布。
此篇文章jenkins的版本是2.440.3, git是1.8.3.1,maven是3.6.3,jdk版本用的是17和8。jenkins.war运行需要用到高版本jdk17,maven用的是jdk8。
1.1 git
centos系统可以yum安装
1.2 maven
开发、测试、生产所有的环境版本要保持一致,到国内镜像或官网下载zip版本,使用时直接解压,配环境变量
1.3 jenkins
war包方式运行,不同版本的jenkins对应的java版本是不同的,参考官网说明。比如2.440.3版本,java17以上版本可以运行,java8不可以运行。命令参考如下:
nohup /home/app/jdk-17/bin/java -jar /home/app/jenkins.war --httpPort=8100 > /home/app/logs/jenkins.log 2>&1 &
二、Manage Jenkins/全局配置
2.1 用户名密码
开始就会让你创建admin用户,修改密码的话可以通过右上角“账户->设置->Password”,输两遍密码即可
2.2 系统配置
Jenkins主目录,服务地址,Gitee配置(Gitee Api令牌)。ssh服务器(ip,账户密码,默认的基准目录,建议配置为根路径/,否则任务地方配置的远程目录就有问题了)
Jenkins主目录
jenkins服务地址
Gitee配置(Gitee Api令牌)
SSH服务器配置
2.3 工具配置
jdk(解压目录),maven(settings目录,解压目录),git(可执行的命令终端的目录)
插件配置:git、maven、ssh发布相关的插件
maven的settings配置
jdk配置,可以配置多个
git可执行终端的位置
maven安装目录
2.4 插件下载
核心插件:
- Git Plugin: 用于从Git仓库拉取代码。这个插件允许Jenkins与Git版本控制系统交互,执行代码检出等操作。
- Git Parameter : 如果你的构建需要根据不同的Git分支或其他Git参数动态变化,这个插件可以让你在构建触发时选择Git参数。
- Maven Integration plugin: 这个插件允许Jenkins识别和执行Maven构建任务。它使得Jenkins能够基于Maven的POM.xml文件自动构建Java项目。
- Publish Over SSH: 如果你的自动化部署流程包括通过SSH将文件传输到远程服务器或在远程服务器上执行命令,这个插件就非常关键。它支持通过SSH安全地上传文件和执行命令。
其他插件:
- Gitee Plugin: 专门用于与Gitee(码云)平台集成,支持WebHook触发、代码自动检出及构建状态反馈等功能。
- GitLab Plugin: 允许Jenkins与GitLab进行集成,支持WebHook触发构建、代码同步等功能。
- GitHub Plugin: 基础插件,用于与GitHub进行基本的集成,如WebHook触发、认证管理等。
三、新建item/任务配置
3.1 git
设置git代码库地址,账号,分支
3.2 Send build artifacts over SSH
即ssh发送构建包到服务器
3.2.1 Source files
构建软件包的源目录Source files(对应"<jenkins_home>/workspace/<job>/"后面的目录)
3.2.2 Remove prefix
Source files中除了构建包包名以外的前缀部分
3.2.3 Remote directory
目标目录(远程服务器存放构建包目录),
3.2.4 Exec command
上传构建包以后要执行的命令,命令多的话,建议放在shell脚本中执行shell就行,如:sh /home/app/scripts/start.sh
Exec command注意点如下:
1)打开执行命令的日志:即Verbose output in console选项打勾,否则你无法知道命令的执行情况,无法更好地排查问题。
2)shell脚本最好在linux上修改,如果是windows的脚本到linux上执行需要额外处理,在非insert模式下输入:set fileformat=unix。因为windows换行是\r\n,而linux的换行是\n。
3)Exec in pty选项有可能影响命令执行,可考虑勾选
4)shell脚本中涉及到的程序构建包和目录,必须要有执行权限。可通过chmod +x命令来
5)shell脚本开头加上这两行,否则有可能找不到shell执行终端和环境变量
#!/bin/bash
source /etc/profile
6)shell脚本结尾加上这行,执行睡眠,否则nohup无法执行成功
sleep 10s