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 에 추가합니다.