https://github.com/DPS0340/DjangoCRUDBoard
aws codedeploy(배포 자동화)에 정확한 행동을 명시하기 위해 사용
*yml을 배포에 사용되는 모듈의 단위로 생각함
실제 정의: xml이나 json과 같이 정보를 저장하거나 읽어들이는 '설정 파일'
version: 0.0 #코드 deploy 버전 임의로 정해짐.
os : linux
#배포의 CodeDeploy설치 이벤트 중 애플리케이션 개정의 어떤 파일을 인스턴스에 설치해야 하는지에 대한 정보
files :
- source : / # / -> s3의 루트 폴더를 나타냄
destination: /home/ubuntu/app/ #ec2에 있는 폴더로 복사
#'permissions' 섹션의 파일 및 디렉터리/폴더가 인스턴스에 복사된 후 이러한 파일 및 디렉터리/폴더에 특수 권한(있는 경우)이 어떻게 적용되어야 하는지를 지정
permissions:
- object: / #폴더 경로
pattern: "**" #루트에서 전체를 복사
owner: ubuntu
group: ubuntu
hooks: # 배포 수명 주기 이벤트 중 실행하는 Lambda 확인 함수를 지정
#aws codeploy가 overwriting을 지원 안해서 쉘스크립트 사용
BeforeInstall:
- location: beforeinstall.sh # 기존 폴더 코드 바뀌지 전
AfterInstall:
- location: afterinstall.sh # 기존 폴더 코드 바뀐 후
ApplicationStart:
- location : deploy.sh # 배포 코드
timeout: 60
runas: ubuntu
# This section controls the action: github actions 제어
branch_config:
wip\/.*: ~ # w ip 위쪽에 있는 브랜치는 무시(?)
master: # master에 커밋이 이루어졌을때
deploymentGroupName: djangocrudboard-group #code deploy에서
deploymentGroupConfig: #그룹 설정 변경
serviceRoleArn: arn:aws:iam::058718939924:role/codedeploy-role
deploymentConfig: #배포할때 쓰는 설정을 변경
autoRollbackConfiguration:
enabled: false #true시 이벤트 리스너가 필요하다는 오류 메세지가 떠서 false로 변경