在我的GitHub复合操作中,我试图从文件中输出一个多行字符串,以便订阅我的操作的工作流可以将该文本放入问题中。我无法以正常方式将输出设置为多行值:
FOLDER=$(ls -d */ | grep -E '^my-dynamically-named-artifact-folder-*')
FILE_PATH="${FOLDER}file.txt"
echo "FILE_PATH=$FILE_PATH" >> $GITHUB_ENV
echo "$FILE_PATH"
if [ -f "$FILE_PATH" ]; then
FILE_TEXT=$(cat "$FILE_PATH")
else
FILE_TEXT="report.txt does not exist"
fi
echo "This is the file text:\n$FILE_TEXT"
echo "FILE_TEXT=$FILE_TEXT" >> "$GITHUB_OUTPUT"
echo "FILE_TEXT=$FILE_TEXT" >> $GITHUB_ENV
控制台使用记录了文件文本的正确输出
echo
你可以看到上面的内容,但我在之后的操作中出现了以下错误:
Error: Unable to process file command 'env' successfully.
Error: Value cannot be null. (Parameter 'name')
Error: Unable to process file command 'output' successfully.
Error: Value cannot be null. (Parameter 'name')
订阅工作流得到了一个空字符串。我做了一些研究,然后用以下内容创建了变量:
echo 'FILE_TEXT<<EOF' >> $GITHUB_OUTPUT
echo $FILE_TEXT >> $GITHUB_OUTPUT
echo 'EOF' >> $GITHUB_OUTPUT
它完成时没有出现错误,但它将输出转换为一行文本,这不是我想要的。经过更多的研究,我尝试在将其放入变量之前转换为基数64:
B64=$(echo -n "$DEBUG_LOG" | base64)
echo "B64=$B64" >> "$GITHUB_OUTPUT"
它将部分文本转换为基数64,然后在中间停止,可能是在一些破折号周围(
-
). 紧接着,它又出现了一个错误:
Error: Unable to process file command 'output' successfully.
Error: Invalid format 'aVeryShortNumberOfBase64EncodingCharacters'
我编写的订阅工作流确实将部分编码的文本正确地放入了问题中,但这显然还不够好。
我没有尝试替换换行符,因为我发现当github改变了我们创建输出变量的方式时,响应显示它停止了工作。
我如何将这些多行文本发送给我的用户,以便他们将其放入自己的问题中?