[Github] Github Action: 빌드 캐시 적용

[원본 링크]

CI/CD를 구축하고 돌리다보면, 아무래도 빌드시간이 짧으면 짧을수록 개발자는 더욱 큰 행복을 느낀다.
빌드캐시를 적용하면 개발자들을 더욱 행복하게 할 수 있다. 중간 결과물들을 저장하게 해서 다시 빌드를 수행할 때에 반복작업을 하지 않도록 하는 것이다.

예를 들어, 나는 Rust로 서버를 올리고 있는데 빌드에만 2분 30초가 걸린다.

막 엄청 느린것도 아니지만, 나는 조금 더 빨랐으면 했다.

빌드캐시를 저장하려면 다음과 같이 공식 cache용 모듈을 사용하면 된다.
Rust의 경우에는 다운받은 모듈을 홈 디렉토리의 .cargo에, 빌드 파일을 target에 저장한다.
그래서 다음과 같이 캐시 설정을 해주면 되었다.

      - name: Cache Cargo's directories
        uses: actions/cache@v3
        with:
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}
          path: |
            ./target
            ~/.cargo

key는 캐시를 저장하는 K-V의 key다.
여기서는 Rust를 예시로 했지만 다른 언어라도 사용에 큰 차이는 없다. nodejs라면 node_module과 dist를 캐싱하면 되는 것이고, 자바라면 gradle을 캐싱하면 될 것이다.

저러고 한번 돌려서 캐시를 저장한 다음에 다시 돌리면

이제 빠르게 돌아갈 것이다.
15초 나왔다.


참조
https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows