[CI] Github Actions에서 secrets.json 생성하기

우노·2023년 7월 27일
0

트러블슈팅

목록 보기
4/5

django로 프로젝트할 때 CI/CD를 해보고 싶어서 미리 레포지토리 파서 테스트하던 중에 Github Acitons에서 제공하는 장고 .yml 파일에서 파이썬 버전만 바꿔서 실행했는데..

🚨 FileFoundError : secrets.json

🚨 FileNotFoundError: [Errno 2] No such file or directory: '/home/runner/work/django-github-action/django-github-action/secrets.json'

.gitignore 에 넣어두고 로컬에서만 쓰던 secrets.json이 있을리가 없다.

그래서 생각한 아이디어는

Github Actions로 secrets.json 생성하기

Actions secrets and variables에 secrets.json 내용 복사하고 깃헙 액션으로 secrets.json을 만들어주면 해결되지 않을까? 해서 시도해봤다.

secrets.json에 있는 값 하나하나 변수로 저장하기는 귀찮아서 Repository secrets에 json파일을 그대로 복사해서 생성해주었다.
이제 이 SECRET_JSON으로 빌드할 때 secrets.json을 만들어주는 Github Action을 만들어주면 된다. build job에 아래 코드를 추가해주었다.

file 생성 및 secrets 복사

- name: create secrets file
      run: |
        touch secrets.json		# 파일 생성
        echo "${{ secrets.SECRET_JSON }}" >> secrets.json	# 복사

python manage.py test 실행 중에 발생한 문제이므로 이 코드를 실행하는 step 위에 적어두었다.

🚨 json 파일 decode Error

🚨 json.decoder.JSONDecodeError: Expecting value: line 2 column 1 (char 1)
Error: Process completed with exit code 1.

Github Action 문제는 아니고 파이썬에서 secrets = json.loads(f.read())로 파일을 읽어오는 부분에서 문제가 생겼나보다.

여기서 두가지 선택을 할 수 있다.

  1. secrets.json 말고 .env 파일에서 secret key 가져오도록 프로젝트 코드 수정
    → {"KEY":"value"} 형식 대신 KEY=value로 단순하게 저장할 수 있다.
  2. .json 파일 읽을 수 있게 .yml 수정

나는 secret key 써둔 곳이 너무 많아서 1번 수정이 더 귀찮을 것 같았다.
그래서 굳이굳이 2번을 선택했다.. 히히

create-json으로 json 파일 생성

검색을 하다가 secrets에 저장하면서 "SECRET" : "..."에서 ""가 생략되고 plain text로 저장된다는 자료를 봤다 ! 추가로 Github Actions에서는 json 저장을 지양한다고 하는데...

- name: create-json
      id: create-json
      uses: jsdaniell/create-json@1.1.2
      with:
        name: "secrets.json"
        json: ${{ secrets.SECERT_JSON }}

위 코드로 빌드 테스트는 성공했다 ❕
#10이 삽질의 흔적이다🥺
EC2 연결하고 배포하고 RDS랑 S3 연결하고 CICD도 하고 우와 삽질의 연속이다


참고 자료 링크
어디서 무엇을 어떻게 참고했는지는 기억이 안나서 그냥 링크 다 가져왔습니다🥲

django를 Docker & Github Action으로 배포하기
github action, secrets.json 처리
[CI/CD] Github Actions로 .env / dotenv 파일 만들기
Github) Github actions에서 Secrets로 환경변수 관리하기
[Github Actions] secret에 json 넣고 싶을 때
create-json


profile
기록하는 감자

2개의 댓글

comment-user-thumbnail
2024년 4월 27일

https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions#storing-large-secrets
저는 json 첨부하기 위해서 github에서 권장하는 가이드 따라 갔어요!

1개의 답글