asp.net core結合Gitlab-CI實現自動化部署

0、目錄


 

總體架構目錄:ASP.NET Core分佈式項目實戰-目錄html

 

1、前言


在以前的文章中寫過k8s+Jenkins+GitLab-自動化部署asp.net core項目 的topic,此次講解一下gitlab-ci的CI/CD,說實話,自動化部署是在是很是的舒服,並且gitlab-ci很適合中小項目的部署,大項目推薦使用k8s。linux

 

閱讀目錄:git

一、gitlab-ci及gitlab-runner說明github

二、部署環境介紹web

三、安裝gitlab和gitlab-runnerdocker

四、asp.net core項目配置shell

 

2、Gitlab-CI及Gitlab-Runner說明


一、GitLab-CIcentos

即GitLab上的CI功能,持續集成功能
能夠實現代碼提交後自動測試、編譯、發佈、部署等自動化工做
持續集成是一種軟件開發實踐,即團隊開發成員常常集成它們的工做,經過每一個成員天天至少集成一次,也就意味着天天可能會發生屢次集成。api

二、GitLab-Runner
GitLab在接收到代碼提交事件時,經過.gitlab-ci.yml的配置信息與對應節點上的runner進行交互。
Runner須要在CI上進行註冊後方可以使用。
Runner至關於代替人工在安裝了Runner的服務器上運行yml文件上的配置。一般由GitLab上的項目更新觸發。bash

 

3、環境介紹

 

IP(CentOS7) 組件
192.168.161.140 gitlab、Docker
192.168.161.142 gitlab-runner、Docker、git、dotnet sdk

 

4、安裝gitlab和gitalb-runner


0、Docker安裝的命令請看我以前寫的文章

傳送門:Docker系列之CentOS7安裝Docker(一)

 

一、在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

 這樣便可運行成功

 

二、在142服務器上安裝git

在gitalb-ci.yml 文件中我有用到git 來進行拉取代碼到本地服務器上的。

命令:

yum install -y git

 

三、在服務器上安裝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

 

四、如今能夠在服務器上安裝gitlab-runner了

安裝gitlab-runner的方式不少,有使用gitlab存儲庫的,以及手動安裝,具體的能夠參考官方給出的方案,這邊我採用手動安裝gitlab-runner

下載二進制文件

# Linux x86-64
sudo 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

 

 

五、如今就開始註冊咱們的gitlab-runner啦

註冊runner須要配合咱們的gitlab來操做。

第一步:咱們先打開一下咱們的gitlab,切換到咱們的Runners欄目

 在這裏咱們能夠看到一個是 url和token,這兩個內容是咱們必須的。

 

第二步:切換回咱們的服務器上

執行命令 註冊:

gitlab-runner register

 

接下來要填寫的信息比較多,具體請看下面的內容。

注:第一個和第二個不要寫錯了,直接複製便可。

註冊完成後便可在gitlab Runners 中能夠看到

第三步:點擊修改一下 runner

 把此欄目的勾選一下,不然在自動化部署時項目沒法監測到runner的存在,除非項目上傳的時候帶上tag標籤。

 

而後咱們選擇一下 此runner 掛鉤的 項目。咱們選擇項目,點擊後面的 「Enable」便可。

 

 到目前爲止gitlab配置完成,如今配置一下asp.net core項目吧

 

5、asp.net core項目配置


  注:我已經把項目代碼上傳到github上,可供下載:gitlabci

 一、建立一個asp.net core webapi項目

在項目中添加  .gitlab-ci.yml 文件,該文件是用來配置Runner對當前項目進行的操做。

variables:
  GIT_STRATEGY: none
stages:
  - test
test_job:
  stage: test
  only: 
    - master
  script:
    - cd /home/gitproject
    - rm -rf /home/gitproject/gitrunner
    - git clone http://root:12345678@192.168.161.140/Team/gitrunner.git
    - cd ./gitrunner
    - dotnet build --configuration Release 
    - rm -rf /home/project/gitrunner
    - docker stop gitci
    - docker rm gitci
    - docker rmi gitciimages
    - dotnet publish -c Release --output /home/project/gitrunner
    - cd /home/project/gitrunner
    - docker build -t gitciimages .
    - docker run -d -v /home/project/gitrunner:/code -p 5001:80 --name gitci --restart always gitciimages

 

具體的參數說明能夠參考 gitlab官網給出的。gitlab-ci.yml 配置

 

二、固然在項目裏面也須要 Dockerfile文件

Dockerfile,而且把Dockerfile文件設置爲 始終複製,否則在發佈的過程當中會丟失文件。

FROM microsoft/aspnetcore
COPY . /code
WORKDIR /code    
EXPOSE 5001
CMD ["dotnet","gitlabcicd.dll"]

 

三、如今咱們就可使用 git上傳代碼啦

上傳後咱們就能夠在 gitlab Commits裏面查看啦

 

進入執行查看

 

 四、自此便可在咱們的142服務器上的docker 查看到咱們所運行的容器啦。

 

6、總結


上面的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

 

asp.net Core 交流羣:787464275 歡迎加羣交流
若是您認爲這篇文章還不錯或者有所收穫,您能夠點擊右下角的【推薦】按鈕精神支持,由於這種支持是我繼續寫做,分享的最大動力!

做者:LouieGuo

微信公衆號:歡迎關注                                                 QQ技術交流羣: 歡迎加羣

                

相關文章
相關標籤/搜索