bash - gitlab CI 不显示换行
问题描述
我有一个 CI(git lab CI),它运行一个运行 makefile 作业的 shell,它调用 bash 脚本。CI 脚本是一个 YAML (gitlab-ci.yml) 脚本。
YAML 脚本:
Build:
stage: ThisIsAnExample
script:
- export OPTION1=true; make -C build/ myTarget
生成文件脚本:
.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 不解释行返回?
解决方案
我找到了解决方法。
我做了这些改变:
在我的 YAML gitlab-ci 脚本中:
Build:
stage: ThisIsAnExample
script:
- export OPTION1=true; export FORCE_LR_ESCAPE_IN_CI=yes; make -C build/ myTarget
在我的makefile中:
.ONESHELL:
SHELL = /bin/bash
.SHELLFLAGS = -ec
FORCE_LR_ESCAPE_IN_CI ?= no
ifeq ($(FORCE_LR_ESCAPE_IN_CI),yes)
NEW_LINE = printf '\u2000\n'
else
NEW_LINE = echo ''
endif
myTarget:
@echo "A"; $(NEW_LINE); echo "B"; $(NEW_LINE); echo "C"; $(NEW_LINE);
我发现 gitlab-ci 如果它没有被一个字符进动,它会跳过一个 '\n' 。对我来说似乎是一个错误。无论如何,我在 '\n' 之前添加了一个不可见字符('\u2000')并且它有效!
注意:我试过了,echo '\u2000'
但它只在控制台中有效,在 ci 中无效。
推荐阅读
- java - 如何在 Android 应用中将 mapbox 导航 SDK 的距离格式从英制更改为公制?
- mongodb - Azure cosmos DB 3.6 Mongo 不支持具有嵌入字段的复合索引
- java - 无法通过 FileIO.Write/WriteFiles/WriteShardedBundlesToTempFiles/GroupIntoShards
- opengl - 我可以让 OpenGL 在单色通道模式下工作吗?
- flutter - 更新列表视图中的标题文本
- javascript - 如何使用 post API 添加
- firebase - Firebase 存储:如何克服自定义声明限制(1000 字节)
- laravel-5 - Laravel 无法注册新用途
- python-3.x - 用 ZeroMQ 实现屏障的好方法是什么?
- jquery - $.easyautocomplete 不是一个函数如何解决这个问题