asp.net core结合Gitlab-CI实现自动化部署
一、前言
在之前的文章中寫過k8s+Jenkins+GitLab-自動化部署asp.net core項目?的topic,這次講解一下gitlab-ci的CI/CD,說實話,自動化部署是在是非常的舒服,而且gitlab-ci很適合中小項目的部署,大項目推薦使用k8s。
?
閱讀目錄:
1、gitlab-ci及gitlab-runner說明
2、部署環境介紹
3、安裝gitlab和gitlab-runner
4、asp.net core項目配置
?
二、Gitlab-CI及Gitlab-Runner說明
1、GitLab-CI
即GitLab上的CI功能,持續集成功能
可以實現代碼提交后自動測試、編譯、發布、部署等自動化工作
持續集成是一種軟件開發實踐,即團隊開發成員經常集成它們的工作,通過每個成員每天至少集成一次,也就意味著每天可能會發生多次集成。
2、GitLab-Runner
GitLab在接收到代碼提交事件時,通過.gitlab-ci.yml的配置信息與對應節點上的runner進行交互。
Runner需要在CI上進行注冊后方可使用。
Runner相當于代替人工在安裝了Runner的服務器上運行yml文件上的配置。通常由GitLab上的項目更新觸發。
?
三、環境介紹
?
| IP(CentOS7) | 組件 |
| 192.168.161.140 | gitlab、Docker |
| 192.168.161.142 | gitlab-runner、Docker、git、dotnet sdk |
?
四、安裝gitlab和gitalb-runner
0、Docker安裝的命令請看我之前寫的文章
傳送門:Docker系列之CentOS7安裝Docker(一)
?
1、在140這臺服務器上在Docker上運行gitalb
此gitlab由于是測試,因此沒有進行數據的掛載,在生產環境中需要用到數據的掛載。
命令如下:這邊要注意一下 gitlab需要用到22端口,而CentOS服務器ssh連接也是用22端口,因此需要讓gitalb使用。具體操作可以看:CentOS服務器安裝Telnet來遠程連接服務器
?
docker run --detach --hostname localhost --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab --restart always gitlab/gitlab-ce:latest?這樣即可運行成功
?
2、在142服務器上安裝git
在gitalb-ci.yml 文件中我有用到git 來進行拉取代碼到本地服務器上的。
命令:
yum install -y git?
3、在服務器上安裝dotnet SDK
gitlab-ci.yml文件中git拉取完代碼后需要把代碼進行編譯、發布出來,因此需要用到dotnet sdk。
在安裝.NET之前,您需要注冊Microsoft密鑰,注冊產品存儲庫并安裝所需的依賴項。這只需要每臺機器完成一次。打開命令提示符并運行以下命令:
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm?
安裝.NET SDK,更新可用于安裝的產品,然后安裝.NET SDK。在命令提示符中,運行以下命令:
sudo yum update sudo yum install libunwind libicu sudo yum install dotnet-sdk-2.0.0?
4、現在可以在服務器上安裝gitlab-runner了
安裝gitlab-runner的方式很多,有使用gitlab存儲庫的,以及手動安裝,具體的可以參考官方給出的方案,這邊我采用手動安裝gitlab-runner
下載二進制文件
# Linux x86-64sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64?
?賦予權限:
sudo chmod +x /usr/local/bin/gitlab-runner?
?創建gitlabCI用戶:
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash?
安裝并作為運行服務:
sudo /usr/local/bin/gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner sudo /usr/local/bin/gitlab-runner start?
?
5、現在就開始注冊我們的gitlab-runner啦
注冊runner需要配合我們的gitlab來操作。
第一步:我們先打開一下我們的gitlab,切換到我們的Runners欄目
?在這里我們可以看到一個是 url和token,這兩個內容是我們必須的。
?
第二步:切換回我們的服務器上
執行命令 注冊:
gitlab-runner register?
接下來要填寫的信息比較多,具體請看下面的內容。
注:第一個和第二個不要寫錯了,直接復制即可。
注冊完成后即可在gitlab Runners 中可以看到
第三步:點擊修改一下 runner
?把此欄目的勾選一下,否則在自動化部署時項目無法監測到runner的存在,除非項目上傳的時候帶上tag標簽。
?
然后我們選擇一下 此runner 掛鉤的 項目。我們選擇項目,點擊后面的 “Enable”即可。
?
?到目前為止gitlab配置完成,現在配置一下asp.net core項目吧
?
五、asp.net core項目配置
??注:我已經把項目代碼上傳到github上,可供下載:gitlabci
?1、創建一個asp.net core webapi項目
在項目中添加? .gitlab-ci.yml 文件,該文件是用來配置Runner對當前項目進行的操作。
具體的參數說明可以參考 gitlab官網給出的。gitlab-ci.yml 配置
?
2、當然在項目里面也需要 Dockerfile文件
Dockerfile,并且把Dockerfile文件設置為 始終復制,不然在發布的過程中會丟失文件。
FROM microsoft/aspnetcore COPY . /code WORKDIR /code ? ? EXPOSE 5001CMD ["dotnet","gitlabcicd.dll"]?
3、現在我們就可以使用 git上傳代碼啦
上傳后我們就可以在 gitlab Commits里面查看啦
?
進入執行查看
?
?4、自此即可在我們的142服務器上的docker 查看到我們所運行的容器啦。?
六、總結
上面的runner安裝之前講解了一種,其實還有很多種,具體可以看一下官方給出的案例。
到目前為止發現自動化部署是在是太方便了。有gitlab- CI/CD、以及k8s CI/CD,當然還有gitlab結合jenkins CI/CD,有興趣的同學可以看看我之前的文章。歡迎給我留言
注:我已經把項目代碼上傳到github上,可供下載:gitlabci?
參考文檔
官方文檔:https://docs.gitlab.com/runner/install/linux-repository.html
注冊runner:https://docs.gitlab.com/runner/register/index.html
gitlab-ci.yml 配置:https://docs.gitlab.com/ee/ci/yaml/README.html#only-and-except-simplified
DotnetSDK:https://www.microsoft.com/net/download/linux-package-manager/centos/sdk-2.0.0
原文地址:?https://www.cnblogs.com/guolianyu/p/9709166.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的asp.net core结合Gitlab-CI实现自动化部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Emit动态代理.NetCore迁移之旅
- 下一篇: .NET微服务方案调查