Gitlab Runner實現NetCore自動化持續整合

傳說中的路人甲發表於2019-07-20

目錄

1.開發工具

2.GitLab伺服器搭建

3.新建webapi

4.Dockerfile配置

5.配置docker-compose.yml

6.配置.gitlab-ci.yml

7.在GitLab上新增一個新專案

8.GitLib Runner安裝

9.提交程式碼到gitlab

10.在GitLab上檢視執行狀態

11.本地執行


1.開發工具

  • VSCode
    • 外掛:C#、Docker

2.GitLab伺服器搭建

3.新建webapi

  • dotnet new webapi --name Demo

  • 在Program中修改啟動地址:.UseUrls("http://*:80")

4.Dockerfile配置

  • 在VSCode中開啟命令皮膚:Ctrl+Shift+P

  • 輸入:ADD Docker Files to Workspace
    • 選擇 ASP.Net Core
    • 選擇 Linux
    • 80
  • 預設配置可能有問題,修改Dockerfile檔案,配置如下
    FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
    WORKDIR /app

    # Copy csproj and restore as distinct layers
    COPY *.csproj ./
    RUN dotnet restore

    # Copy everything else and build
    COPY . ./
    RUN dotnet publish -c Release -o out

    # Build runtime image
    FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
    WORKDIR /app
    COPY --from=build-env /app/out .
    EXPOSE 80
    ENTRYPOINT ["dotnet", "Demo.dll"]
  • 確保檔案在專案根目錄下

5.配置docker-compose.yml

  • 在專案根目錄下新建docker-compose.yml檔案

  • 新增配置如下,格式非常重要
    version: '3'

    services:
    web:
        build: .
        container_name: aspnetcore
        ports:
        - '8080:80'

6.配置.gitlab-ci.yml

  • 在專案根目錄下新建.gitlab-ci.yml檔案

  • 新增配置如下
    rtest:
     script:
      - docker-compose up -d --build --force-recreate

7.在GitLab上新增一個新專案

Gitlab Runner實現NetCore自動化持續整合

8.GitLib Runner安裝

  • 環境:win10

  • 下載地址

  • 註冊一個runner
    • 使用Powershell執行:./gitlab-runner.exe register
    • 輸入gitlab地址:http://127.0.0.1
    • 輸入令牌:在gitlab的專案=>設定=>CI/CD=>Runner中 找到註冊令牌
    • 輸出描述:test
    • 輸入tags:beta
    • 輸入excutor方式:shell
  • 安裝:gitlab-runner.exe install

  • 啟動:gitlab-runner.exe start

Gitlab Runner實現NetCore自動化持續整合

9.提交程式碼到gitlab

  • 每次提交會觸發gitlab runner,實現自動化部署

  • git命令如下
    git init
    git remote add origin ssh://地址
    git add .
    git commit -m "Initial commit"
    git push -u origin master

10.在GitLab上檢視執行狀態

Gitlab Runner實現NetCore自動化持續整合

11.本地執行:http://localhost:8080/api/values

Gitlab Runner實現NetCore自動化持續整合

相關文章