CI/CD 를 도입 전 필수적인게 CI 간 테스트 코드 작성, 뭐 프로세스 정립 등 많지만,,,
아주 기초적이자 중요한건 수행되는 환경에 따른 실행 조건 분기 라고 생각한다.
우선 대표적인 환경 설정 방법은 아래 표와 같다.
일전에 Airflow 를 통한 파이프라인 관리했을땐, config 용 Git repo 를 따서 Sub repo 로 등록하여 사용하거나,
FastApi 로 개발할땐 파이썬의 dataclass를 유용하게 사용했다.
뭐 어떤 기술을 사용하든, 내부 동작은 보통 json 이나 환경변수로 동작하는 구조인데, 이번엔 env 를 선택헀다.
선택 근거
1. Node 에서 dotenv 핵 쉬움,,,
2. React 에선 CRA에서 .env 기본 지원(.env 파일 안 환경변수 Key 앞에 REACT_APP_ 만 붙이면 된다.)
무튼 이제 본론으로 가서 Node.js 와 React 에서 환경 분리에 대하여 적어보겠다.
Node JS 환경 분기
1. 패키지 install
npm install dotenv-cli --save-dev
2. 실행 환경 별 env 파일 분리
3. Package.json 에 실행 스크립트 별 환경변수 정의
예시 Package.json 첨부한다. 아래 scirpts 부분을 보면, 환경 변수 파일을 지정하는 코드를 볼 수 있다.
(* 난 개발과 local 의 경우 nodemon 을 사용중이라 nodemon 으로 실행 중이나, 사용하지 않는다면 node 로 해도 무방)
{
"name": "backend",
"version": "1.0.0",
"private": true,
"type": "module",
"dependencies": {
"cors": "^2.8.5",
"dotenv": "^16.4.5",
"express": "^4.21.0",
"jsonwebtoken": "^9.0.2",
"mysql2": "^3.11.3",
"sequelize": "^6.37.3"
},
"scripts": {
"start:prod": "cross-env NODE_ENV=production dotenv -e .env.prod node app.js",
"start:dev": "cross-env NODE_ENV=development dotenv -e .env.dev nodemon app.js",
"start:local": "cross-env NODE_ENV=local dotenv -e .env.local nodemon app.js"
},
"devDependencies": {
"cross-env": "^7.0.3",
"dotenv-cli": "^7.4.2",
"nodemon": "^2.0.22"
}
}
4. 실행
npm run start:local # 로컬 환경
npm run start:dev # 개발 환경
npm run start:prod # 운영 환경
React 환경 분기
1. 실행 환경 별 env 파일 분리 (Node 와 동일)
2. package.json 수정
- 뒤에 env=local, env=dev 이 부분을 각자 .env 뒤에 붙인 파일의 이름과 맞추면 된다.
"scripts": {
"start:local": "react-scripts start --env=local",
"start:dev": "react-scripts start --env=dev",
"start:prod": "react-scripts start --env=prod",
"build:dev": "react-scripts build --env=dev",
"build:prod": "react-scripts build --env=prod",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
3. 실행
npm run start:dev # 각자 package.json 의 script 부분과 맞춰서
npm run start:prod
이렇게 설정하면 프로젝트의 설정 분리가 끝난다.
'토이프로젝트 > CICD 도입기' 카테고리의 다른 글
프로젝트 CI/CD 도입기 -6 (CodeDeploy 설정하기-1) (0) | 2024.10.10 |
---|---|
프로젝트 CI/CD 도입기 -5 (Github action으로 s3에 업로드) (1) | 2024.10.08 |
프로젝트 CI/CD 도입기 -4 (EC2에 개발환경 설정,docker, git, compose) (2) | 2024.10.08 |
프로젝트 CI/CD 도입기 -3 (컨테이너화) (1) | 2024.09.30 |
프로젝트 CI/CD 도입기 -1 (2) | 2024.09.27 |