Jenkins自动化部署gitee项目到阿里云ECS服务器
环境准备
搭建maven、java、git环境
Jenkins安装
Jenkins(网址是 jenkins.io/) 是一个开源项目,它是一个基于 Java 的持续集成系统。我们可以在 Jenkins 上配置持续集成的任务,让机器自动完成构建(build),集中展示集成中存在的错误,提供详细的日志文件,提醒功能,以及用图表的形式展示项目构建的趋势和稳定性。
Linux安装Jenkins
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
//这里是Ubuntu进行安装
sudo apt-get update
sudo apt-get install jenkins
//CentOS进行安装默认使用yum进行安装
sudo yum update
sudo yum install jenkins
安装完成后,它会自动启动 Jenkins 服务。我们看一下它的状态,从屏幕输出可以看到,它当前正常运行。
[root@iZ2vc1e3nnjpo1cayr4utfZ ~]# sudo systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation Server
Loaded: loaded (/etc/rc.d/init.d/jenkins; generated)
Active: active (running) since Fri 2021-06-25 21:37:28 CST; 21h ago
Docs: man:systemd-sysv-generator(8)
Process: 1712 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)
Tasks: 86 (limit: 10995)
Memory: 1.0G
CGroup: /system.slice/jenkins.service
├─1669 java -jar /www/wwwroot/myblog/myblog.jar --server.port=443
└─2661 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=tru>
Jun 25 21:37:25 iZ2vc1e3nnjpo1cayr4utfZ systemd[1]: Starting LSB: Jenkins Automation Server...
Jun 25 21:37:25 iZ2vc1e3nnjpo1cayr4utfZ runuser[1742]: pam_unix(runuser:session): session opened f>
Jun 25 21:37:28 iZ2vc1e3nnjpo1cayr4utfZ runuser[1742]: pam_unix(runuser:session): session closed f>
Jun 25 21:37:28 iZ2vc1e3nnjpo1cayr4utfZ jenkins[1712]: Starting Jenkins [ OK ]
Jun 25 21:37:28 iZ2vc1e3nnjpo1cayr4utfZ systemd[1]: Started LSB: Jenkins Automation Server.
Jenkins 默认的侦听端口是8080,通过浏览器输入 ubuntuvm1 虚拟服务器地址和8080端口即可访问。首次访问需要解锁,请按屏幕提示操作。例如,从虚拟机里面查到密码是 “2bcb508f031743d5ada3fefb93e3167d”,将它填写在 “Administrator password” 输入框里,再按 “Continue” 按钮提交。
选择让 Jenkins 加载常用的插件。
Jenkins配置
1、修改Jenkins默认端口
默认端口是8080,该端口经常被使用,因此换一个不常用端口用来访问Jenkins,通过vim编辑器修改Jenkins默认访问端口
vim /etc/sysconfig/jenkins
为了方式权限出现Permission Denied
这个问题,可将JENKINS_USER
设置为root用户
2、插件安装
前往 Manage Jenkins -> Manage Plugins -> Available,在 Filter 中搜索 Gitee:
下方可选列表中勾选 Gitee(如列表中不存在 Gitee,则点击 Check now 更新插件列表),然后点击“Download now and install after restart”。
在安装页面勾选“Restart Jenkins when installation is complete and no jobs are running” 安装完之后,可以在 “installed” 页面看到 Gitee 插件
3、Gitee插件配置
1)前往 Jenkins -> Manage Jenkins -> Configure System -> Gitee 配置 -> Gitee 链接
2)在 链接名 中输入 Gitee 或者你想要的名字
3)Gitee 域名 URL 中输入码云完整 URL地址: gitee.com (码云私有化客户输入部署的域名)
4)证书令牌 中如还未配置码云 APIV5 私人令牌,点击 Add - > Jenkins
Domain 选择 全局凭据 Kind 选择 Gitee API 令牌 Scope 选择你需要的范围 Gitee API Token 输入你的码云私人令牌,获取地址:gitee.com/profile/per… ID, Descripiton 中输入你想要的 ID 和描述即可。
5)Credentials 选择配置好的Gitee API Token
6)点击 Advanced ,可配置是否忽略 SSL 错误(适您的Jenkins环境是否支持),并可设置链接测超时时间(适您的网络环境而
7)点击Test Connection,查看是否能够访问,如失败请检查以上 3,5,6 步骤。
4、配置其它插件
1)进入global tool configuration
2)配置jdk、maven、Git插件
5、配置Global Environment
1)点击进入系统设置
2)添加全局变量
项目部署
1、新建项目
项目创建成功:
2、配置项目
1)Gitee Connection选中上面建好的gitee api token
2)配置git远程仓库
3)添加Credentials(因为仓库是码云的,这里配置登录码云的用户名及密码)
远程仓库配置完毕,自动刷新(配置完了不会报错的,如果报错,请参考文章末尾的遇到问题)
4、编写脚本设置项目定时构建时间(设置触发器)
5、编写命令构建项目
编写项目构建命令:
#echo "输出PATH变量"
#echo $PATH
# 重新打包
echo "开始重新打包"
mvn clean install
echo "打包完毕"
whoami
echo "准备重启"
# 找到之前项目jar包进程ID并杀死
pid=`ps -ef | grep myblog.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill -9 $pid
fi
echo "停止运行"
#转移到tomcat webapps目录下
cp target/myblog.jar /www/wwwroot/myblog
# 后台运行项目jar包
nohup java -jar /www/wwwroot/myblog/myblog.jar --server.port=443 >myblog.log 2>&1 &
项目配置完毕。
3、构建项目
项目配置完了,接下来就开始构建项目
1)Build Now
2)进入终端查看输出
4、项目构建成功
构建成功啦,因为是个博客项目,接下来可以访问一下:caifl.top
如果遇到问题,参考下面的遇到问题!
遇到问题:
1、cp: cannot create regular file '/usr/local/tomcat/tomcat-9.0.41/webapps/myblog.war': Permission denied
问题描述:
cp: cannot create regular file '/usr/local/tomcat/tomcat-9.0.41/webapps/myblog.war': Permission denied
# 尝试通过chmod命令进行授权
chmod 777 /usr/local/tomcat
如果不行,则修改Jenkins用户
vim /etc/sysconfig/jenkins
2、Non-resolvable parent POM for com.cfl:MyBlog:1.0.0: Could not transfer artifact org.springframework.
问题描述:
Non-resolvable parent POM for com.cfl:MyBlog:1.0.0: Could not transfer artifact org.springframework.
问题原因:
pom文件有两个org.springframework.boot
包的依赖
解决:
删除重复的那个依赖
3、tomcat启动一闪而过
问题描述:
tomcat启动之后一闪而过,直接停止运行
查看logs目录下的日志:
Error: Could not find or load main class org.apache.catalina.startup.Bootstrap
Error: Could not find or load main class org.apache.catalina.startup.Bootstrap
Error: Could not find or load main class org.apache.catalina.startup.Bootstrap
Error: Could not find or load main class org.apache.catalina.startup.Bootstrap
Error: Could not find or load main class org.apache.catalina.startup.Bootstrap
Error: Could not find or load main class org.apache.catalina.startup.Bootstrap
Error: Could not find or load main class org.apache.catalina.startup.Bootstrap
问题原因:原因不明,可能是tomcat压缩包是src版本而非bin版本,亦或者是其它环境问题
解决办法:重新下载tomcat-9.0.48-bin.tar.gz安装包
4、Jenkins - mvn: command not found
问题描述:Jenkins - mvn: command not found,Jenkins部署构建项目时,console output显示mvn 命令无法找到
问题原因:
Linux对于java或maven的路径的环境变量是放在/etc/profile中的, 而/etc/profile只有在用户登录的时候才会被load,Jenkins在运行命令时,使用的是Non-login的方式,而这种方式在运行命令时,/etc/profile是不会被load进来的,所以jenkins只能在当前路径下寻找可执行文件.
解决办法:
在Jenkins的设置中可以设置全局变量, jenkins主页面->Manage Jenkins->Configure System->Global Properties 中, 将Environment variables复选框选中,会出来List of variables, 填入以下内容:
- name: JAVA_HOME value:XXX
- name: M2_HOME value:/usr/cyz/apache-maven-3.6.1
- name:
PATH+EXTRA
value: $M2_HOME/bin
注意最后标红的 PATH+EXTRA
, 这表示PATH=EXTRA:$PATH, 即扩展当前的PATH变量.
设置之后build成功.