Github Secret 으로 yml 파일 관리하기

김선호·2023년 2월 21일
3

Git, Github

목록 보기
2/2

들어가며

CI 과정에서 통합 테스트 시, yml 파일 또는 env 파일 등 외부 환경변수가 필요한 경우가 있다.

이 때 환경변수에 민감한 정보(유출되면 안 되는 비밀번호 등)를 Github에 올리게 되면 피똥을 쌀 수도 있으므로, 이를 암호화 해서 관리하는 방법에 대해서 알아보자. 우리팀은 github actions를 이용해 CI를 진행하고 있으므로, 이번 시간에는 github sercret을 이용해 yml 파일을 관리하는 방법을 알아보자. 천천히 따라오시라.


본문

1. github actions workflow 세팅


verify-test-cases.yml

# This workflow will build a Java project with Gradle
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle

name: Verify Test Cases with Gradle

on:
  pull_request:
    branches: [ main ]
    paths:
      - '**.java'
      - '**/build.gradle*'
      - '**/settings.gradle*'
      - '**/application*.yml'
      - '**.sql'

jobs:
  build:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'corretto'

      - name: Set YML
        run: |
          mkdir -p src/main/resources
          echo "${{ secrets.APPLICATION_YML }}" | base64 --decode > src/main/resources/application.yml
          find src

      - name: Build with Gradle
        run: ./gradlew build

      - name: Publish Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          files: '**/test-results/**/*.xml'

workflow 를 위처럼 세팅하자. 요약하자면,

main 브랜치에 PR이 생성되었을 때,

  1. JDK 를 설치하고,
  2. YML 파일을 github secret에서 읽어와서,
  3. 빌드하고(테스트 포함)
  4. 테스트 결과를 생성한다.

우리가 눈여겨 볼 것은 2.YML 파일을 github secret에서 읽어와서 이 부분이다. 위의 verify-test-cases.yml 파일에서 "${{ secrets.APPLICATION_YML }}" 를 기억하라.

github secret에 이름을 APPLICATION_YML 로 해서 우리의 application.yml 을 등록할 것이다.


2. Base64 로 인코딩하자

application.yml 파일을 secret 에 그대로 등록하면 에러가 난다. Base64로 인코딩해서 등록해야한다. 인코딩하기 위해 아래 링크로 들어가자

Base64로 인코딩 - 온라인 Base64로 인코더

그리고 사진과 같은 곳에 yml 파일을 복사 붙여넣기 해서 입력하고 Base64로 인코딩! 하면

이런 결과가 나타난다. 이제 이 텍스트를 복사해서 secret에 등록할 것이다.


3. Github Secret 에 인코딩된 텍스트 등록하기

Github 리포지토리 → Settings → Secrets and variables → Actions 로 이동하자.

New repository secret 을 클릭해서 secret을 등록하자.

정상적으로 등록된 걸 확인했으면 끝이다. github actions에서 정상적으로 동작하는지 확인하면 된다.


마치며

yml 파일을 secret 으로 관리하는 것이 좋은가에 대해서는 여전히 의문이 남는다. yml 내용이 변경되기라도 한다면 매번 이러한 작업을 해야하기 때문이다. workflow 에서 클라우드에 있는 yml 파일을 긁어오는 방법으로 변경하든가, 환경변수를 관리하는 파일만 secret으로 관리하면 유지보수가 훨씬 쉬울 것이다. 다음 스프린트에서는 해당 부분을 적용하기로 하고, 본 포스팅은 여기서 마치도록 하겠다. 그럼 이만!

profile
Every Run, Learn Counts.

0개의 댓글