当前位置: 首页 > news >正文

jenkins+centos7上传发布net6+gitlab

工作中实践了一下jenkins的操作,所以记录一下这次经验,没有使用到docker

先看下成果:

选择发布项目

选择要发布的分支

构建中

发布成功

开始

首先安装好jenkins并注册自己的jenkins账号

因为我们的项目代码管理使用的是gitlab,在开始之前先在jenkins上安装gitlab的插件,安装之后应该是要重启jenkins的服务,后续jenkins的一些页面就会显示一些关于gitlab的一些可配置项

如果遇到一些插件安装不了可能是jenkins的版本与插件的版本不兼容,所以可以考虑升级jenkins或者降级插件版本等等方案。

一、添加服务器的凭据账号密码

这些凭据可用于服务器的登录、git的登录  等等。后续添加节点或者添加项目配置git都会需要

我本次的需求共添加了4个:

两个服务器节点的凭据(项目做负载),一个gitlab账号密码的凭据,一个gitlab api token的凭据。

新增两个服务器的凭据,比如我的  4.61和4.62服务器

然后新增的gitlab账号密码凭据:

这个重点:因enkins要与git相互协作,我们使用gitlab管理代码,所以此处需要添加一个git的凭据。

gitlab配置access token

二、添加服务器的node节点

用于创建项目时绑定要发布的服务器,我是负载两台服务器,所以我加两个,看自己的需求

注意:用法:要选择 Only build jobs with label expressions matching this node

三、 系统配置服务器节点、配置ssh私钥

jenkins按钮目录:

首先配置ssh私钥,需要到jenkins的服务端服务器上找到或者生成秘钥和公钥,但是文件名是这样的id_rsa 和 id_rsa.pub

秘钥   cat /root/.ssh/id_rsa
公钥   cat /root/.ssh/id_rsa.pub

上图的Passphrase我没有所以我没设置

还是在当前页,找到SSH Server然后填SSH Servers的服务,此处我也是添加俩61和62的

先别保存,还是在当前页面查找下面这张图并填写,然后再保存即可

四、配置项目的服务器,分为两部分操作

1、第一部分是jenkins部分的添加和配置项目

添加项目:

添加完后点击项目,然后点击配置进入到这个页面:

需要配置的几个地方:

参数配置:

git配置:

构建触发器的配置:

构建环境:就是发布到哪个服务器和在哪个服务器执行脚本,我还是添加两个4.61和4.62两个服务器,目录一直。

远程目录:就是把项目拉取到:/DATA/build/NZKH-FileDownloadApplication 文件夹下面

Exec命令:这个文件就是我们要执行的命令脚本文件的目录,后面我们会创建这个文件并写命令,包含编译,发布,运行  大概这几个操作

到此为止jenkins客户端就配置完了,其余没选的或者我没截图的,默认就行

2、第二部分是linux部分的配置

这里我就写  4.61的配置了,因为4.62的操作完全一样操作即可

先创建好自己的目录build和publish1,下面会说明他俩用处

build

build文件夹是用来存放git推送过来的文件的。

前面说过配置项目时,选择服务器节点时配置好的相对目录就是build/NZKH-FileDowloadApplication,Exec命令就是nzkh-netcore-prod_build.sh命令文件的绝对目录

DATA下需要手动创建build文件夹

进入build就是git拉取的目录

可以看到他通过jenkins发布后会拉取git存放的项目代码:NZKH-FileDowloadApplication项目、sln、.md文件

此处附上我的gitlab目录

当然nzkh-netcore-prod_build.sh 是我们手动创建的脚本命令文件

创建命令: vi nzkh-netcore-prod_build.sh

讲解一下我的命令文件:

echo '开始构建项目'
#进入NZKH-FileDownloadApplication文件内
cd /DATA/build/NZKH-FileDownloadApplication/
#下面这句是编译并发布代码到/DATA/publish1/NZKH-FileDownloadApplication 文件下
dotnet publish ./NZKH-FileDownloadApplication/NZKH-FileDownloadApplication.csproj -o /DATA/publish1/NZKH-FileDownloadApplicationecho '获取进程id'
#我这里是获取含'FileDownloadApplication'的进程id赋值到containerid
containerid=$(ps -ef | grep 'FileDownloadApplication' | grep -v grep | awk '{print $2}')
#判断进程是否存在如果存在则删除,否则不删除
if [ ! -n "$containerid" ]; thenecho "Container ID found: $containerid"
elseecho "kill process $containerid"#根据进程id杀死这个进程ill -9 "$containerid"
fiecho '切换到发布目录'
cd /DATA/publish1/NZKH-FileDownloadApplication
echo '启动程序'
nohup dotnet NZKH-FileDownloadApplication.dll --urls="http://*:5173" > log.log 2>&1 &

简述逻辑逻辑就是:通过build文件内的文件编译成发布文件到publish1,然后查看是否有运行的程序,有则杀死再进行启动程序,我的程序是写死的5173端口。

Publish1

是用来存放我们通过build编译出来的线上程序的,就是含dll的那些项目文件。

至此就完结了

遇到的错误:

1、ERROR: Error fetching remote repo 'origin’

线上发布代码时遇到拉取不到git仓库。在网上查资料说是清理Workspaces可以解决。但是清理后还是出现同样的错误。

先排查jenkins服务器是否能访问gitlab服务器,若不能访问,检查是否是防火墙禁用22端口,若防护墙没有禁用22端口,那就看是否是阿里云禁用22端口。我出的问题是:我添加了一个4.61和4.62的服务器节点(他们服务器账号密码一样),但是我在配置项目的时候配置的是4.61的服务器节点,但是build now构建的时候,他的工作空间变成了4.62的,这样就会出现发布失败的问题。我的解决方案是:添加服务器节点的时候用法选择(他代表绑定这个节点的项目生效):

另外一个是:“尽可能使用此节点”出错是因为在发布4.61的时候就不空闲了,就会使用其他的节点

2、ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [126]]

我遇到这个错误,是因为.sh脚本文件没有权限

配置sh文件权限  命令:chmod 777 publish.sh

http://www.lryc.cn/news/233831.html

相关文章:

  • python趣味编程-5分钟实现一个F1 赛车公路游戏(含源码、步骤讲解)
  • Kafka快速入门
  • 基于Pytorch的从零开始的目标检测
  • interview review
  • layui表头多出一列(已解决)
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • Java源码分析:Guava之不可变集合ImmutableMap的源码分析
  • 详解自动化测试之 Selenium
  • vue监听对象属性值变化
  • Unicode编码的emoji表情如何在前端页面展示(未完成)
  • 基于SSM的设备配件管理和设备检修系统
  • 鸿蒙开发|鸿蒙系统项目开发前的准备工作
  • Evil靶场
  • 第77题. 组合
  • 读书笔记:彼得·德鲁克《认识管理》第21章 企业与政府
  • C/C++疫情集中隔离 2021年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
  • 052-第三代软件开发-系统监测
  • 向量矩阵范数pytorch
  • NVIDIA Jetson OTA升级
  • 【算法】算法题-20231118
  • 某60区块链安全之整数溢出漏洞实战学习记录
  • 图数据库Neo4J 中文分词查询及全文检索(建立全文索引)
  • element-china-area-data使用问题
  • 248: vue+openlayers 以静态图片作为底图,并在上面绘制矢量多边形
  • thinkphp6(TP6)访问控制器报404(Nginx)
  • 腾讯云轻量应用服务器使用场景列举说明
  • 【漏洞复现】IP-guard WebServer 远程命令执行
  • 23111704[含文档+PPT+源码等]计算机毕业设计springboot办公管理系统oa人力人事办公
  • 在Linux系统上检测GPU显存和使用情况
  • 内网穿透 cpolar