c# - 如果 Powershell 条件结果为真,如何将阶段标记为不稳定?

标签 c# .net powershell continuous-integration gitlab-ci

我有一个 .Net 5 解决方案并使用代码样式分析构建项目。每个违反规则都会导致警告。但是构建命令以代码 0 退出。
我创建了一个 .gitlab-ci.yml如果抛出任何构建警告,则应将管道标记为不稳定的文件。

image: mcr.microsoft.com/dotnet/sdk:5.0

stages:
  - build
  - unit-tests

build:
  stage: build
  script:
      - |-
        dotnet build --output build -consoleloggerparameters:"Summary;Verbosity=normal" -m -p:"WarnLevel=5;EnforceCodeStyleInBuild=true" -t:"clean,build" -fl1 "/flp1:warningsonly";

        if ((!$LASTEXITCODE) -and (Get-Content "msbuild1.log"))
        {
          # >>> mark stage as unstable here <<<
        }
  artifacts:
    paths:
      - build

unit-tests:
  stage: unit-tests
  script:
    - dotnet test --no-build --output build
  dependencies:
    - build
阶段本身通过了,但我希望它以不稳定状态通过(因为警告),不幸的是它是绿色的。
A 解决方案是添加 -warnaserror构建命令的标志并使用 allow_failure: true为舞台。这将使阶段进入不稳定状态,但由于缺少构建,下一阶段将失败。
那么检查构建命令是否以警告结束将阶段标记为不稳定的正确方法是什么?

最佳答案

我试图添加一个额外的阶段 code-quality这对我来说非常好

image: mcr.microsoft.com/dotnet/sdk:5.0

stages:
  - build
  - code-quality
  - unit-tests

build:
  stage: build
  script:
    - dotnet build --output build
  artifacts:
    paths:
      - build

code-quality:
  stage: code-quality
  script:
    - |-
      dotnet tool install -g dotnet-format;
      dotnet format -wsa --check --verbosity diagnostic;

      if ($LASTEXITCODE) 
      {
        exit 1;
      }
  allow_failure: true
  dependencies:
    - build

unit-tests:
  stage: unit-tests
  script:
    - dotnet test --no-build --output build
  dependencies:
    - build
我唯一想知道的是为什么我必须检查退出代码。如果 dotnet 格式失败,它会以代码 2 退出。但 Gitlab 似乎只检查退出代码 0 还是 1?因为错误代码 2 导致成功。这就是为什么我必须手动检查它。
如果有人知道如何改进这一点,请告诉我!

关于c# - 如果 Powershell 条件结果为真,如何将阶段标记为不稳定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68395715/

相关文章:

c# - 在 XAML 中应用自定义画笔

c# - C# 中的基本构造函数 - 首先调用哪个?

c# - 永久服务 "Starting"状态

powershell - PowerTools 更新-TfsWorkspace 未获取最新版本

PowerShell 脚本在通过任务计划程序运行时缺乏一致性,我是不是遗漏了什么或者这个 Windows 就是 Windows?

c# - 如果列表为空,则添加默认字符串

c# - 多线程MSMQ读取

c# - 使用 let 变量和子查询重构 LINQ to Entities 查询

.net - 是否有类似ReSharper的东西可用于改善PowerShell开发体验?

c# - 从动态 SQL 查询返回 JSON