Jenkins + Gitee + .Net6 实现持续集成与持续交付(CI/CD)

目标

image
创建一个.Net6项目,结合Jenkins、Gitee实现CI/CD (当编写完代码,并提交到Gitee仓库之后,Jenkins自动帮我们测试,打包,发布项目)

关于Jenkins,Docker 的环境搭建可以参考我的上一篇文章
https://www.cnblogs.com/kizuna1314/p/15660880.html

步骤

  1. Gitee创建一个.Net6项目的仓库
  2. Jenkins创建一个自由风格的软件项目
  3. 配置Jenkins和.Net6项目的关联
  4. 创建.Net6项目,编写接口代码,本文重点主要CI/CD,所以选择创建轻量的Minimal API项目
  5. 提交Gitee,查看CI/CD效果

创建项目

Gitee准备一个项目

image

新建一个自由风格的软件项目

image

配置构建需要的参数

image
若出现操作过程中出现下图问题,并且Gitee信息填写正确,原因可能是项目需要开源才能访问到
image
image

image

选择添加的用户凭证

image

配置webHooks

勾选并复制URL

image

Gitee配置webHooks

image

填写上一步骤拷贝的URL

image

点击生成Gitee WebHook 密码

image

粘贴到WebHook 密码/签名密钥文本框中

image

验证Jenkins是否能拉取提交的内容

提交了一段代码
image

成功拉同步了Gitee的更改,接下来只需要把每次同步过来的代码发布即可

image

下载.Net6 运行时(由于我之前安装过,所以直接显示100%)

官网下载地址:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos

Centos7系列版本可直接运行下面命令下载

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

image

查看安装
dotnet --list-sdks

image

安装supervisor
yum install -y supervisor

image

查看所有 supervisor服务状态
supervisorctl status

image

编写一个后台进程(.ini)文件
# 创建并编辑一个.ini文件,我这里以 "net6demo" 为例
 vim /etc/supervisord.d/net6demo.ini
文件内容
# ![image](https://img2020.cnblogs.com/blog/1289480/202112/1289480-20211210165543840-343976883.png)

[program:net6demo]
command=dotnet net6test.dll --urls http://0.0.0.0:5000 # 这里改成实际的.dll文件 以及需要暴露的端口
directory=/pub   # 这里是发布的文件路径,所以 需要在外面再创建pub文件夹
autorestart=true
startsecs=3
startretries=3
stdout_logfile=/logs/net6test.out.log
stderr_logfile=/logs/net6test.err.log
stdout_logfile_maxbytes=2MB
stderr_logfile_maxbytes=2MB
user=root
priority=999
numprocs=1
process_name=%(program_name)s_%(process_num)02d

image

创建/pub、/logs 文件夹,并给予读写权限
mkdir /pub /logs
chmod -R 777  /pub /logs
启动supervisor后台进程
supervisord -c /etc/supervisord.conf

image
查看后台后台守护进程状态

supervisorctl status

进程名称需要记下来,因为后面我们重新发布的时候需要重启这个守护进程
image

配置ssh构建实现自动拉取并部署项目

image

选择增加构建步骤

image

编写shell脚本
echo------------stopapp------------------
supervisorctl stop net6demo:net6demo_00
echo------------publish------------------
cd /app/net6test/net6test
dotnet publish -o /pub
echo------------delcode------------------
cd /app
rm -rf *
echo------------online------------------
supervisorctl start net6demo:net6demo_00
编辑完内容之后,保存

image

立即构建,看看是否拉取并发布了

image

查看构建明细

image

我们可以看到,项目已经自动发布到/pub文件夹下面了
image

访问接口

服务器本机访问

image

web访问

image

更改项目内容,提交Gitee后看看是否会自动发布

image
几秒钟以后,服务器上的程序已经自动更新了
image

查看一下控制台

image

以上就是.Net6结合Jenkins实现CI/CD的全过程,由于是重点介绍CI/CD 为了让大家更好的上手,所以项目编写的比较简陋,大家可以根据实际情况自由扩展

posted @ 2021-12-10 16:51  KizunaT  阅读(1583)  评论(2编辑  收藏  举报