buildspec, appspec.yml

Vorhandenheit ·2022년 3월 1일
0

AWS

목록 보기
7/10

buildspec.yml

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에 등록합니다.

appspec.yml

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

(1)

version: 0.0 //버전
os: linux //운영체재
files:
  - source: /index.html
    destination: /var/www/html
  • source : 배포할 파일
  • destination : 위 경로에 배포

(2)

hooks:
   deployment-lifecycle-event-name:
     - location: script-location
       timeout: timeout-in-seconds
       runas: user-name
  • location : 스크립트 파일으 ㅣ경로
  • timeout : 기본값이 한시간(3600s)이고 해당 스크립트 실행시간을 말합니다. 시간을 넘으면 실패로(fail)로 간주합니다.
  • runas : 해당 스크립트를 실행할 사용자를 설정합니다.

출처

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

profile
읽고 기록하고 고민하고 사용하고 개발하자!

0개의 댓글