꼬꼬마 블로그

꼬꼬마의 기술 블로그

이번 글에서는 Github Actions에서 NodeJS 애플리케이션을 실행할때 환경변수를 설정하는 방법을 알아보도록 하겠습니다.

이전의 이야기..

Github Actions에 NodeJS 환경변수를 설정하게 된 계기를 설명하는 입니다. 시간이 없으신 분은 다음 섹션부터 읽으시면 됩니다

이 글을 작성하게된 배경은 급식 알리미를 만들어 보자는 욕심부터 시작되었습니다.

 

어느날 점심시간 30분전쯤 오늘 급식 뭐지?라는 생각에 학교의 급식을 알려주는 사이트를 통해 급식을 찾아봤습니다. 그러다 문득 매일 점심시간 30분전쯤 급식을 확인하는 저를 발견할 수 있었습니다.

 

아, 그냥 내가 굳이 찾아보지 않아도 급식정보가가 알아서 찾아와줬으면 좋겠다라는 생각에 급식을 특정한 시간에 자동으로 알려주는 서비스?를 생각하게되었습니다.

 

가장 비용 없이 운영할 수 있는 방법을 생각한게 Github Actions의 스케줄을 통해 특정 시간에 급식정보를 메일로 알려주는 방식이었습니다.

 

이때 Github Actions나이스 API 키와 같은 정보를 환경변수에서 받아오기위해 설정이 필요했습니다.

 

Github Secrets

Github Actions를 설정할 저장소의 Settings > Secrets > New repository secret로 들어갑니다.

 

 

위와 같이 KEYVALUE를 작성합니다.

 

Node 환경변수

Secrets는 그저 Actions에서 접근할 수 있도록만 설정된 값입니다. NodeJS의 환경변수로는 따로 등록해줘야합니다.

 

npm run start와 같이 NodeJS 애플리케이션을 실행하는 run과 함께 env를 작성해줍니다.

 

- name: Run Mailing
run: npm run start
env:
  NEIS_KEY: ${{ secrets.NEIS_KEY }}
  OFFICE_CODE: ${{ secrets.OFFICE_CODE }}
  SCHOOL_CODE: ${{ secrets.SCHOOL_CODE }}
  GOOGLE_EMAIL: ${{ secrets.GOOGLE_EMAIL }}
  GOOGLE_PW: ${{ secrets.GOOGLE_PW }}

위와 같이 사용할 환경변수의 키와 값을 넣어주면 됩니다. 이때 값은 Github Secrets를 사용하기에 ${{ secrets.KEY }}와 같이 위에서 설정한 값에 접근합니다.

 

아래는 제가 직접 설정한 yml파일입니다.


프로젝트는 타입스크립트 환경에서 작성되었습니다.

 

name: Send Dish Mail

on:
  schedule:
  - cron: "15 2 * * *"


jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
        with:
          node-version: "12.x"

      - name: Install Dependencies
        run: npm install

      - name: Build Typescript
        run: npm run build

      - name: Run Mailing
        run: npm run start
        env:
          NEIS_KEY: ${{ secrets.NEIS_KEY }}
          OFFICE_CODE: ${{ secrets.OFFICE_CODE }}
          SCHOOL_CODE: ${{ secrets.SCHOOL_CODE }}
          GOOGLE_EMAIL: ${{ secrets.GOOGLE_EMAIL }}
          GOOGLE_PW: ${{ secrets.GOOGLE_PW }}

결과

 

 

Github Actions를 통해 매일 급식을 받아볼 수 있게 되었습니다 ㅎㅎ..