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보다 나은가요?토론을 위해. )