📅  最后修改于: 2023-12-03 15:23:08.957000             🧑  作者: Mango
在这篇文章中,我们将介绍如何在 GitLab 上使用 Shell Executor 实现 .NET 应用程序的 CICD。
Shell Executor 是 GitLab CI/CD 中的一种 runner,可以用于运行 Shell 脚本或命令。当 GitLab CI/CD pipeline 开始运行时,Shell Executor 会启动一个新的 Docker 容器或虚拟机,并在其中执行项目中定义的命令或脚本。
在开始之前,您需要完成以下准备工作:
接下来,让我们看一下如何实现 .NET 应用程序的 CICD。
在您的项目根目录下创建一个 .gitlab-ci.yml 文件,并将以下代码添加到该文件中:
image: mcr.microsoft.com/dotnet/sdk:5.0-alpine
build:
before_script:
- apk add --no-cache icu-libs
script:
- dotnet restore
- dotnet build
artifacts:
paths:
- bin/Release/net5.0/publish/
该代码将使用 mcr.microsoft.com/dotnet/sdk:5.0-alpine
镜像作为运行环境,在构建之前安装必需的依赖包。dotnet restore
和 dotnet build
分别用于还原解决方案依赖项和构建项目。最后,构建结果将保存到 bin/Release/net5.0/publish/
目录中。
在您的 GitLab 项目设置中,选择“CI/CD”->“Runners”->“Set up a specific runner manually”,然后按照提示创建一个 Runner。在创建 Runner 时,请确保选择“Shell executor”作为 Runner 类型,并提供必要的参数。
现在,您可以在项目的 .gitlab-ci.yml
文件中定义一个 CICD Pipeline,该 Pipeline 将使用所配置的 Runner 运行。以下是一个示例 Pipeline:
stages:
- build
- deploy
build:
stage: build
script:
- dotnet publish -c Release -o ./publish
artifacts:
paths:
- ./publish
except:
- tags
deploy:
stage: deploy
image: docker/compose:alpine-1.29.2
only:
- tags
script:
-
docker-compose -p $CI_PROJECT_NAME -f docker-compose.prod.yml up -d
environment:
name: production
该 Pipeline 由两个阶段组成:build 和 deploy。build 阶段将使用 dotnet publish
命令发布 .NET 应用程序,并将构建输出保存到 ./publish
目录中。构建成功后,Pipeline 将存档该目录中的所有文件,并在 deploy 阶段部署它们。
在 deploy 阶段中,我们使用 Docker Compose 来运行应用程序。由于我们选择了tags
作为 deploy 阶段的 only
条件,因此它只会在打 tag 后运行。
现在,您已经准备好运行 Pipeline 了。当您在项目上进行任何更改并提交到 GitLab 时,GitLab 将根据您的 .gitlab-ci.yml
文件自动运行 Pipeline。
您还可以手动运行 Pipeline。在您的项目页面上,选择“CI/CD”->“Pipelines”,然后点击“Run pipeline”按钮即可手动运行 Pipeline。
本文介绍了如何在 GitLab 上使用 Shell Executor 实现 .NET 应用程序的 CICD。我们使用了 .gitlab-ci.yml 文件来定义 Pipeline,使用 Docker Compose 运行应用程序,构建和发布应用程序需要使用 .NET SDK。希望这篇文章可以帮助您实现自己的 CICD Pipeline。