IT STUDY LOG
[지속적 통합] 04. 릴리스 준비 본문
# 학습 목표
- 지속적 통합의 필요성을 설명할 수 있다.
- 지속적 통합 개념이 나오게 된 배경을 이해할 수 있다.
- 지속적 통합의 장점을 설명할 수 있다.
- 지속적 통합의 원칙을 이해할 수 있다.
- 빌드/테스트의 개념을 이해할 수 있다.
- 테스트 주도 개발(TDD)에 대한 정의와 필요성을 설명할 수 있다.
- 테스트 주도 개발(TDD) 사이클을 설명할 수 있다.
- 테스트의 종류 (단위 테스트, 통합 테스트, E2E 테스트)를 설명할 수 있다.
- 릴리스의 개념을 이해할 수 있다.
- CI 도구(여기서는 GitHub Action)를 이용하여 지속적 통합이 이루어지는 과정을 직접 구현할 수 있다
- 다양한 CI 도구의 차이점을 이해할 수 있다.
- 코드와 환경 변수를 분리해야 하는 이유를 설명할 수 있다.
# 학습 내용
1. 환경 변수
- 운영체제/소프트웨어가 각기 다른 컴퓨터, 또는 사용자마다 별도로 가질 수 있는 고유한 정보를 담는데 사용하는 변수
환경 변수는 왜 필요한가?
배포되는 기능마다 설정이 달라질 수 있기 때문
- 새로운 배포마다 새롤운 기능들을 배포하게 되어 설정값이 변경되므로
- 코드 버전을 관리하듯이 설정값 버전 관리 필요
환경변수를 통해 설정을 분리해야 하는 이유
- 환경 변수는 코드 변경 없이 배포 때마다 쉽게 변경 가능
- 설정 파일과 달리, 잘못해서 코드 저장소에 올라갈 가능성이 적음
- 다른 설정 메커니즘과 달리 언어나 OS에 의존하지 않음
설정을 환경 변수를 통해 분리해야 하는 이유에 대한 참조 레퍼런스
- DB 연결 등과 같은 자원 관리, third-party 서비스에 대한 자격 증명, 배포에 대한 호스트명 등 "코드 내부"나 "설정 파일" (ex. yaml)에 지정할 경우 의존적이고, 관리가 힘들고, 보안상 취약할 수 있음
환경 변수 설정 예
Linux OS
- export 명령어
코드를 통해 환경변수를 설정하는 법 : node.js
- process.env 파일 사용
서비스 내에서 환경 변수를 설정하는 법 : GitHub Action
2. 커스텀 환경 변수 사용
- 하나의 워크플로에서 사용할 경우 env 키를 사용
- 워크플로 파일 전체에서 사용할 경우 env를 워크플로 파일의 최상위 레벨에서 사용
- 작업 단위에서 사용할 경우 jobs.<job_id>.env를 사용
- 단계 단위에서 사용할 경우 jobs.<job_id>.steps[*]. env 사용
name: Greeting on variable day
on:
workflow_dispatch
env:
DAY_OF_WEEK: Monday
jobs:
greeting_job:
runs-on: ubuntu-latest
env:
Greeting: Hello
steps:
- name: "Say Hello Mona it's Monday"
run: echo "$Greeting $First_Name. Today is $DAY_OF_WEEK!"
env:
First_Name: Mona
- 운영체제의 환경변수를 사용 가능 : (ex) echo command: $DAY_OF_WEEK, $Greeting, and $First_Name.
- 여러 워크플로에서 사용할 경우 조직, 레파지토리, 환경 단계에서 정의 가능
- vars context 사용 : github 웹 브라우저로 접근해 설정 후 yaml 파일에서 해당 변수에 접근 시 사용
- 레파지토리, 환경의 비밀 차이
- 레파지토리 : 주로 소스 코드, 문서, 이미지 및 기타 파일을 저장하는 장소로 이러한 파일은 개발자 및 다른 이들과 공유될 수 있음. 즉 레파지토리에 저장된 비밀 정보는 다른 사람이 액세스 할 가능성 존재
- 환경 : 주로 프로그램이 실행될 때 필요한 구성 요소와 설정을 저장하는 장소 (ex. 데이터베이스 비밀 번호, API 키 또는 기타 중요한 인증 정보 등) 환경 변수는 프로그램의 실행에 필요하지만, 일반적으로 누구나 액세스 할 수 없으며 일반적으로 보안 관리자 또는 개발자와 같은 특정 사용자에게만 액세스가 허용
'devops bootcamp 4 > 클라우드 서비스 운영' 카테고리의 다른 글
[지속적 배포] 02. 배포 전략 (0) | 2023.04.24 |
---|---|
[지속적 배포] 01. 배포 자동화 (0) | 2023.04.24 |
[지속적 통합] 03. 테스트 (0) | 2023.04.20 |
[지속적 통합] 02. 지속적 통합 (0) | 2023.04.20 |
[지속적 통합] 01. CI/CD 리뷰 (0) | 2023.04.20 |
Comments