我正在使用 bitbucket 管道,并且我需要将 .env 文件(例如)存储为变量,以便我可以在部署中使用它。当我将其存储为纯文本变量时,它作为单行文本回显,并且应用程序无法使用它。
如果您的文件包含换行符,它们将被管道变量页面中的输入字段破坏。
解决方案是对文件内容进行base64编码,并在写回文件时对变量进行解码。
base64 < .env
pipelines:
default:
- step:
script:
- echo $MYVAR | base64 --decode > .env
请注意,如果您的文件包含机密并将 Base64 编码变量标记为机密,您将失去一项安全功能,该功能可防止在管道日志中意外打印其值。请参阅Bitbucket:显示标记为秘密的变量的值
上述答案是正确的,但我没有足够的声誉来添加评论。因此,对于任何获得
base64: invalid input
的人,只需在解码时添加 -i, --ignore-garbage
选项,或在编码时添加 -w, --wrap=0
禁用换行符。