REACT

AWS- appspec.yml root

user-anonymous 2020. 9. 24. 23:14
728x90

우리 서비스는 Code pipeline을 통해 배포를 한다

 

pipeline의 단계는 총 소스-빌드-배포 3가지 구성으로 되어있다. 

소스트리는 깃허브와 연결하여 커밋할시에 바로 변경 릴리즈를 감지하여 소스로 간다음 그다음 빌드로 넘어가게 된다. 이때 우린 build중에 환경을 구축하기 위해 프로젝트에 buildspec.yml 파일을 작성해야한다. 

 

version: 0.2

phases:
  install:
    runtime-versions:
      java: openjdk8
  build:
    commands:
      - echo [PHASE] Entered the build phase...
      - gradle bootjar
  post_build:
    commands:
      - echo [PHASE] Entered the post_build phase...
      - echo $(basename ./build/libs/*.jar)
      - mv deploy/dev/appspec.yml appspec.yml
      - ls -al
      - chmod +x scripts/deploy_dev.sh
artifacts:
  files:
    - appspec.yml
    - build/libs/*.jar
    - scripts/deploy_dev.sh

 

이 항목에선 CodeBuild가 빌드를 실행하는데 빌드 명력 및 관련 설정의 모음을 제공해준 yml형식의 파일이다.

이때 artifacts.files에 appspec.yml은 바로 루트로 써줘야한다. 우린 각 브랜치마다 다른 환경으로 구성되어있어, appspec.yml파일의 내용이 달랐다. 그리하여 buildspec_dev.yml 파일엔 deploy/dev/appspec.yml 이런식으로 가리키게해줬지만 appspec.yml파일은 무조건 루트로 들어가야 된다는 것이였다. 그리하여 post_build commands 부분에

mv deploy/dev/appspec.yml appspec.yml 처럼 deploy폴더안에있는 appspec.yml을 루트쪽으로 이동시켜준다음 artifacts.files에 appspec.yml을 써주었다.

 

 

 

ERROR 

 "The deployment failed because a specified file already exists at this location"
이미 기존 위치에 파일이 존재할경우 배포가 실패된다.

 

물론 쉘스크립트 파일에 기존 파일을 제거해주는 방법도 있지만, 경로를 /home/ec2-user/build/ 경로에 넣어주면 된다. 

 

 

"

 

 

 

 

 

 

728x90
반응형