반응형
Node.js DB설정정보를 아래와 같이 config파일로 분할하여 gitignore하여 형상관리를 하지 않는 방법으로 민감정보 노출을 막아왔다.
{
"development": {
"username": "user",
"password": "12345",
"database": "DADARI_DB",
"host": "127.0.0.1",
"dialect": "mysql",
},
"test": {
"username": "user",
"password": "12345",
"database": "DADARI_DB",
"host": "127.0.0.1",
"dialect": "mysql",
},
}
하지만 최근 프로젝트에 GIt Actions기능을 이용하여 CI/CD환경을 구축하고자 하여 원격 git repository에서도 DB설정정보를 사용해야할 상황이 발생하였다.
그래서 Git Repository secrets를 이용해서 DB 정보를 환경변수로 설정하여 노드 빌드 시, 사용하려고 하였다.
먼저 Git Repository secrets에 레포지토리에서 사용될 변수들을 설정한다.
반응형
그리고 Git Repository secrets을 노드에서 환경변수로 사용할 수 있도록 workflow에서 다음과 같이 설정하였다.
name: Node CI Example
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js 17.x
uses: actions/setup-node@v3
with:
node-version: 17.x
cache: 'npm'
- run: npm ci
- run: npm test
env:
DB_HOST: ${{ secrets.DB_HOST }}
DB_USERNAME: ${{ secrets.DB_USERNAME }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
그리고 코드상 DB 설정은 다음 코드처럼 process에서 환경변수를 가져와 설정하도록 하였다.
config.host = process.env.DB_HOST;
config.username = process.env.DB_USERNAME;
config.password = process.env.DB_PASSWORD;
const sequelize = new Sequelize(config.database, config.username, config.password, config);
이렇게 설정하면 git actions에서는 정상적으로 작동한다.
로컬 테스트를 위해서는 환경변수를 직접 설정해줘야 함.
영구적으로 환경변수를 설정하기 위해선 .zshrc 파일을 수정하면 되는데,
vi ~/.zshrc를 통해서 파일 오픈 후, 아래와 같은 형태로 작성하여 저장하면 로컬에서도 환경변수를 이용하여 정상적으로 테스트 해볼수 있음.
DB_HOST="호스트명"
끝.
Thank you!
반응형