8P by adldotori 2023-05-14 | favorite | 댓글과 토론

github에서 git action을 활용하여 CI/CD pipeline을 돌리는 분들이 많을 겁니다. 빠른 빌드를 위해 cache를 많이 사용하는데, 처음에는 크게 문제가 없지만 서비스가 커지거나 브랜치가 많아지면 캐싱이 안 되고 매번 다시 빌드되어 속도가 느려지기 시작합니다. 깃헙 액션의 기본 캐싱은 10GB 크기 제한이 있기 때문입니다.
이 문제를 해결하기 위해 self-hosted runner에서 로컬에 캐싱할 수 있는 패키지를 개발했습니다.

      - name: Cache node dependencies  
        id: node-cache  
        uses: corca-ai/local-cache@v2  
        with:  
          path: node_modules  
          key: node-${{ hashFiles(‘yarn.lock’) }}  
          clean-key: node-  

github-hosted runner 대신 self-hosted runner를 이용하고, 기존 cache를 사용하던 부분에서 uses 부분만 corca-ai/local-cache로 변경하면 바로 사용 가능합니다.
캐시의 크기 제한이 사라지고, 기존 캐싱은 네트워크를 통해 캐시 파일을 불러오는 것에 반해 로컬 캐싱은 디스크에서 바로 로드하기 때문에 캐싱 속도가 획기적으로 향상됩니다. 저희는 5배 이상의 속도 향상을 체감하게 되었습니다.