name: Test linux job
on:
push
jobs:
testJob:
name: Test
runs-on: ubuntu-latest
steps:
- id: set_var
run: |
content=`cat ./path/to/package.json`
# the following lines are only required for multi line json
content="${content//'%'/'%25'}"
content="${content//$'\n'/'%0A'}"
content="${content//$'\r'/'%0D'}"
# end of optional handling for multi line json
echo "::set-output name=packageJson::$content"
- run: |
echo "${{fromJson(steps.set_var.outputs.packageJson).version}}"
9条答案
按热度按时间ds97pgxw1#
使用内置的
fromJson(value)
(参见此处:https://docs.github.com/en/actions/learn-github-actions/expressions#fromjson)阅读一个文件取决于你使用的shell。下面是一个
sh
的例子:按照https://github.community/t5/GitHub-Actions/set-output-Truncates-Multiline-Strings/td-p/37870处理多行JSON
关于
set-env
/set-output
多行处理的GitHub问题:https://github.com/actions/toolkit/issues/403lnxxn5zx2#
以下是Official GHA Docs示例的一个版本,其中包括两处更改:
1.从文件加载json(
./your.json
)1.删除换行符(源代码)
1.使用
fromJson
分析输出并设置矩阵变量。j8yoct9x3#
使用多行环境变量:
这样就避免了任何需要逃逸的情况。
kjthegm64#
flvtvl505#
灵感来自于@dastrobu which adds key/val to $GITHUB_ENV的回答,并使用
jq
将package.json转换/缩小为一行:nom7f22z6#
我曾经用它从JSON数据中获取值。希望这能有所帮助
vltsax257#
使用Powershell:
xsuvu9jc8#
您可以很容易地使用
Script
操作来实现这一点。piok6c0g9#
set-output和save-state现在已弃用。自2023年6月1日起,通过stdout使用save-state或set-output命令的工作流将失败,并显示错误。Read