powershell - 在 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
。如果字符串存在,作业应该失败,如果存在,作业应该通过。我怎样才能做到这一点?
解决方案
我猜你考虑的工作运行一个包含标准 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
为工作工件。
推荐阅读
- java - 将布局视图保存到 SD 卡
- javascript - 除了 3 维数组,还有更好的方法来管理基于网格的游戏吗?
- sed - 如何在 sed 命令中传递变量
- java - java.io.NotSerializableException: java.time.format.DateTimeFormatter
- ruby - ruby 何时/如何使用救援/确保?
- typescript - TypeOrm 实体和 ormconfigs
- c# - 有没有办法从类似数学的函数中获取参数?
- java - 确认用户登录后调用 ParseUser.getCurrentUser().getUsername() 返回 null
- python - Flask Python 登录验证失败
- java - 二叉搜索树中节点的路径作为二叉搜索树