Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- PayPay
- javascript
- vba
- JenkinsFile
- local
- 페이페이
- CSV
- 프라하
- PostgreSQL
- terraform
- pyenv
- 釜つる
- duckdb
- 三井住友カード
- Python
- 태국
- node.js
- Selenium
- typescript
- 뮌헨
- 카마츠루
- 아타미
- 방콕
- 체코
- 메르페이
- 熱海
- 미츠이 스미토모
- documentdb
- codebuild
- react.js
Archives
- Today
- Total
도쿄사는 외노자
cURL로 JSON 파일 전송하기 (따옴표 대책) 본문
Jenkinsfile에서 받은 데이터를 Shell로 넘겨서, TEAMS로 cURL을 통해 Notification을 날리는 업무.
일 자체는 그냥 데이터 받은거 편집해서 curl로 날리면 땡인데...
보시다시피 날려야 할 cURL이 이런 식이다.
curl -X POST -H "Content-Type: application/json" -d '{"text":"Branch Name:${BRANCH_NAME}<br>Author:${COMMIT_AUTHOR}<br>Commit Comment:${COMMIT_MSG}<br> ... Jenkins Build:<a href=${BUILD_URL}>${BUILD_URL}</a><br>"}' ${TEAMS_URL}
이걸 쉘에 그대로 써서 돌리려니 당연히 따옴표와 쌍따옴표의 카오스가 일어난다.
가독성은 말할 것도 없이 더럽고...
그래서 방법을 찾아보다가...
가장 따옴표 문제가 심각한 JSON부분을 통째로 들어내서 json파일에 넣어버리기로 했다.
그리고 그 파일을 cURL에서 불러내어 전송.
방법은 딱히 뭐 없고, 그냥 아래와 같이, 보낼 파일 앞에 @만 붙이면 된댄다.
curl -X POST -H "Content-Type: application/json" <URL> -d @<파일명>
뭐 이걸로 설명은 다 했고, 구현한 코드는 이렇다.
# request.json파일이 존재할 경우 삭제
if [ -e ./request.json ]; then
rm -rf request.json
fi
# json부분을 request.json파일을 만들어 통째로 집어넣기
echo "{text: '" > request.json
echo "Branch Name : ${BRANCH_NAME}<br>" >> request.json
echo "Commit Author : ${COMMIT_AUTHOR}<br>" >> request.json
echo "Commit Comment: ${SPC_COMMIT_MSG}<br>" >> request.json
...
echo "Jenkins Build : <a href=${BUILD_URL}>${BUILD_URL}</a><br>" >> request.json
echo "'}" >> request.json
# TEAMS에 날리기
curl -X POST -H "Content-Type: application/json" ${TEAMS_URL} -d @request.json
'Tech > Shell' 카테고리의 다른 글
Bash Shell 문자열 변수 치환 (0) | 2019.11.19 |
---|---|
Display date in yyyy-mm-dd format in Bash (0) | 2016.07.12 |
Extract json value in bash (0) | 2016.07.08 |