[iOS] 중요한 파일을 암호화 해서 GitHub에 올려보자!

온오·2024년 4월 9일
post-thumbnail

GitHub Actions를 사용해 자동화 스크립트로 빌드를 실행할 때 필요한 파일이지만 GitHub에는 올릴 수 없는 중요한 파일들을 관리하는 방법에 무엇이 있을까요?

바로 gpg파일로 암호화해서 깃허브에 올릴 수 있습니다.
GnuGP 보안 솔루션을 이용해서 오늘은 gpg 파일로 암호화, 복호화하고 CI에 key까지 적용하는 방법을 알아봅시다.

GnuGP 설치하기

저는 brew를 사용해서 GnuGP를 설치했습니다.

brew install gnupg2

Gnupg2가 설치 됐다면, 이제 암호화를 시작해봅시다!

암호화 하기

암호화를 하는 방법은 간단합니다.

gpg -c {암호화할 파일의 경로}

위 코드를 실행하면,

터미널에 다음과 같은 화면이 표시됩니다.

이 화면에서 Passphrase, Repeat에 비밀번호를 설정해주고 Enter를 누르면 됩니다.
(추후에 비밀번호를 사용하게 되니, 설정한 비밀번호를 꼭 기록해주세요!)

비밀번호를 설정해주면 바로 암호화가 되면서

File '{암호화 된 파일이름.gpg}' exists. Overwrite? (y/N)

이런 문구가 뜨게 되는데 여기서 y를 입력하면,
gpg 파일이 생성되면서 암호화에 성공합니다.


비밀번호를 어떻게 설정해야할지 모르겠다면?

openssl을 사용해보세요.

openssl rand -base64 32

을 터미널에 입력해주면 바로 영어,문자들이 랜덤하게 나열된게 나오게 됩니다.
그걸 비밀번호로 사용해주시면 됩니다.


GitHub Actions에서 사용하기

GitHub Repo에 비밀번호를 Secrets으로 저장하기

  1. Settings 페이지로 이동합니다.

  2. Settings 페이지 안에 Secrets and variables 옵션에 들어갑니다.

  3. Repository secrets에 위에서 설정했던 비밀번호를 [New repository secret]버튼을 눌러 저장합니다.

위의 순서대로 저장을 해주면

이런 식으로 저장이 됩니다.

스크립트에서 사용하기 (예시)

  1. env를 추가합니다.
env:
  ENCRYPTED_GPLIST_FILE_PATH: ${{ '.gpg파일 경로' }}
  DECRYPTED_GPLIST_FILE_PATH: ${{ '복호화할 파일 경로' }}
  GPLIST_PW: ${{ secrets.GOOGLE_SERVICE_ENCRYPTO_PW }}

  1. gpg파일을 복호화해 저장하는 스크립트를 작성합니다.
- name: configure fileName
  run: |
    gpg -d -o "$ENCRYPTED_GPLIST_FILE_PATH" --pinentry-mode=loopback --passphrase "GPLIST_PW" "DECRYPTED_GPLIST_FILE_PATH"

이렇게 작성하고 브랜치에 Push하면 잘 적용되는 모습을 볼 수 있습니다.

복호화 하는 방법

gpg 파일로 암호화 해서 깃허브에 올려서 사용할 때,
클론을 받게 되면 gpg파일만 올라가 있어서 프로젝트 빌드가 진행되지 않을 때 gpg 파일을 복호화하는 방법입니다.

gpg -d -o {복호화한 파일 생성 경로} --pinentry-mode=loopback --passphrase {저장한 비밀번호} {.gpg파일 경로}

이렇게 GitHub에 중요한 파일을 올릴 때 gpg파일로 암호화해서 올리면 됩니다.

중요한 파일이 있을때 사용해보시면 좋을거 같아요!!

1개의 댓글