Wookim

github action으로 CD하기 (5) 본문

CI_CD

github action으로 CD하기 (5)

개발자인 경우 2020. 12. 23. 16:36

이번 시간에는 github에 AWS S3 접속정보를 추가해보자

 

1. AWS S3 생성

2. AWS IAM github 계정 추가

3. github에 AWS 접속 정보 추가

 

github에 AWS 접속정보들을 저장 해둘 것인데,

yml이나 파일에 접속정보를 그대로 저장하고 레포지토리에 저장되면 아주 아주 위험하다

 

만약 해당 레포지토리가 공개되어 있다면 

내 AWS 접속정보를 전부 공개하는 것이나 마찬가지이기에

중요한 정보는 파일에 저장하고 이를 레포지토리에 올리면 안된다.

 

그러면 어떻게 관리해야 하는가?


3. github에 AWS 접속 정보 추가

 

자신의 github 레포지토리로 이동한다.

우측의 settings를 클릭하자.

 

위와 같은 화면이 나오면 좌측의 Secrets 클릭

우측의 New repositroy secret 클릭


잠깐!

여기서 추가할 scret 종류는 3가지이다.

1. KEY ID

2. SECRET ACCESS KEY

3. BUCKET NAME

 

1번은 ID라 생각하면되고 

2번은 ID에 대한 비밀번호라 생각하면 된다.

3번은 AWS S3의 버킷이름인데 어떤 글에서 버킷 이름은 공개하지 않는게 좋다는 글을 읽었다.

그래서 추가했다.

 

자 그럼 추가해 보자!

 

아래 화면에 Name 부분에 추가할 이름은 아래와 같이 작성한다. (괄호는 복사하지 마세요)

 

1. AWS_IAM_MANAGER_KEY_ID (key id)

2. AWS_IAM_MANAGER_SECRET_ACCESS_KEY (scret access key)

3. AWS_PRODUCTION_BUCKET_NAME (bucket name)

 

value값이 진짜 알맹이니까 해당 값은 엑셀파일에서 복사 붙히기한다.

 

 

1. AWS_IAM_MANAGER_KEY_ID

2. AWS_IAM_MANAGER_SECRET_ACCESS_KEY

 

3. AWS_PRODUCTION_BUCKET_NAME

만들어진 secret들의 모습!

 


 

 

 

지난 시간에 github action의 yml 파일의 내용을 살펴보자.

    ...

    # 소스 파일 압축
    - name: zip artifacts
      run: zip -r ./artifacts/build.zip ./app/* appspec.yml
    
    # AWS S3에 압축파일을 전달하는 설정 및 명령어
    - name: deploy to s3
      uses: jakejarvis/s3-sync-action@master
      with:
        args: --acl public-read --follow-symlinks --delete
      env:
        AWS_S3_BUCKET: ${{secrets.AWS_PRODUCTION_BUCKET_NAME}}
        AWS_ACCESS_KEY_ID: ${{ secrets.AWS_IAM_MANAGER_KEY_ID }}
        AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_IAM_MANAGER_SECRET_ACCESS_KEY }}
        AWS_REGION: ap-northeast-2
        SOURCE_DIR: './artifacts'
        DEST_DIR: 'backend/'

위 코드에서 AWS_S3_BUCKET: ${{secrets.AWS_PRODUCTION_BUCKET_NAME}} 부분을 보자

이 부분은 민감한 정보를 파일에 그대로 적는것이 아니라

위에서 작업한 secret를 이용해 작성한 것이다.

 

이렇게 하면 보안 문제도 해결되기 때문에 위처럼 작성한다.

${{secrets.생성한_시크릿_이름}}

이런식으로 작성한다.

 

새부 옵션을 보면 

source_dir은 github에서 보낼 디렉토리이다.

dest_dir은 AWS S3에 목적지 디렉토리이다.

필자 처럼 backend/ 디렉토리로 지정했다면, 해당 디렉토리가

S3에 존재해야 한다. 

없다면 S3에서 폴더를 생성하면 된다.

 

새로 만든 폴더에 아무것도 없다.

 

 

 

자 이제 github에게 aws S3에 접속 정보와 권한을 다 주었기 때문에

소스를 작업하고 github에 push하게되면 

github action -> 테스트 > 압축 > AWS S3에 배포

하게 된다.

 

github에 소스를 변경 한후 push해서 zip 파일이 해당 폴더 경로에 저장되면 작업은 성공!

 

github actions가 정상적으로 실행됬다.

AWS S3에 해당 ZIP파일이 제대로 배달이 됬다!!

감격 ㅠㅠ

 

이제 github actions를 이용한 CI/CD 작업을 마쳤다.

 

'CI_CD' 카테고리의 다른 글

github action으로 CD하기 (4)  (0) 2020.12.23
github action으로 CD하기 (3)  (0) 2020.12.23
github action으로 CD하기 (2)  (2) 2020.12.14
AWS와 github을 이용한 CI/CD 적용하기 (1)  (0) 2020.12.14
Comments