在Docker中为.NET Core设置CI / CD?

时间:2020-07-29 10:19:24

标签: docker asp.net-core gitlab gitlab-ci-runner

我是Gitlab上CI / CD的新手,希望为填补包含多个.NET Core项目的Visual Studio解决方案建立管道方面的空白提供帮助。

我希望这样的过程:

  1. 将PROJECT_NAME变量传递到CI运行器,它指定解决方案中要构建/发布的项目。
  2. 赛跑者使用.NET Core 3.1 SDK映像构建映像。
  3. 跑步者将图像发布到容器注册表。
  4. 运行程序将Webhook触发到目标服务器上应在其中部署映像的预定义Webhook URL。
  5. Webhook使用新映像触发主机上容器的重新部署。

到目前为止,这是我为.gitlab-ci.yml文件整理的内容,但是我不确定这是正确的还是下一步要做什么?

stages:
    - build
    - publish
  
  build:
    stage: build
    image: mcr.microsoft.com/dotnet/core/sdk:3.1-buster
    only:
      - master
    script:
      - cd $PROJECT_NAME
      - dotnet restore
      - dotnet build -c Release
      - dotnet publish -c Release
    artifacts:
      paths:
        - ./bin/Release/netcoreapp3.1/publish/*
      expire_in: 1 week
    tags:
    - docker
  
  publish:
    stage: publish
    image: docker:stable
    services:
      - docker:dind
    only:
      - master
    before_script:
      - docker login registry.gitlab.com -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
    script:
      - docker build -t $CI_REGISTRY/$PROJECT_NAME .
      - docker push $CI_REGISTRY/$PROJECT_NAME
    after_script:
      - docker logout $CI_REGISTRY
      - curl -H "Authorization: Bearer $WEBHOOK_ACCESS_TOKEN" $WEBHOOK_URL
    tags:
    - docker

任何指针将不胜感激。

谢谢。

0 个答案:

没有答案