Jenkins + Gitee + .Net6 實現持續整合與持續交付(CI/CD)
阿新 • • 發佈:2021-12-10
目標
建立一個.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
檔案內容
# ![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
建立/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後看看是否會自動釋出
幾秒鐘以後,伺服器上的程式已經自動更新了