사전 준비
- Github + Repository
- AWS EC2(필자는 ubuntu 18.04)
- Dockerfile
1. github Access Token 발급
Github access Token은 Github Container Registry(이하 ghcr)로 docker image를 배포하고, runner(우리에겐 EC2) 실행 시에 docker login에 사용됩니다.
다음 순서를 따라해봅시다.
![](https://blog.kakaocdn.net/dn/mfrV0/btrSUbIBLHP/9YdHHsjeqfvJ7dMvSl3q3K/img.png)
![](https://blog.kakaocdn.net/dn/m61gv/btrSUqFFxBh/GvySUjHIWkeYm0XkAt4PRk/img.png)
[Settings] - [Developer settings]
![](https://blog.kakaocdn.net/dn/baAihu/btrSPPMXsB9/JKGauqXTEqD8DaFZA5P7g1/img.png)
[Personal access tokens] - [Generate new token]
![](https://blog.kakaocdn.net/dn/l3qH8/btrSTycQams/46U40lkKG69rjjo5fyXLjk/img.png)
표시한 4개의 권한 선택
![](https://blog.kakaocdn.net/dn/cMA0AD/btrSPRxeThd/q5ASsMwRI00l6neVhlyKd1/img.jpg)
생성된 토큰 복사합니다.
2. Repository에 secret 등록
사전에 말했듯이, docker image를 배포하고, runner(우리에겐 EC2) 실행 시에 docker login에 사용하는 이 토큰을 해당하는 Repository에 등록을 해줘야 합니다.
실제 계정 토큰이므로 노출되어서는 안됩니다. 그러므로 Secret을 이용합니다.
![](https://blog.kakaocdn.net/dn/vdY4K/btrSSMI3Pwa/KaKimGL9AEcG8w9UAgkX9k/img.png)
[repository] - [Settings]
![](https://blog.kakaocdn.net/dn/bTTsZB/btrSOxMqAPh/nFk2plBEscquLd2ISlKSC0/img.png)
Secrets
![](https://blog.kakaocdn.net/dn/lNZ1l/btrSUaCTOgj/WHuKlW39cSai3aBiY3C0q0/img.png)
New repository secret
![](https://blog.kakaocdn.net/dn/de9bbU/btrSUbPl2QE/CEMJGZduakMfZVqqNmhzX1/img.png)
1번에서 발급받은 토큰을 이 곳에 복사해줍시다.
3. Workflow (Actions)
이 Repository에 push나 PR과 같은 이벤트 발생시 실행되는 동작들을 정의할 수 있습니다.
저는 Docker로 이미지를 빌드하고, ghcr에 배포하고 최종적으로 EC2로 배포할 예정입니다.
![](https://blog.kakaocdn.net/dn/bqavmq/btrSW7dSvp9/ROdzMUb8tvLHHWcXT8BuJk/img.png)
![](https://blog.kakaocdn.net/dn/doMJ3u/btrSOw7PMB1/bLec8k3zMZ0cQY1PwXf0rK/img.png)
그리고 yml 코드를 작성해주면 됩니다.
4. Runner 설정
이제, 어느 Runner(우리는 EC2)로 실행할 지, 지정해줘야한다
다시 [Settings] - [Actions]로 가보면.
![](https://blog.kakaocdn.net/dn/vtRNM/btrSOykgrTO/edjhz1yHC9B4L1AnDyiDZ0/img.png)
여기서 하단의 [Add Runner]를 선택하면 다음과 같은 창이 나온다.
여기 빨간 네모박스에 쳐진 명령어들을 여러분의 EC2에 접속해서, runner를 달아주면 된다.
![](https://blog.kakaocdn.net/dn/nR8sM/btrSUIlJVxC/2gvADTCERksep7I6yPMnAk/img.png)
순서대로 다운로드 받고, 압축을 풀고, run.sh까지 실행해주면 된다.
![](https://blog.kakaocdn.net/dn/oDBMn/btrSOykgrPr/oyGEEVDCums9g5TkN3TBr1/img.png)
위와 같이 나오는게 정상이지만 나는
위와 같이 에러가 나왔다.
이때 runner는 root계정으로 실행하면 안되므로 모두 sudo RUNNER_ALLOW_RUNASROOT="1" 요 명령을 앞에 추가해줘야 한다.
sudo RUNNER_ALLOW_RUNASROOT="1" ./config.sh --url https://github.com/dhkim1206/Longstone --token AQSARWANGIOYBOWVQ4RSOEDDMAJL4
다음과 같이 해주었더니 해결되었다.
sudo RUNNER_ALLOW_RUNASROOT="1" ./config.sh --url https://github.com/dhkim1206/Longstone --token AQSARWANGIOYBOWVQ4RSOEDDMAJL4
그러나 또 다음과 같은 에러가 나왔다. 아마 토큰이 제대로 등록이 되지 않았거나 url이 이상한거 같다.
댓글