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
相關文章
- Jenkins + Docker + ASP.NET Core自動化部署JenkinsDockerASP.NET
- asp.net core + jenkins 實現自動化釋出ASP.NETJenkins
- Airtest結合tidevice實現IOS自動化測試AIIDEdeviOS
- [原] php + Laravel 實現部署自動化PHPLaravel
- 利用Github Actions實現自動化部署Github
- GitHub自動化部署(CD) asp.net core 5.0 專案(免費空間)GithubASP.NET
- ASP.Net Core使用Jenkins配合pm2自動化部署專案ASP.NETJenkins
- GO 使用Webhook 實現github 自動化部署GoWebHookGithub
- Android無障礙自動化結合opencv實現支付寶能量自動收集AndroidOpenCV
- jenkins + GitHub 實現專案自動化部署JenkinsGithub
- 使用 Git 實現 專案的自動化部署Git
- 利用github提供的Webhooks實現自動化部署GithubWebHook
- 華納雲:如何實現tomcat自動化部署Tomcat
- 一鍵實現自動化部署(灰度釋出)實踐
- 使用 Git 實現 Laravel 專案的自動化部署GitLaravel
- 使用 Jenkins + Ansible 實現自動化部署 NginxJenkinsNginx
- kubernetes+Azure DevOps實現.Net Core專案的自動化部署&均衡負載dev負載
- .Net Core結合AspNetCoreRateLimit實現限流NetCoreMIT
- ASP.NET Core-自動對映ASP.NET
- aspcore+jenkins+iis+window實現自動化部署Jenkins
- 實現指令碼自動部署docker指令碼Docker
- NFV+SDN雲網聯動實現VNF全自動化部署
- 幾十行程式碼實現ASP.NET Core自動依賴注入行程ASP.NET依賴注入
- Vue結合原生js實現自定義元件自動生成VueJS元件
- 實現 UML 模型的自動化比較及合併模型
- 基於Jenkins實現php專案的自動化測試、自動打包和自動部署JenkinsPHP
- Beego 自動化部署Go
- .NET Core部署到linux(CentOS)最全解決方案,入魔篇(使用Docker+Jenkins實現持續整合、自動化部署)LinuxCentOSDockerJenkins
- Selenium自動化實現web自動化-1Web
- 使用Jenkins實現前端自動化打包部署(Linux版本)Jenkins前端Linux
- GithubAction對接阿里雲ECS實現自動化部署Github阿里
- [GitLab]:Webhooks 實現自動化伺服器專案部署GitlabWebHook伺服器
- jenkins的安裝和配置(flask結合jenkins半自動化部署流程)JenkinsFlask
- Docker 搭建 Jenkins 實現自動部署DockerJenkins
- [部署03] gitlab-CIGitlab
- jenkins自動化專案部署實戰Jenkins
- Azure Terraform(九)GitHub Actions 實現 Infra 資源的自動化部署ORMGithub
- IT 自動化:如何去實現