GitLab CI 管道最佳实践 .NET 多个项目

问题描述 投票:0回答:1

对于一个项目,我有一个包含多个项目的 .NET Core 解决方案。这些项目有单独的单元测试项目。这是结构的样子:

- My Project
  - Solution
    - Project A
    - Project B
    - Test Project A
    - Test Project B
- .gitignore
- .gitlab-ci.yml

我已经找到了构建和测试项目 A 和测试项目 A 的方法。现在我想为 B 做同样的事情。但这只是 4 个项目的情况,实际上我有 40 个项目。有没有一种聪明的方法来制作这个 yml 文件?做 40 份不同的工作似乎有点矫枉过正,而且工作量很大。

例如,在 Azure 中,您可以这样做:

  - stage: build all projects in solution containing .Tests extension
    tags:
      - linux_docker
    script:
      - "cd ./*/**.Tests"
      - "dotnet restore"
      - "dotnet build"
.net-core gitlab gitlab-ci
1个回答
0
投票

如果您想单独测试每个项目(而不是仅仅针对解决方案文件运行

dotnet test
),您可以使用 GitLab CI Parallel Matrix 功能。 CI yaml 可能如下所示:

test:
  stage: test
  tags:
    - docker
  image: mcr.microsoft.com/dotnet/sdk:7.0-alpine
  parallel:
    matrix:
      - PROJECT
        - Test Project A
        - Test Project B
  script:
    - dotnet test 'My Project'/Solution/'${PROJECT}'

这样 GitLab CI 将为您定义的每个矩阵变量创建一个作业,并为您提供环境变量中的内容。您也可以设置完整路径,而不仅仅是项目名称,但要小心在 linux 中引用任何包含空格的目录。

© www.soinside.com 2019 - 2024. All rights reserved.