Troublshooting, 로그파일
GitHub Actions Troubleshooting
-
GHES에 Self-signed certificate 사용시 Self-hosted 러너 등록 : GHES는 공인된 기관에서 서명된 공인 인증서의 사용이 강력히 권장되지만, self-signed 인증서를 사용할 때 방법이 설명되어 있습니다.
- GitHub Actions를 위한 HTTP proxy 설정
- GHES 인스턴스에 HTTP Proxy server가 구성되어 있다면, HTTP Exclusion list에
localhost
와127.0.0.1
을 설정해야 합니다. - 이 설정이 되어 있지 않으면
Resource unexpectedly moved to https://<IP_ADDRESS>
와 유사한 에러가 발생됩니다.
- GHES 인스턴스에 HTTP Proxy server가 구성되어 있다면, HTTP Exclusion list에
- hostname 변경 후 러너가 연결되지 않음
- GHES의 호스트네임을 변경하였다면, self-hosted러너들은 이전의 호스트네임으로 연결되지 않을 것입니다.
- 이 경우, self-hosted 러너의 구성을 업데이트 해야 하며,
- self-hosted 러너의 디렉토리에서
.runner
와.credentials
파일에서 모든 예전 호스트네임을 새로운 호스트네임으로 변경하고, self-hosted 러너 어플리케이션을 재시작 - 또는, GHES로 부터 Self-hosted 러너를 삭제하고 다시 추가
- self-hosted 러너의 디렉토리에서
-
메모리, CPU 용량 제약으로 GitHub Actions와 Job이 멈췄을 때
- 과도한 Actions의 실행으로 메모리와 CPU 용량의 한도가 되었을 경우, (러너들이 idle한 것들이 있다해도) job들이 시작되지 않고 UI상에서 아무 변화가 없는 경우가 생길 수 있습니다.
- 관리 콘솔에서 CPU와 메모리 사용량 확인
- Overall system health의 CPU와 메모리 사용량에 따라 CPU, 메모리 용량 증설 고려
- 만약, CPU, 메모리 사용량에 문제가 없다면, Nomad Job 섹션에서 “CPU Percent Value”와 “Memory Usage” 그래프 확인
- Actions와 관련된 아래 서비스들 확인
mps_frontend mps_backend token_frontend token_backend actions_frontend actions_backend
- 이러한 서비스들 중, CPU 100%에 근접하거나 메모리가 최대치(2GB by default)에 근접하는 것이 있다면, 리소스 할당을 증가할 필요가 있습니다.
- Actions와 관련된 아래 서비스들 확인
- 최대치에 근접한 서비스들에 대한 리소스 할당량 증가
- SSH 관리 콘솔로 GHES 인스턴스에 접속
- 아래 명령어로 추가 할당 가능한 리소스 확인
nomad node status -self
- 위 명령어로 나온 결과에서 “Allocated Resources” 섹션 부분 확인
Allocated Resources CPU Memory Disk 7740/49600 MHZ 23 GiB/32 GiB 4.4 GiB/7.9 GiB
/etc/consul-templates/etc/nomad-jobs/actions
디렉토리로 이동- 이 디렉토리에는 Actions의 서비스에 관련된 아래 세가지 파일이 있습니다.
mps.hcl.ctmpl token.hcl.ctmpl actions.hcl.ctmpl
- 이 디렉토리에는 Actions의 서비스에 관련된 아래 세가지 파일이 있습니다.
- 이 중, 위에서 확인된, 증가가 필요한 파일을 열어
resource
그룹 부분을 확인하고, CPU, 메모리 부분을 증가시킵니다.resources { cpu = 512 memory = 2048 network { port "http" { } } }
- 파일을 저장하고 빠져 나옵니다.
ghe-config-apply
명령을 실행하여 변경된 내용을 적용합니다.- 이 명령 실행 중
failed to run nomad job '/etc/nomad-jobs/<name>.hcl'
와 같은 에러가 발생한다면, CPU나 메모리가 가용한 범위보다 초과되어 할당된 것입니다.
- 이 명령 실행 중
ghe-actions-check
을 실행하여 Actions의 상태를 확인합니다.
Self-hosted 러너 Troublshooting, 로그파일
- Self-hoste runner 상태 확인 : idle, Action, Offline
- Self-hosted 러너 로그 파일 : 로그파일은 러너 디렉토리 내부에 별도의
_diag
디렉토리에 생성되며, 러너 어플리케이션이 시작될 때 마다 새로운 로그가 생성됩니다.- __Runner_파일 : Self-hosted 러너의 어플리케이션과 동작에 대한 로그파일
- __Worker_파일 : 각 job의 실행에 대한 로그 파일
-
리눅스 기반의 self-hosted 러너에서 service로 application을 실행할 때는
journalctl
을 사용해 실시간 활동을 모니터링할 수 있습니다. - self-hosted 러너에서의 컨테이너
- 도커 설치 확인 :
sudo systemctl is-active docker.service
- 만약 job이 아래와 같은 에러메세지로 실패 한다면, 도커 permission 확인
dial unix /var/run/docker.sock: connect: permission denied
- self-hosted 러너의 서비스 account가 도커 서비스를 사용할 수 있는 권한 확인
$ sudo systemctl show -p User actions.runner.octo-org-octo-repo.runner01.service User=runner-user
- 도커 설치 확인 :
- Self-hosted 러너 삭제