version: 0.2
phases:
build:
commands:
- echo Build Starting on `date`
- chmod +x ./gradlew
- ./gradlew build
post_build:
commands:
- echo $(basename ./build/libs/*.jar)
- pwd
artifacts:
files:
- build/libs/*.jar
discard-paths: yes
cache:
paths:
- '/root/.gradle/caches/**/*'
version : 사용 중인 빌드 사양 표준의 버전을 나타냅니다.
phases.build.commands: 빌드 시 수행되는 명령어
phases.post_build.commands: 빌드 후 수행되는 명령어
artifacts: 빌드 결과 파일
- discard-paths : yes값을 줘서 해당 빌드결과 파일이 s3로 업로드 될 때, [files]에 기술된 path는 부시되고 파일명으로만 업로드 될 수 있도록합니다.
cache.paths : 파일을 s3 cache에 등록합니다.
CodeDeploy 서비스는 appspec.yml 파일을 읽어서 그대로 실행하는 것입니다.
start : CodeDeploy 에이전트를 자동으로 실행하고 인스턴스 배포가 시작됩니다.
ApplicationStop : 이전 프로그램을 중지하는 스크랩트를 실행하는 단계입니다.
DownloadBundle : 이 이벤트 동안 CodeDeploy에이전트는 새 버전을 인스턴스로 가져옵니다.(CodeBuild에서 패키징된 zip파일입니다.)
BeforeInstall : 이 이벤트를 통해 구버전의 설치 구성을 저장하고 파일을 복호화하고, 현재 버전의 백업을 만들 수 있습니다.
Install : DownloadBundle을 통해 가져온 Bundle 압축을 해제하고 appspec.yml에 정의된 대로 파일을 지정한 경로로 복사합니다.
AfterInstall : 이 이벤트를 통해 프로그램이 시작되기 전에 프로그램의 구성을 변경할 수 있습니다.
Application Start : 이름에서 알 수 있듯이 어플리케이션을 구 버전 대신 신 버전으로 설정합니다.
ValidateService : 이 이벤트를 통해 배포가 성공했는지 확인할 수 있는 검증 로직을 실행할 수 있습니다.
End : lifecycle의 마지막 이벤트로, 인스턴스의 배포 성공유무를 중앙 서비스에 알립니다.
version: 0.0
os: linux
files:
- source: /index.html
destination: /var/www/html/
hooks:
BeforeInstall:
- location: scripts/install_dependencies.sh
timeout: 300
runas: root
AfterInstall:
- location: scripts/change_permissions.sh
timeout: 300
runas: root
ApplicationStart:
- location: scripts/start_server.sh
- location: scripts/create_test_db.sh
timeout: 300
runas: root
ApplicationStop:
- location: scripts/stop_server.sh
timeout: 300
runas: root
version: 0.0 //버전
os: linux //운영체재
files:
- source: /index.html
destination: /var/www/html
hooks:
deployment-lifecycle-event-name:
- location: script-location
timeout: timeout-in-seconds
runas: user-name
https://yoo11052.tistory.com/113
https://hoyoung1.github.io/posts/aws/2021-03-26-hello-codedeploy
https://freezboi.tistory.com/81
https://twofootdog.tistory.com/37