TIL

33일차 지속적 통합

김영재0412 2022. 5. 31. 16:37

GitHub Action을 이용한 빌드 및 테스트 자동화

1. 유닛 테스트를 통과시키세요.

먼저 테스트 주도 개발을 연습합니다. 직접 test/app.test.js를 수정하여 통과하지 않는 테스트를 모두 통과시키세요.

  1. 애플리케이션은 node.js로 작성되어 있습니다. node.js LTS 버전을 준비합니다.
  2. 먼저 애플리케이션의 의존성(dependency)을 설치해야 합니다. npm install 명령을 이용해 의존성을 설치합니다.
  3. 테스트가 통과하는지 확인하려면 npm test 명령을 이용합니다. 다음과 같이 테스트가 통과하지 않는 것을 먼저 확인하세요.

2. GitHub Action을 이용해서 Node.js CI를 적용하세요.

  1. node 버전은 16 버전으로 반드시 지정해야 합니다.
  2. 다음 상황에서 GitHub Action이 트리거되어야 합니다.
    • master로 push 했을 경우
    • pull request를 보낸 경우
  3. Pull Request로 제출하세요.

Getting Started

  • node.js 프로그램의 테스트를 위해서는 npm test 명령어를 CI, 즉 GitHub Action 상에서 자동으로 실행해줘야 합니다.
  • 먼저 공식 문서를 통해 GitHub Action의 사용방법을 알아봅시다.
  • Actions 탭을 클릭하여 workflow가 제대로 작동했는지를 확인해봅시다.
  • 레퍼런스를 참고하여 GitHub Action Node.js workflow를 만들고, 테스트가 통과하는지 확인하세요.

 

 

 

우선 먼저 app.test.js 파일부터 수정해 test를 통과 시켜 보겠다.

 

원본                                                                                                                          수정 후

 

처음에 딱 봤을 때 이걸 어떻게 하라는거지 싶었지만 천천히 보니 (1+1).to.be.equal(FILL_ME_IN) 값을 보니 어? 그냥 2를 넣으면 되는거 아닌가 싶어 넣어보니 테스트를 통과했고 그 뒤부터는 쉽게 쉽게 채워 나갔다.

 

그 후 포크한 곳에 푸쉬한 후 github.action을 이용할 차례였다.

 

깃 허브 액션 칸에 들어갔을 때

포크한 레포지에서 깃허브 액션으로 들어가보니 workflow를 고르는 창이 떴고 node.js를 골랐다.

 

이렇게 yaml 파일을 다 작성해주었고 여기서 16버전으로 지정하라 했으니 [12.x, 14.x, 16.x]에서 16.x만 남기고 다 지우고 start commit을 누르니 알아서 빌드와 테스트를 하고 성공했다.

 

여기서 On: 이 부분은 트리거로 workflow가 작동하는 조건? 그런 느낌이다. 위에서는 push 나 pull request를 할 시 작동하게 되있고

 

jobs: build: runs-on : ubuntu-latest가 되어있는데 이거는 간단히 가상컴을 우분투로 하나 여는것이며 여기안에서 테스트가 작동하는 것이다.

 

나머지는 읽어보면 알 수있다.

 

 

 

 

 

환경 변수

 

운영체제 혹은 소프트웨어가, 각기 다른 컴퓨터 또는 사용자마다 별도로 가질 수 있는 고유한 정보를 담는데 사용하는 변수를 특별히 환경 변수라고 한다.

 

환경 변수의 필요성

 

배포되는 기능마다 설정이 달라질 수 있기 때문이다

  • 새로운 배포마다, 새로운 기능들을 배포하게 됨으로써 설정값이 바뀌게 된다.
  • 따라서 코드의 버전을 관리하는 것처럼 설정값의 버전을 관리할 필요가 있다.

 

설정은 왜 환경변수를 통하여 분리해야 할까?

  • 환경 변수는 코드 변경 없이 배포 때마다 쉽게 변경할 수 있다.
  • 설정 파일과 달리, 잘못해서 코드 저장소에 올라갈 가능성도 작다.
  • 다른 설정 메커니즘과 달리 언어나 OS에 의존하지 않는다.
  • 레퍼런스

 

환경 변수 설정 예

  • Linux 운영체제: export 명령어 -> 해당 블로그
  • 코드를 통해 환경 변수를 설정 하는 법
    • node.js → process.env
  • 서비스 내에서 환경 변수를 설정하는 법

'TIL' 카테고리의 다른 글

35일차 배포 자동화  (0) 2022.06.03
34일차 지속적 통합 && 배포 자동화  (0) 2022.06.02
32일차 지속적 통합  (0) 2022.05.30
31일차 yaml  (0) 2022.05.30
30일차 docker, yaml  (0) 2022.05.30