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/118256232

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


基础环境、流程图1)流程图jenkinspipeline发布应用2)、jenkins上安装kubectl#主节点上查看kubectl位置[root@k8s01~]#whichkubectl/usr/bin/kubectl#将k8s节点的kubectl文件cp至jenkinsscp10.0.0.101:/usr/bin/kubectl.cp./kubectl/usr/local/bin/kubectl
本节是建立在流水线入门内容的基础上,而且,应当被当作一个参考。对于在实际示例中如何使用流水线语法的更多信息,请参阅本章在流水线插件的2.5版本中的使用Jenkinsfile部分,流水线支持两种离散的语法,具体如下对于每种的优缺点,参见语法比较。正如本章开始讨论的,流水线最
Linuxcentos7安装Jenkins(jenkins-2.227-1.1.noarch.rpm)时遇到问题:1.出现问题1:安装jenkins一直失败,提示Nosuchfileordirectory[helen@linuxprobeJenkins]$sudorpm-ivhjenkins-2.227-1.1.noarch.rpmPreparing...####################
作为一个拥有很多账号的当代美少女,忘记用户名密码什么的是再正常不过的事了。“忘记密码”这一功能给我真的带来了很大的福音啊。但是最近重新使用Jenkins时,看到需要输入用户名密码,顿时脑子一片空白。经过一系列的查找,终于解决了问题,害,只有把方法记下来才是王道,以后妈妈再
Jenkins、GitLab和Maven(Nexus)完成自动构建迈向持续集成持续集成,毋庸置疑的是这是两部分要求,一个是持续一个是集成,那么持续和集成到底表示了什么要求和含义呢?其中的集成比较容易理解就是指开发人员将自己开发的代码不断地交付给全部系统的代码,在Git仓的概念之下也就是不断地
 下载文档https://www.jenkins.io/zh/download/  Debian下载1.下载安装keyhttps://pkg.jenkins.io/debian-stable/jenkins.io.key  
流水线建设从Jenkins部署开始Jenkins是一个独立的开源自动化服务器,可以用来自动化,例如构建、测试和部署软件等各种任务,是一个实现CI(持续集成)的很好的工具。Jenkins可以通过本地系统包、Docker安装,甚至可以在安装Java运行时环境的机器上独立运行。JenkCI/CD的概念谈到持
原因:这种情况是SSHServer中的RemoteDirectory路径不存在。解决方法:重新输入目标服务器中存在的路径。      
什么是持续集成持续集成(Continuousintegration,简称CI)指的是,频繁地(一天多次)将代码集成到主干。持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。通过持续集成,团
Tomcat安装:1.下载Tomcat包:http:/omcat.apache.org/并解压2.启动:双击bin\startup.bat文件浏览器访问:http://localhost:8080/3.Tomcat配置登录:打开confomcat-users.xml文件添加如下代码:<rolerolename="manager-gui"/><userusername="admin"password=&q
文章目录jenkinscron笔记简介H符号(hash的简写)别名例子jenkinscron笔记简介jenkinscron遵循普通cron的语法,略有不同,每行包含五个字段可以使用Tab和空行分割分钟小时日月周0-590-231-311-120-7(0和7都表示周日)可以使用以下操作符为一个字段指定多个值(按照
1.nginx的配置location/jenkinsno{indexindex.htmlindex.htm;proxy_passhttp://127.0.0.1:8081;proxy_connect_timeout3000s;proxy_send_timeout3000s;proxy_read_timeout3000s;prox
1、下载安装插件下载地址:http://files.jetbrains.org.cn/aliyun-oss.hpi在Jenkins中安装插件,请到ManageJenkins->Advanced->Upload,上传插件(.hpi文件)安装完毕后请重新启动Jenkins2、搜索安装jenkins插件安装3、安装完成以后配置阿里云oss账号oss这边设置:(账号的权限也要
首先将构建历史清除Jenkins构建历史删除与重置然后进入Jenkins服务器工作目录oot/.jenkinstar-czvfjobs.tarjobs 将jobs打包将job.tar文件复制到新Jenkins服务器相同目录下解压tar包 tar-zxvfjob.tar登录新JenkinsJenkins-系统管理-读取配置,只有点击了读取配置,原
一、动态生成Slave1.1、简介之前我们都是在物理机或者虚拟机上部署jenkins,但是这种部署方式会有一些难点,如下:主Master发生单点故障时,整个流程都不可用了每个Slave的配置环境不一样,来完成不同语言的编译打包等操作,但是这些差异化的配置导致管理起来非常不方便,维护起来也是
from jenkins import Jenkins# 判断job是否运行结束def build():    job = 'branch-deploy-wap'    params = {        'server_ip': '10.160.30.XXX',        'server_username': 'root',        'server_userpass&#
背景client端执行webUI自动化测试时依赖操作系统上安装了对应的浏览器,并且浏览器与驱动要进行版本的对应——而selenium是可以部署集群,通过远程的方式执行对应的自动化用例,方便高效。原理1、通过代码可知,自动化运行的主类接收了任务id,获取到任务信息后根据任务类型判断进行接口
背景工具选择架构设计及技术实现参数设计断言持续集成测试集编写总结  一、背景1.目前公司发展比较迅速,还处于不停堆业务阶段,所以迭代比较频繁,导致人工回归的成本越来越大2.在有限的测试资源情况下,开发自测的需求占比不低,后端频繁发布容易心里没底
本地pycharm打开项目,运行自动化项目下载项目代码,并用pycharm打开项目gitclonehttps://gitee.com/iread9527/iInterface_python.git进入iInterface_python目录下,cdiInterface_python使用pip3install-rrequirements.txt命令,安装python项目依赖的第三方库使
Jenkins邮件设置一、简介最近有朋友问Jenkins邮件设置的问题,想起来当时也是碰到不少坑,网上看了很多博客说的解决办法根本没有用。最后我解决了这个问题,在此记录一下,希望能够帮助到在网上搜了半天仍然徒劳无功的朋友们,我懂那种失败了一次又一次的感觉,希望能帮到大家。二、配置步