CloudFormation 변경 세트를 보기 쉬운 표로 만들어 GitHub에 댓글 달기
개요
타이틀의 건을 GitHub Actions와 쉘 스크립트로 실현합니다. ▼
본문
AWS CloudFormation (이하 CFn)의 관리 콘솔에서는 변경 세트의 내용을 표에서 확인할 수 있습니다. ▼
AWS CLI에서도 변경 세트의 내용을 얻을 수 있습니다. 다만 돌아오는 JSON은 인간이 읽을 수 있는 느낌이 아닙니다. ▼
$ aws cloudformation describe-change-set --change-set-name $changeset_id
{とても長いJSONが返ってくる}
그래서이 JSON을 jq
명령으로 괴롭히고 Markdown 테이블로 만듭니다. 또한 GitHub의 끌어오기 요청에 댓글을 달겠습니다.
jq로 좋은 느낌
쉘 스크립트를 만듭니다. 이것을 CI/CD로 사용합니다. ▼
output_changeset_as_markdown.sh# 前略
changeset_id=$1
changeset_json=$(aws cloudformation describe-change-set --change-set-name $changeset_id)
stack_name=$(echo "$changeset_json" | jq -r .StackName)
changes=$(echo "$changeset_json" | jq -r .Changes)
changes_length=$(echo "$changes" | jq length)
echo "<details><summary><code>$stack_name ($changes_length changes)</code></summary>" # クリックで展開できるやつ
echo
if [ $changes_length -gt 0 ]; then
echo '|Action|論理ID|物理ID|リソースタイプ|置換|' # 少しでも横幅を減らすためにActionだけ英語
echo '|---|---|---|---|---|'
for i in $( seq 0 $(($changes_length - 1)) ); do
row=$(echo "$changes" | jq -r .[$i].ResourceChange)
col_1=$(echo "$row" | jq -r .Action)
col_2=$(echo "$row" | jq -r .LogicalResourceId)
col_3=$(echo "$row" | jq -r .PhysicalResourceId | sed -e 's/null/-/') # nullの場合'-'を表示
col_4=$(echo "$row" | jq -r .ResourceType | sed -e 's/AWS:://') # リソースタイプの'AWS::'は省略
col_5=$(echo "$row" | jq -r .Replacement | sed -e 's/null/-/' | sed -e 's/True/\*\*True\*\*/') # nullの場合'-'を表示。Trueなら太字にする
echo "|$col_1|$col_2|$col_3|$col_4|$col_5|"
done
fi
echo '<ul><li><details><summary>view json</summary>' # インデントを付ける目的でリストにしている
echo
echo '```json'
echo "$changeset_json"
echo '```'
echo '</details></li></ul></details>'
CI/CD에서 풀 요청에 댓글 달기
다음은 GitHub Actions의 예입니다.
이번에는 sticky-pull-request-comment 을 사용하여 풀 요청의 주석을 Upsert (없으면 Insert, 있으면 Update)합니다.
[참고] GitHub Actions에서 PR에 동일한 종류의 주석을 Upsert로 추가하는 방법
워크플로는 다음과 같이 합니다. ▼
workflow.yml# 前略(以下はjobのsteps)
- name: Make comment body
id: make-cfn-comment
run: |
comment_body_file="/tmp/pr_comment_body.txt" # 出力先ファイル
# コメント本文の作成($changeset_id_listは変更セットのID一覧)
for id in $(echo "$changeset_id_list"); do
./scripts/output_changeset_as_markdown.sh $id >> ${comment_body_file}
done
# タイトルの追加
comment_title="### CFn change sets"
sed -i "1i ${comment_title}" ${comment_body_file}
# 次のステップで使うためにset-output
echo ::set-output name=header::changeset-comment # 後述
echo ::set-output name=result::${comment_body_file} # 出力先ファイル
- name: Comment on pull request
uses: marocchino/sticky-pull-request-comment@v1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
header: ${{ steps.make-cfn-comment.outputs.header }} # 同じheaderのコメントがすでにある場合は上書きされる
path: ${{ steps.make-cfn-comment.outputs.result }} # 出力したファイルのパス
완성된 것
통상은 스택명의 일람만으로 하는 것으로 코멘트의 표시 사이즈가 커지는 것을 억제하면서... ▼
스택 이름을 클릭하여 테이블을 볼 수 있습니다. ▼
▶ view json
를 클릭하여 원래 JSON을 볼 수도 있습니다. ▼
요약
GitHub에서 CFn의 변경 세트를 확인할 수 있게 되어 매우 편리하게 되었습니다 😊
Reference
이 문제에 관하여(CloudFormation 변경 세트를 보기 쉬운 표로 만들어 GitHub에 댓글 달기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tippy/items/76e476cdfe0446ed9cde
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
AWS CloudFormation (이하 CFn)의 관리 콘솔에서는 변경 세트의 내용을 표에서 확인할 수 있습니다. ▼
AWS CLI에서도 변경 세트의 내용을 얻을 수 있습니다. 다만 돌아오는 JSON은 인간이 읽을 수 있는 느낌이 아닙니다. ▼
$ aws cloudformation describe-change-set --change-set-name $changeset_id
{とても長いJSONが返ってくる}
그래서이 JSON을
jq
명령으로 괴롭히고 Markdown 테이블로 만듭니다. 또한 GitHub의 끌어오기 요청에 댓글을 달겠습니다.jq로 좋은 느낌
쉘 스크립트를 만듭니다. 이것을 CI/CD로 사용합니다. ▼
output_changeset_as_markdown.sh
# 前略
changeset_id=$1
changeset_json=$(aws cloudformation describe-change-set --change-set-name $changeset_id)
stack_name=$(echo "$changeset_json" | jq -r .StackName)
changes=$(echo "$changeset_json" | jq -r .Changes)
changes_length=$(echo "$changes" | jq length)
echo "<details><summary><code>$stack_name ($changes_length changes)</code></summary>" # クリックで展開できるやつ
echo
if [ $changes_length -gt 0 ]; then
echo '|Action|論理ID|物理ID|リソースタイプ|置換|' # 少しでも横幅を減らすためにActionだけ英語
echo '|---|---|---|---|---|'
for i in $( seq 0 $(($changes_length - 1)) ); do
row=$(echo "$changes" | jq -r .[$i].ResourceChange)
col_1=$(echo "$row" | jq -r .Action)
col_2=$(echo "$row" | jq -r .LogicalResourceId)
col_3=$(echo "$row" | jq -r .PhysicalResourceId | sed -e 's/null/-/') # nullの場合'-'を表示
col_4=$(echo "$row" | jq -r .ResourceType | sed -e 's/AWS:://') # リソースタイプの'AWS::'は省略
col_5=$(echo "$row" | jq -r .Replacement | sed -e 's/null/-/' | sed -e 's/True/\*\*True\*\*/') # nullの場合'-'を表示。Trueなら太字にする
echo "|$col_1|$col_2|$col_3|$col_4|$col_5|"
done
fi
echo '<ul><li><details><summary>view json</summary>' # インデントを付ける目的でリストにしている
echo
echo '```json'
echo "$changeset_json"
echo '```'
echo '</details></li></ul></details>'
CI/CD에서 풀 요청에 댓글 달기
다음은 GitHub Actions의 예입니다.
이번에는 sticky-pull-request-comment 을 사용하여 풀 요청의 주석을 Upsert (없으면 Insert, 있으면 Update)합니다.
[참고] GitHub Actions에서 PR에 동일한 종류의 주석을 Upsert로 추가하는 방법
워크플로는 다음과 같이 합니다. ▼
workflow.yml
# 前略(以下はjobのsteps)
- name: Make comment body
id: make-cfn-comment
run: |
comment_body_file="/tmp/pr_comment_body.txt" # 出力先ファイル
# コメント本文の作成($changeset_id_listは変更セットのID一覧)
for id in $(echo "$changeset_id_list"); do
./scripts/output_changeset_as_markdown.sh $id >> ${comment_body_file}
done
# タイトルの追加
comment_title="### CFn change sets"
sed -i "1i ${comment_title}" ${comment_body_file}
# 次のステップで使うためにset-output
echo ::set-output name=header::changeset-comment # 後述
echo ::set-output name=result::${comment_body_file} # 出力先ファイル
- name: Comment on pull request
uses: marocchino/sticky-pull-request-comment@v1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
header: ${{ steps.make-cfn-comment.outputs.header }} # 同じheaderのコメントがすでにある場合は上書きされる
path: ${{ steps.make-cfn-comment.outputs.result }} # 出力したファイルのパス
완성된 것
통상은 스택명의 일람만으로 하는 것으로 코멘트의 표시 사이즈가 커지는 것을 억제하면서... ▼
스택 이름을 클릭하여 테이블을 볼 수 있습니다. ▼
▶ view json
를 클릭하여 원래 JSON을 볼 수도 있습니다. ▼요약
GitHub에서 CFn의 변경 세트를 확인할 수 있게 되어 매우 편리하게 되었습니다 😊
Reference
이 문제에 관하여(CloudFormation 변경 세트를 보기 쉬운 표로 만들어 GitHub에 댓글 달기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tippy/items/76e476cdfe0446ed9cde
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(CloudFormation 변경 세트를 보기 쉬운 표로 만들어 GitHub에 댓글 달기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tippy/items/76e476cdfe0446ed9cde텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)