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 加载常用的插件。

在这里插入图片描述

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地址: 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 和描述即可。

在这里插入图片描述

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、项目构建成功

在这里插入图片描述

构建成功啦,因为是个博客项目,接下来可以访问一下: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
在这里插入图片描述
# 尝试通过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成功.

Reference

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348

推荐阅读更多精彩内容