Jenkins自动化部署gitee项目到阿里云ECS服务器

Jenkins自动化部署gitee项目到阿里云ECS服务器

环境准备

搭建maven、java、git环境

Jenkins安装

Jenkins(网址是 https://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自动化部署gitee项目到阿里云ECS服务器_第1张图片

选择让 Jenkins 加载常用的插件。

Jenkins自动化部署gitee项目到阿里云ECS服务器_第2张图片

Jenkins配置

1、修改Jenkins默认端口

默认端口是8080,该端口经常被使用,因此换一个不常用端口用来访问Jenkins,通过vim编辑器修改Jenkins默认访问端口

vim /etc/sysconfig/jenkins

为了防止权限出现Permission Denied这个问题,可将JENKINS_USER设置为root用户

Jenkins自动化部署gitee项目到阿里云ECS服务器_第3张图片

2、插件安装

前往 Manage Jenkins -> Manage Plugins -> Available,在 Filter 中搜索 Gitee:

Jenkins自动化部署gitee项目到阿里云ECS服务器_第4张图片

下方可选列表中勾选 Gitee(如列表中不存在 Gitee,则点击 Check now 更新插件列表),然后点击“Download now and install after restart”。

Jenkins自动化部署gitee项目到阿里云ECS服务器_第5张图片

在安装页面勾选“Restart Jenkins when installation is complete and no jobs are running”
安装完之后,可以在 “installed” 页面看到 Gitee 插件

Jenkins自动化部署gitee项目到阿里云ECS服务器_第6张图片

3、Gitee插件配置

1)前往 Jenkins -> Manage Jenkins -> Configure System -> Gitee 配置 -> Gitee 链接

Jenkins自动化部署gitee项目到阿里云ECS服务器_第7张图片

2)在 链接名 中输入 Gitee 或者你想要的名字

3)Gitee 域名 URL 中输入码云完整 URL地址: https://gitee.com (码云私有化客户输入部署的域名)

4)证书令牌 中如还未配置码云 APIV5 私人令牌,点击 Add - > Jenkins

Domain 选择 全局凭据
Kind 选择 Gitee API 令牌
Scope 选择你需要的范围
Gitee API Token 输入你的码云私人令牌,获取地址:https://gitee.com/profile/personal_access_tokens
ID, Descripiton 中输入你想要的 ID 和描述即可。

Jenkins自动化部署gitee项目到阿里云ECS服务器_第8张图片

5)Credentials 选择配置好的Gitee API Token

Jenkins自动化部署gitee项目到阿里云ECS服务器_第9张图片

6)点击 Advanced ,可配置是否忽略 SSL 错误(适您的Jenkins环境是否支持),并可设置链接测超时时间(适您的网络环境而

Jenkins自动化部署gitee项目到阿里云ECS服务器_第10张图片

7)点击Test Connection,查看是否能够访问,如失败请检查以上 3,5,6 步骤。

Jenkins自动化部署gitee项目到阿里云ECS服务器_第11张图片

4、配置其它插件

1)进入global tool configuration

Jenkins自动化部署gitee项目到阿里云ECS服务器_第12张图片

2)配置jdk、maven、Git插件

Jenkins自动化部署gitee项目到阿里云ECS服务器_第13张图片

Jenkins自动化部署gitee项目到阿里云ECS服务器_第14张图片

5、配置Global Environment

1)点击进入系统设置

Jenkins自动化部署gitee项目到阿里云ECS服务器_第15张图片

2)添加全局变量

Jenkins自动化部署gitee项目到阿里云ECS服务器_第16张图片

项目部署

1、新建项目

Jenkins自动化部署gitee项目到阿里云ECS服务器_第17张图片

项目创建成功:

Jenkins自动化部署gitee项目到阿里云ECS服务器_第18张图片

2、配置项目

Jenkins自动化部署gitee项目到阿里云ECS服务器_第19张图片

1)Gitee Connection选中上面建好的gitee api token

Jenkins自动化部署gitee项目到阿里云ECS服务器_第20张图片

2)配置git远程仓库

Jenkins自动化部署gitee项目到阿里云ECS服务器_第21张图片

3)添加Credentials(因为仓库是码云的,这里配置登录码云的用户名及密码)

Jenkins自动化部署gitee项目到阿里云ECS服务器_第22张图片

远程仓库配置完毕,自动刷新(配置完了不会报错的,如果报错,请参考文章末尾的遇到问题)

Jenkins自动化部署gitee项目到阿里云ECS服务器_第23张图片

4、编写脚本设置项目定时构建时间(设置触发器)

Jenkins自动化部署gitee项目到阿里云ECS服务器_第24张图片

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 &

Jenkins自动化部署gitee项目到阿里云ECS服务器_第25张图片

项目配置完毕。

3、构建项目

项目配置完了,接下来就开始构建项目

1)Build Now

Jenkins自动化部署gitee项目到阿里云ECS服务器_第26张图片

2)进入终端查看输出

Jenkins自动化部署gitee项目到阿里云ECS服务器_第27张图片

4、项目构建成功

Jenkins自动化部署gitee项目到阿里云ECS服务器_第28张图片

构建成功啦,因为是个博客项目,接下来可以访问一下:https://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

Jenkins自动化部署gitee项目到阿里云ECS服务器_第29张图片

# 尝试通过chmod命令进行授权
chmod 777 /usr/local/tomcat

如果不行,则修改Jenkins用户

vim /etc/sysconfig/jenkins

Jenkins自动化部署gitee项目到阿里云ECS服务器_第30张图片

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包的依赖

解决:

删除重复的那个依赖

Jenkins自动化部署gitee项目到阿里云ECS服务器_第31张图片

3、tomcat启动一闪而过

问题描述:

tomcat启动之后一闪而过,直接停止运行

Jenkins自动化部署gitee项目到阿里云ECS服务器_第32张图片

查看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成功.

Reference

https://blog.csdn.net/EngineerofAI/article/details/118008173

你可能感兴趣的:(大数据与云服务,前后端框架,jenkins,ecs,阿里云,linux,centos)