본문 바로가기

back-end/deployment

github actions/ haythem/public-ip@v1.3 라이브러리를 사용해 actions 실행 IP를 가져올 때 간헐적으로 정상 동작이 되지 않는 문제

 

문제 workflows .yml 중 script 일부

 

- name: Get Github Actions IP Addresses
  id: ip 
  uses: haythem/public-ip@v1.3

 

 

haythem/public-ip@v1.3를 이용해서 실행 중인 github actions의 ip를 가져오는 과정에서 Error: read ECONNRESET와 같은 에러 메시지가 발생하며 ip를 가져오는 데 너무 많은 시간이 걸리거나, 많은 시간이 걸리면서 ip를 정상적으로 가져오지 못하는 상황이 발생했다.

 

이후 actions 실행 중 임시적으로 actions 실행 ip만 ACG의 inbound 허용 ip로 추가하고, 배포 완료 이후 inbound 허용 ip에서 제거하는 script로 구성 중이었으므로 해당 step이 제대로 동작하지 않으면 이후의 script까지 연쇄적으로 실패하는 구조였다.

 

항상 해당 step이 제대로 동작하지 않는 것은 아니었지만, 꽤 높은 확률로 해당 step에서 fail이 발생했고 job 전체를 re-run 하면 정상적으로 배포가 이루어지는 경우도, 아닌 경우도 있어 해결이 필요했다.

 


 

관련 haythem/public-ip@v1.3 github issue

 

동일한 문제 증상이 제기된 github issue 링크

 

ETIMEDOUT and ECONNRESET when running this action · Issue #23 · haythem/public-ip

It appears that there is some issue with this actions. The errors described below appears around 50% of the time. Run haythem/public-ip@v1.3 with: maxRetries: 5 Error: read ECONNRESET and Run hayth...

github.com

 

관련해 해결 방법을 찾던 중 해당 라이브러리 github에 동일한 문제 증상으로 issue가 올라온 것을 확인했고, 답변에 올라온 다른 방법으로 해결할 수 있었다.

 

 

참고 답변 원본 링크

 

ETIMEDOUT and ECONNRESET when running this action · Issue #23 · haythem/public-ip

It appears that there is some issue with this actions. The errors described below appears around 50% of the time. Run haythem/public-ip@v1.3 with: maxRetries: 5 Error: read ECONNRESET and Run hayth...

github.com

 


 

haythem/public-ip@v1.3 라이브러리를 사용하지 않도록 대체

 

- name: Get Github Actions IP Addresses
  id: publicip
  run: |
    response=$(curl -s canhazip.com)
    echo "ip=$response" >> "$GITHUB_OUTPUT"

 

답변 중 @lantrix 사용자가 게시한 내용을 참고하여 actions step에서 ip를 가져올 때 haythem 라이브러리의 의존성을 제거하고, canhazip.com 이란 웹 사이트를 호출해 ip를 추출할 수 있도록 수정했다. (hostname 명령어를 통해 ip를 가져오는 경우 사설 ip 주소가 반환되기 때문에 공인 ip가 필요한 내 목적에는 부합하지 않아 사용할 수 없다)

 

actions script에서는 다음 step에서 사용할 수 있도록 변수에 저장해놓았지만, linux 환경에서 해당 명령어를 직접 실행해 보는 경우 지연 없이 정상적으로 ip를 잘 가져오는 걸 확인할 수 있다.

 

일부 마스킹 처리 하였음

 

물론 canhazip.com 서비스가 중단되는 경우나, 서버에 장애가 생긴 경우 이 방법을 통한 ip 확인 방식도 문제가 발생할 여지는 존재한다.

하지만 작성일 기준 canhazip.com 서비스는 정상 동작 하고 있고, 만약 문제가 생기는 경우엔 canhazip.com이 아닌 다른 서비스로 대체해 script 정상 동작을 유지할 수 있으므로 haythem의 public-ip 라이브러리의 불완전한 동작보다는 더 나은 대안으로 보인다.