首页 > 解决方案 > 在 gitlab-ci.yml 作业中搜索文件

问题描述

我在 gitlab-ci.yml 有一份看起来像这样的工作

job_name:
  script:
    - .../ExeName.exe > Output.txt      
  needs:
    - ...
  stage: ...
  tags:
     - ...

编辑:作业正在使用 powershell

ExeName.exe是由视觉工作室创建的可执行文件。Output.txt包含程序的输出,并在ExeName.exe运行时创建。我想知道文件中是否存在字符串Output.txt。如果字符串存在,作业应该失败,如果存在,作业应该通过。我怎样才能做到这一点?

标签: powershellshellgitlab-ci

解决方案


我猜你考虑的工作运行一个包含标准 POSIX 工具的图像。

因此,特别是,您可能需要依赖grep

要么写:

job_name:
  script:
    - .../ExeName.exe > Output.txt
    - '! grep -e "forbidden string" Output.txt'

(默认情况下,grep如果它找到字符串,则成功,而您对相反的行为感兴趣,因此外壳否定运算符!)或:

job_name:
  script:
    - .../ExeName.exe > Output.txt
    - grep -q -v -e "forbidden string" Output.txt

if或者,如果您想在日志中显示更多文本,您可能需要手动使用:

job_name:
  script:
    - .../ExeName.exe > Output.txt
    - if grep -q -e "forbidden string" Output.txt; then echo "Found forbidden string"; false; else echo "OK."; fi

顺便说一句,您可能有兴趣将生成的文本文件设置Output.txt工作工件


推荐阅读