All about

 Error: fatal: repository 'https://github.com/{Repo name}.git/' not found
 Error: fatal: clone of 'https://github.com/{Repo name}.git' into submodule path '/home/runner/work/{My repo name}/{My repo name}/{Repo name}' failed
 Failed to clone '{Repo name}'. Retry scheduled
 Cloning into '/home/runner/work/{My repo name}/{My repo name}/{Repo name}'...
 remote: Repository not found.
 Error: fatal: repository 'https://github.com/{Repo name}.git/' not found
 Error: fatal: clone of 'https://github.com/{Repo name}.git' into submodule path '/home/runner/work/{My repo name}/{My repo name}/{Repo name}' failed
 Failed to clone '{Repo name}' a second time, aborting
 Error: The process '/usr/bin/git' failed with exit code 1

위와 같은 에러메세지가 출력되면서 submodule repo 를 불러오지 못하는 에러를 겪었습니다. submodule 이 private 으로 설정되어 있는데, 이 submodule 에 접근할 수 있는 정보가 github action runner 에 없기 때문에 발생하는 에러입니다.

여기서 My repo name 은 제가 작업하던 repo 의 이름이고 Repo name 은 submodule repo 이름입니다.

 

해결

github 계정의 settings -> Developer settings -> Tokens 에서 Generate new token 을 클릭한 후 classic token 을 선택합니다.

token 을 생성하기 위해 필요한 정보와 기능들을 선택합니다. Note 에는 token 을 구분하기 위한 목적을 적고, Expiration 에서 만료일을 지정합니다. Select scopes 에서는 해당 token 의 접근 범위를 설정합니다. 저는 repo 박스만 체크했습니다. 그리고 같은 화면의 가장 아래에서 Generate token 버튼을 클릭합니다.

token 이 생성된 것을 확인할 수 있습니다. token 의 값은 다시 확인할 수 없기 때문에 복사해둡니다.

이제 repo 의 Settings -> Secrets -> Actions 화면에서 New repository secret 버튼을 클릭합니다.

Name 에는 token 이름을 snake style로, Secret 에는 아까 복사했던 token 값을 입력하고 Add secret 을 클릭합니다.

이제 action workflow file 을 수정합니다. 아래는 github action 이 동작할 때 현재 바라보고 있는 submodule 의 commit id 로 초기화하는 부분의 예시입니다. secrets.ACTION_TOKEN 이란 환경변수를 가져오는데, 여기서 ACTION_TOKEN 이 바로 전 단계에서 추가한 token 의 이름입니다. 아래 코드블럭을 workflow file 에 추가합니다.

    steps:
    - name: Checkout submodules
      uses: actions/checkout@v3
      with:
        submodules: recursive
        token: ${{ secrets.ACTION_TOKEN }}

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading