目標

創建一個.Net6項目,結合Jenkins、Gitee實現CI/CD (當編寫完代碼,並提交到Gitee倉庫之后,Jenkins自動幫我們測試,打包,發布項目)
關於Jenkins,Docker 的環境搭建可以參考我的上一篇文章
https://www.cnblogs.com/kizuna1314/p/15660880.html
步驟
- Gitee創建一個.Net6項目的倉庫
- Jenkins創建一個自由風格的軟件項目
- 配置Jenkins和.Net6項目的關聯
- 創建.Net6項目,編寫接口代碼,本文重點主要CI/CD,所以選擇創建輕量的Minimal API項目
- 提交Gitee,查看CI/CD效果
創建項目
Gitee准備一個項目

新建一個自由風格的軟件項目

配置構建需要的參數

若出現操作過程中出現下圖問題,並且Gitee信息填寫正確,原因可能是項目需要開源才能訪問到



選擇添加的用戶憑證

配置webHooks
勾選並復制URL

Gitee配置webHooks

填寫上一步驟拷貝的URL

點擊生成Gitee WebHook 密碼

粘貼到WebHook 密碼/簽名密鑰文本框中

驗證Jenkins是否能拉取提交的內容
提交了一段代碼

成功拉同步了Gitee的更改,接下來只需要把每次同步過來的代碼發布即可

下載.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

查看安裝
dotnet --list-sdks

安裝supervisor
yum install -y supervisor

查看所有 supervisor服務狀態
supervisorctl status

編寫一個后台進程(.ini)文件
# 創建並編輯一個.ini文件,我這里以 "net6demo" 為例
vim /etc/supervisord.d/net6demo.ini
文件內容
# 
[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

創建/pub、/logs 文件夾,並給予讀寫權限
mkdir /pub /logs
chmod -R 777 /pub /logs
啟動supervisor后台進程
supervisord -c /etc/supervisord.conf

查看后台后台守護進程狀態
supervisorctl status
進程名稱需要記下來,因為后面我們重新發布的時候需要重啟這個守護進程

配置ssh構建實現自動拉取並部署項目

選擇增加構建步驟

編寫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
編輯完內容之后,保存

立即構建,看看是否拉取並發布了

查看構建明細

我們可以看到,項目已經自動發布到/pub文件夾下面了

訪問接口
服務器本機訪問

web訪問

更改項目內容,提交Gitee后看看是否會自動發布

幾秒鍾以后,服務器上的程序已經自動更新了

查看一下控制台

