Server&DevOps
[Jenkins] 웹훅 에러 No valid crumb was included in the request
킨글
2024. 9. 22. 17:19
아래와 같이 jenkins에게 웹훅을 날리는 경우에 No valid crumb was included in the request 에러가 나는 경우가 발생했다.
curl -X POST http://<jenkins-server>/job/<job-name>/build?token=<your-token>
Jenkins에서는 보안상 바로 호출이 안되기 때문에 CRUMB key를 받아야 한다고 한다.
그래서 기존에 아래와 같이 했던 부분을
- name: Trigger Jenkins Build
run: |
curl -X POST http://${{ secrets.JENKINS_URL }}/job/travel-backend/build?token=${{ secrets.JENKINS_TOKEN }}
Crumb를 json으로 받아서 build를 처리하는 방식으로 변경했다.
json을 parsing하주는 jq 플러그인 혹은 SecureRequester 플러그인을 설치해서 하는 방법이 있었는데,
추가로 플러그인을 설치해서 하고 싶지는 않아서 순수하게 처리하는 방식으로 처리했다.
- name: Get Jenkins Crumb
id: get_crumb
run: |
CRUMB=$(curl -u "${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }}" \
-v "http://${{ secrets.JENKINS_URL }}/crumbIssuer/api/json")
CRUMB_FIELD=$(echo "$CRUMB" | grep -oP '"crumbRequestField":\s*"\K[^"]+')
CRUMB_VALUE=$(echo "$CRUMB" | grep -oP '"crumb":\s*"\K[^"]+')
FINAL_CRUMB="$CRUMB_FIELD:$CRUMB_VALUE"
echo "FINAL_CRUMB=$FINAL_CRUMB" >> $GITHUB_ENV
- name: Trigger Jenkins Build
run: |
curl -u "${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }}" \
-X POST "http://${{ secrets.JENKINS_URL }}/job/travel-backend/build" \
-H "${{ env.FINAL_CRUMB }}"