【发布时间】:2020-11-24 17:26:23
【问题描述】:
我有一个 CI (git lab CI),它运行一个运行 makefile 作业的 shell,它调用 bash 脚本。 CI 脚本是一个 YAML (gitlab-ci.yml) 脚本。
YAML 脚本:
Build:
stage: ThisIsAnExample
script:
- export OPTION1=true; make -C build/ myTarget
Makefile 脚本:
.ONESHELL:
SHELL = /bin/bash
.SHELLFLAGS = -ec
myTarget:
@echo "A";echo ""; print "B\n"; echo "C"; echo "";
如果我从控制台运行 bash 脚本,我会得到:
A
B
C
在 CI 日志中我得到:
A
B
C
为什么 gitlab CI 不解释行返回?
【问题讨论】:
-
如果您的 CI 是一个 Web 应用程序,则输出可能没有正确转义/格式化,因为 html 中的所有空格都算作一个。我会使用浏览器的开发者工具检查网络源代码。
-
所以我应该做类似
if runner=CI; then ESCAPE='\'; else ESCAPE=''; printf "A${ESCAPE}\nB${ESCAPE}\nC${ESCAPE}\n"的事情?我的解决方案很丑……有什么想法吗?
标签: bash shell makefile yaml gitlab-ci