이미 쓰는 GitHub Actions·GitLab CI에 onpod 배포 단계 하나를 더해요. onpod ci init 한 줄이면 CI 파일과 이 앱 전용 키가 생기고, 그다음부터는 push가 곧 배포예요.
이런 적 있나요
코드를 고치고, 커밋하고, push 하고, 다시 터미널을 열어 배포 명령을 치고, 끝날 때까지 지켜보고… 하루에 몇 번씩 반복하면 꽤 큰 일입니다. 배포를 맡던 사람이 자리를 비우면 고친 코드가 며칠씩 서비스에 못 올라가기도 하고요.
팀으로 일하면 더 헷갈립니다. 지금 서비스에 올라가 있는 게 어느 커밋인지, 누가 언제 올렸는지를 매번 물어봐야 하죠.
해결
저장소 폴더에서 onpod ci init --app myapp을 실행하면 onpod이 두 가지를 만들어 줘요. CI 파일(GitHub은 .github/workflows/onpod-deploy.yml, GitLab은 .gitlab-ci.yml)과 이 앱 하나만 배포할 수 있는 키입니다.
새 CI 서비스로 옮기는 게 아니에요. 이미 쓰는 GitHub Actions·GitLab CI 안에 배포 단계가 하나 생길 뿐이라, 테스트·코드 리뷰 흐름은 그대로 두고 그 뒤에 배포만 자동으로 붙습니다.
3단계
저장소 폴더에서 onpod ci init --app myapp. GitHub·GitLab은 저장소 주소를 보고 알아서 고릅니다.
화면에 한 번 보이는 키를 ONPOD_TOKEN이라는 이름으로 넣어요. GitHub은 --set-secret을 붙이면 이것까지 대신 해 줘요.
만든 파일을 커밋해 push 하는 순간 첫 배포가 돌아요. 이후로는 push 할 때마다 자동으로 다시 배포됩니다.
만들어지는 파일
서버 앱 myapp을 main 브랜치에서 배포하는 경우예요. onpod CLI는 onpod.ai에서 받아 체크섬을 확인한 뒤 쓰고, 키는 저장소 비밀에서만 읽어요. GitLab이면 같은 일을 하는 .gitlab-ci.yml이 만들어지고, 이미 파일이 있으면 덮지 않고 .gitlab/onpod-deploy.yml을 따로 만들어 include 한 줄만 안내해요.
안심하고 쓰도록
CI 키는 그 앱 배포에만 쓸 수 있어요. 다른 앱·DB·결제·키 관리는 못 해요. 웹사이트면 그 사이트만.
기본 1년이 지나면 저절로 무효가 되고, 필요하면 바로 지울 수도 있어요(onpod key rm).
키 원문은 처음 한 번만 보여 주고, CI 파일에는 들어가지 않아요. 로그에도 찍히지 않아요.
잘못 올라갔으면 onpod app rollback myapp. 커밋마다 이미지가 남아 원하는 커밋으로도 바로 돌아가요.
사내 GitLab + 사내 onpod
회사 서버에 onpod을 설치해 쓰고(온프렘), 코드는 사내 GitLab에 두는 경우가 가장 잘 맞아요. 사내 GitLab 러너가 사내 onpod을 직접 부르기 때문에 바깥 인터넷이 필요 없습니다.
사내 onpod에 로그인한 상태로 onpod ci init을 실행하면, CI 파일에 사내 onpod 주소와 사내에서 CLI를 받는 주소가 기본값으로 들어가요. 러너에서 주소가 다르면 GitLab CI/CD 변수(ONPOD_URL·ONPOD_CLI_URL)로 바꾸면 되고, 사내 인증서는 File 형식 변수 ONPOD_CA_CERT로 넣어요.
ONPOD_CI_IMAGE에 curl이 든 사내 미러 이미지를 넣으세요.자주 묻는 질문
관련 키워드
이어 보기