여느 때처럼 개발 중에 코드 토끼가 리뷰를 해줬다.
Github actions를 활용해서 CI/CD 파이프라인을 구축하던 중에 이전에는 받지 못했던 리뷰를 받았다.
일단 env설정은 secret으로 설정을 해두었고 서버에도 이미 둔 상태라서 바로 resolve하면 되는데
서드파티 액션을 커밋 SHA로 고정하라는게 무슨 말인지 알아보기로했다.


일단 서드 파티에 대해서 짧게 설명하면
퍼스트 파티 - 개발자(나)
세컨드 파티 - 사용자
서드 파티 - 그외 다른 사람이 만든 앱
이제 다시 리뷰와 토끼가 준 글로 돌아가면 checkout은 github에서 공식으로 지원하는 action이지만 개발자인 내가 만든 앱은 아니다. 그래서 코드래빗은 GitHub Actions 문서를 참고해서 checkout을 태그로 사용하는 방식이 아닌 내가 실제로 사용하고자 하는 버전의 commit을 사용할 것을 권장하는 것이다.
이를 권장하는 이유는 v4라는 태그를 사용하게 되면 checkout@v4가 만약 업데이트 되면 내 ci/cd 파이프 라인에 checkout 업데이트라는 변수 즉, 백도어의 가능성이 생길 수 있기 때문이다.
처음에는 checkout은 github 공식 액션인데 너무 과한 거 아닌가?라는 생각이 들었는데
문득 최근 발생했던 axios 취약점이 생각났다. (Node 생태계에서 아주 많이 쓰이는 비동기 라이브러리)
그리고 npm에서도 아주 간단한 라이브러리 삭제로 인한 파급 효과도 생각이 났고...
특히나 AI가 코드를 대신 작성해주는 시대이다보니 조심해서 나쁠거는 없다는 생각도 들었다.
그럼 이제 버전 태그 대신 SHA commit으로 교체를 어떻게하는지 살펴보자

실제 actions/checkout 레포지토리를 가면 배포된 버전들 확인할 수 있다.

최신 버전은 항상 무서우니 4.0 버전을 사용하겠다.

그런데 v4랑 v4.3.1이랑 commit sha가 같다?
알고보니 v4는 v4버전의 가장 최신 릴리즈 버전을 따라가는 태그였다.
이렇게 보니깐 내 프로젝트의 배포 과정에서 다른 서드파티(checkout)의 v4 최신 버전 릴리즈에 따라서 바뀔 수도 있겠다는 생각이 들었다.
그러면서 동시에 github 공식 action인데...하는 마음도 있지만 일단은 sha를 고정으로 하는 방식으로 가려고한다.
이 외에도 다른 actions들도 sha고정 방식으로 변경하였다.

그렇게 토끼의 리뷰는 resolve 처리 되었습니다.