Code States/TIL

[0421] (페어) 지속적 통합 - 환경 변수 분리

ki1111m2 2023. 4. 21. 13:44

Bare minimum requirement

  • GitHub Action을 이용하여 CI 상에서 Mini node server를 Docker 이미지로 만든 후, 여러분의 Docker Hub에 push하세요.

Getting Started

두 번째 스프린트는 앞서 GitHub Action으로 진행한 빌드/테스트 자동화가 끝나고 진행되는 스프린트입니다.

1. CI 상에서 주어진 Dockerfile을 이용해 Docker 이미지를 빌드할 수 있도록, workflow를 새로 만드세요.

  • workflow를 추가한다고 해서 GitHub Action이 즉시 작동하지는 않을 것입니다.
  • repository에서 오른쪽 사이드바를 살펴보면, Release -> Create a new release 링크가 존재합니다. 이 링크를 누르고 새로운 릴리스를 발행합니다. 설정은 다음과 같이 진행합니다.
    • Choose a tag: v1.0.0
    • Release title 및 Release notes는 여러분이 자유롭게 입력하세요.
     

  • Publish release 후에 GitHub Action이 작동하나요?
    • Q. 왜 작동이 되는 걸까요? 아까는 왜 안 됐을까요?
    • A. yaml 파일 내에 on 블럭에 release를 넣었기 때문이다. 어제 진행한 ‘빌드 및 테스트 자동화’ 스프린트에서 사용한 yaml 파일에서는 on 블럭 내에 push와 pull request만 넣었기 때문에 해당 동작이 발생했을때 작동한다.

 

 

2. 인증 정보에 대한 환경 변수를 만드세요.

1번 과정을 통해 GitHub Action을 실행하면 그 결과는 실패로 나타날 것입니다. 무엇이 잘못되었는지 먼저 로그를 살펴보세요.

  • Q. 왜 실패했을까요? 로그에서 그 이유를 찾아보세요.
  • A. yaml 파일 내에 docker의 아이디와 패스워드를 설정하지 않았기 때문이다.

Workflow YAML 파일을 자세히 살펴보면, DOCKER_USERNAME 및 DOCKER_PASSWORD라는 환경 변수가 존재합니다. 말 그대로 아이디와 비밀번호와 같은 민감정보를 YAML 코드에 입력해서 git commit 기록으로 남겨둔다면, 더 이상은 그 비밀번호를 사용할 수 없게 될 것입니다. (돌이킬 수 없어요!)

GitHub에서는 이러한 환경 변수를 안전하게 보관할 수 있는 기능을 제공합니다. Settings -> Secrets에서 환경 변수를 설정하세요.

 

 

 

3. Dockerfile 빌드 결과를 확인하고, Docker Hub에 이미지가 제대로 push 되었는지 확인하세요.

앞서 이 과정을 다 잘 따라왔다면, 여러분 각 개인의 Docker Hub에는 mini-node-server 이미지가 성공적으로 push되어 있을 겁니다. https://hub.docker.com/u/<여러분_아이디>에 들어가서 결과를 확인해 보세요.