📌  相关文章
📜  在 GitLab 上使用 Shell Executor 在 .NET 应用程序中实现 CICD(1)

📅  最后修改于: 2023-12-03 15:23:08.957000             🧑  作者: Mango

在 GitLab 上使用 Shell Executor 在 .NET 应用程序中实现 CICD

在这篇文章中,我们将介绍如何在 GitLab 上使用 Shell Executor 实现 .NET 应用程序的 CICD。

什么是 Shell Executor?

Shell Executor 是 GitLab CI/CD 中的一种 runner,可以用于运行 Shell 脚本或命令。当 GitLab CI/CD pipeline 开始运行时,Shell Executor 会启动一个新的 Docker 容器或虚拟机,并在其中执行项目中定义的命令或脚本。

准备工作

在开始之前,您需要完成以下准备工作:

  • 在 GitLab 上创建一个项目并上传您的 .NET 应用程序代码。
  • 安装 Docker 和 Docker Compose(如果您打算使用 Docker)。
实现步骤

接下来,让我们看一下如何实现 .NET 应用程序的 CICD。

步骤 1:创建一个 .gitlab-ci.yml 文件

在您的项目根目录下创建一个 .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 restoredotnet build 分别用于还原解决方案依赖项和构建项目。最后,构建结果将保存到 bin/Release/net5.0/publish/ 目录中。

步骤 2:在 GitLab 上注册 Runner

在您的 GitLab 项目设置中,选择“CI/CD”->“Runners”->“Set up a specific runner manually”,然后按照提示创建一个 Runner。在创建 Runner 时,请确保选择“Shell executor”作为 Runner 类型,并提供必要的参数。

步骤 3:添加 CICD Pipeline

现在,您可以在项目的 .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 后运行。

步骤 4:运行 CICD Pipeline

现在,您已经准备好运行 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。