GiitHub Actions cache 작업이 캐시에 성공하지 않을 경우 범위 확인

컨디션

  • actions/cache@v2
  • 개시하다


    GiitHub Actionsactions/cache에서 사용하고 있는데 캐시가 안타를 치지 않아 난감하다.
    다음 정보는 워크플로가 끝날 때 표시됩니다.
    Cache saved successfully
    
    에 상관없이 다음 작업 절차가 시작될 때 다음과 같은 메시지가 나타납니다. 캐시가 없습니다.
    Cache not found for input keys: Linux-gradle-ハッシュ値, Linux-gradle-
    
    조사 결과actions/cache에'작용 범위'라는 개념이 있음을 발견했기 때문에 여기서 정리한다.

    활용단어참조


    기본 브랜치main는 PR을 작성하고 검토한 다음main에 브랜치를 결합하는 데 사용됩니다.
    이 PR의 내용인 CI가 통과했는지 확인하고자 PR의 분기로 GiitHub Actions의 작업 프로세스를 실행하고 있습니다.
    반면main 분기는 CI를 실행하지 않습니다.GiitHub Action의 작동 시간을 절약하고 싶어서다.
    GiitHub Action의 yaml 파일에 따라 다음과 같이 설정되었습니다.
    .github/workflows/ci.yml
    name: CI
    
    on: pull_request
    
    이걸 운용하면 PR에 공약을 추가하면 캐시를 잘 할 수 있는데 PR을 새로 할 때는 현금을 쓰지 않는 현상이 생겼다.

    actions/cache 역할 영역


    actions/cache의 매뉴얼은 다음과 같다.
    https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows#restrictions-for-accessing-a-cache
    A workflow can access and restore a cache created in the current branch, the base branch (including base branches of forked repositories), or the default branch (usually main )
    캐시는 버튼의 일치만 보는 것이 아니라 아래에서부터 찾는 동작이라는 것이다.
  • 현재 분기
  • 기본 분기
  • 기본 브랜치
  • 다시 말하면 상기 포함되지 않은 다른 지점에서 만든 캐시는 키가 일치해도 캐시로 사용되지 않는다는 것이다.
    위에서 말한 바와 같이 GiitHub Action의 워크플로우 운용을 PR을 제작할 때만 수행하는 경우 PR을 제작할 때 기본 분기나 기본 분기에 캐시가 없기 때문에 캐시를 하지 않는다.

    수정


    원인을 알았기 때문에yaml 파일을 다음과 같이 수정했습니다.
    .github/workflows/ci.yml
    on:
      pull_request:
      push:
        branches:
          - master
    
    이렇게 되면 홍보 제작에도 원활하게 캐시를 할 수 있게 된다.
    내 환경에서 GiitHub Actions의 총 실행 시간도 결국 단축되었습니다.

    총결산

  • GiitHub Actions는 캐시 효과가 있어야 하지만 효과가 없을 때 범위 확인
  • 캐시의 역할 범위는 다음과 같다.
  • 현재 분기
  • 기본 분기
  • 기본 브랜치
  • 좋은 웹페이지 즐겨찾기