Workflow의 실행은 기본적으로 Github runner에서 실행이 되는데 그렇게 하면 비용이 발생하기 때문에 self-hosted runner를 생성해야한다.
self-hosted runner 만들기 스타트!
(불확실하긴 함)
runner를 먼저 만들고 그 다음에 도커에 대한 설정을 했는데(유저 설정 같은 것들) workflow를 실행할 때 계속 도커 사용 부분에서 에러가 발생했다..
찾아보다가 인스턴스를 재시작하면 된다고 하는걸 보긴 했는데 재시작 권한이 없어서(ㅠㅠ) 시도는 못해봤다..
그래서 runner를 삭제하고 다시 만들었더니 에러 없이 잘 실행이 되어서..!
아마도 미리 도커에 대한 설정이 되어있어야 하는게 아닐까 하는 생각이 들었다.
미리 도커 설정하고 runner 만들자!
runner를 만드는 건 사실 시키는대로만 하면 되서 어렵지 않았다.
먼저 Github Action을 사용할 리포지토리의 settings > Actions > Runners로 가서 New self-hosted runner
를 클릭한다.
그러면 Download, Configure, Using your self-hosted runner 를 실행시킬 수 있는 스크립트를 볼 수 있다.
runner를 등록할 서버의 정보를 선택하면 그에 맞는 스크립트가 나오기 때문에 잘 선택해야한다.
맨처음에 Architecture를 왜인지 모르게 당연히 x64
겠거니 해서 선택하고 했다가 다시 설치하는 일이 있었다..
중간에 Optional: Validate the hash
단계에서 bash: shasum: command not found
에러가 발생하는데
밑의 명령어를 실행하고 난 다음 다시 실행시키면 된다.
# shasum 명령어 실행이 안 될 경우
$ sudo yum install perl-Digest-SHA -y
Configure 단계의 스크립트를 실행하면 Runner에 대한 설정을 하게 되는데..
Enter the name of the runner group to add this runner to:
Runner Group을 설정할 수 있는 질문이라고 한다. 아직 딱히 그룹으로 관리하는게 없어서 그냥 엔터치고 넘어갔다.
Enter the name of runner
runner 의 이름을 설정하는 질문인데 그냥 엔터치고 넘어가면 기본적으로 컴퓨터 기본 이름이 들어가기 때문에 원하는 이름은 이때 설정해야한다.
수정이 안되기 때문에 처음에 잘 설정해야함!! 처음에 그냥 엔터치고 넘어가버려서 EC2 서버 기본 이름으로 설정이 되어버렸었다..
This runner will have the following labels: 'self-hosted', 'Linux', 'X64' Enter any additional labels (ex. label-1,label-2): [press Enter to skip]
runner에 추가하고 싶은 라벨 입력을 할 수 있는데, 따로 없다면 엔터치고 넘어가면 된다. 라벨은 추후에도 추가를 할 수 있다.
Enter name of work folder: [press Enter for _work]
runner의 작업 폴더명을 지정할 수 있는데, 이것도 그냥 디폴트로 _work
로 지정했다.
이렇게 하고 나면 설정이 끝났고 실행만 시키면 끝이다!
./run.sh
를 실행하면 되는데 이렇게 하면 터미널 빠져나갈 경우 run이 멈춰버리기 때문에 runner를 백그라운드로 실행시켜야 한다.
$ nohup ./run.sh &
위 명령어를 실행하면 백그라운드로 실행이 되고, github에 가서 잘 되었는지 확인하면 된다.
yaml 파일에서 runs-on
부분을 self-hosted로 넣어주면 된다.
runs-on: self-hosted
이 부분은 runner에 등록된 라벨을 넣는 곳인데 runner를 여러개 사용하게 되면 label도 그에 맞게 구분할 수 있게 추가해서 사용해야 할 것 같다.
settings > Actions > Runners로 가서 삭제할 runner의 ...
을 누르면 삭제할 수 있다.
누르면 다음과 같은 팝업이 뜬다.
runner가 있는 터미널로 가서 action-runner 폴더 안에서 해당 명령어를 실행하면 runner 설정이 삭제되는데, 폴더 자체가 사라지는건 아니기 때문에 완료되면 폴더까지 삭제해주면 된다.
(공식 문서 확인해보기)
이젠 진짜로 workflow yaml 작성해보자!