일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- AWS 프로젝트
- AWS 프로젝트 올리기
- AWS 키페어
- spring async
- ssh
- spring multi thread
- 스트림 예제
- 비주얼 스튜디오 코드
- Optional 사용법
- vscode
- Visual Studio Code
- 창업 마인드
- CI/CD
- optional
- github CI/CD
- dockerfile
- 라이프해킹스쿨
- java Optional
- @async
- java stream
- AWS ssh
- AWS EC2
- 마인드
- 창업형인간되기
- AWS
- java null 처리
- 자바 스트림
- AWS S3
- 창업형인간
- 창업
- Today
- Total
Wookim
github action으로 CD하기 (5) 본문
이번 시간에는 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 |