JSONフィールドを.body
ENV変数に保存します。このフィールドの内容は常に複数の文字列と文字に変更され、GitHubのプールリクエストの本文メッセージです。したがって、マークダウンも渡されます。
以下は、次から取得した正確な例です。.body
#Title
## SubTitle
*date*
1. Item 1
2. Item 2
3. Item 3
jqと-rを使用してJSONのネイティブコンテンツを解析するとき:
echo "PR_BODY=$(jq -r '.body' $HOME/pr.json)" >> $GITHUB_ENV
GitHub Actionsでエラーが発生します。
ちなみに、私の計画は、.body
次のマークダウンファイルにデータを保存することです。
run: |
ed changelog.md <<'END_ED'
1i
${{ env.PR_BODY }}
.
wq
END_ED
echo >> changelog.md
.body
エラーなしで空白なしでデータを抽出するにはどうすればよいですか? ENV変数はこの問題に対する答えではないかもしれませんか?
編集:これは.bodyの元の生のJSONです。
"body": "Manually configuring ports for DEV, CAT/QA environments. Migrating from managed service to self-serve \"GCP resource\". \r\n\r\n- [x] DEV\r\n- [x] CAT/QA\r\n- [ ] PROD\r\n\r\n```\r\n# Allow healthcheck on ports 80, 443\r\nresource \"google_compute_firewall\" \"allow-healthcheck\" {\r\n name = \"${format(\"%s\",\"${var.gcp_resource_name}-${var.gcp_env}-fw-allow-healthcheck\")}\"\r\n network = \"${google_compute_network.vpc.name}\"\r\n allow {\r\n protocol = \"tcp\"\r\n ports = [\"80\",\"443\"]\r\n }\r\n source_ranges = [\"2.2.0.0/16\", \"1.1.0.0/22\"]\r\n}\r\n```\r\nConfiguring for bug, link here:\r\n[Link To Terraform provider update](https://www.terraform.io/)"
答え1
に基づいて「GitHub Actions用のワークフローコマンド」、複数行の値の構文は次$GITHUB_ENV
のようになります。
PR_BODY<<EOF
multiline string
here
...
EOF
コマンド置換の値を使用すると、次を使用してシェルから値を生成できます。
printf "PR_BODY<<EOF\n%s\nEOF\n" "$(jq -r '.body' $HOME/pr.json)"
(改行文字を挿入すると簡単に作成できるため、代わりにprintf
使用したい可能性があります。echo
いいえコマンドの置き換え時にデータが破損しています。バラよりなぜprintfがechoより優れているのですか?議論のために。 )