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 為了讓大家更好的上手,所以項目編寫的比較簡陋,大家可以根據實際情況自由擴展


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM