반응형
AWS 설정
- IAM 역할 추가
- CodeDeploy
- AWSCodeDeployRole
- EC2Deploy
- AmazonEC2RoleforAWSCodeDeploy
- CouldWatchFullAccess
- AWSCodeDeployFullAccess
- AWSCodeDeployRole
- CodeDeploy는 CodeDeploy 설정에 역할에 들어가는 것이고 EC2Deploy인 경우는 EC2 인스턴스에 들어가는 역할이다.
- CodeDeploy
- CodeBuild 설정
- 아티팩트 설정
- secondary-artifacts가 작성될 시에 아티팩트 추가 기능을 사용하여 buildspec.yml에 작성된 아티팩트 키와 맵핑 시켜야 한다.
- 아티팩트 설정
- CodeDeploy 설정
- appspec.yml은 배포된 압축 파일을 풀었을때 root에 있어야 한다.
- root : C:\ProgramData\Amazon\CodeDeploy\d1f6949f-bb5e-45b1-b60e-eeaff407a9f0\d-59GUNXLYA\deployment-archive\ 경로로 배포가 된다.
- 배포될 EC2 인스턴스에 IAM 역할 추가(EC2Deploy)
- 배포될 EC2 인스턴스에 CodeDeloyAgent 설치 :
- powershell.exe -Command Get-Service -Name codedeployagent 명령어로 agent 가 작동 중인지 확인한다.
- CodeDeploy 실패 경우
- views events => ApplicationStop 에서 아무런 오류코드 없이 실패하는 경우
- ec2 인스턴스를 재부팅 한다.
- 'CodeDeploy agent did not find an AppSpec file within the unpacked revision directory at revision-relative path “appspec.yml” ' 에러가 나오는 경우
- https://stackoverflow.com/questions/53501365/codedeploy-agent-did-not-find-an-appspec-file-within-the-unpacked-revision-direc
- S3 버킷에 올라간 zip 파일의 root에 appspec.yml 파일 확인을 한다.
- ec2 인스턴스를 재부팅
- views events => ApplicationStop 에서 아무런 오류코드 없이 실패하는 경우
- CodePipeline 설정
※ yml 설정 파일 작성시 주의 사항
- 띄어쓰기로 계층 표현을 함으로써 작성시에 유의할 것
- 문단의 종료는 /r/n가 아닌 리눅스 방식의 /n이 들어가야한다. /r/n이 들어가는 경우 aws에서 파싱을 못하고 에러 뱉음.
- yaml은 사용 안했으면 좋겠음.
buildspec.yml
예시)
https://docs.microsoft.com/en-us/dotnet/core/rid-catalog
version: 0.2 phases: install: runtime-versions: dotnet: 2.2 build: commands: - dotnet restore server/TestProjectServer/TestProjectServer.csproj - dotnet build server/TestProjectServer/TestProjectServer.csproj - dotnet publish server/TestProjectServer/TestProjectServer.csproj -o ../../gameWebServer/bin -r win-x64 - dotnet restore server/TestInterServer/TestInterServer.csproj - dotnet build server/TestInterServer/TestInterServer.csproj - dotnet publish server/TestInterServer/TestInterServer.csproj -o ../../interServer/bin -r win-x64 post_build: commands: - cp server/Scripts/Deploy.bat gameWebServer/ - cp server/Scripts/config.txt gameWebServer/ - cp server/Scripts/Deploy.bat interServer/ - cp server/Scripts/config.txt interServer/ - cp server/TestProjectServer/appspec.yml gameWebServer/ - cp server/TestProjectServer/appspec.yml interServer/ artifacts: files: - '**/*' - 'Deploy.bat' name: bin_build secondary-artifacts: gamewebserver: files: - '**/*' name: gamewebserver_build-$(date +%Y-%m-%d) base-directory: 'gameWebServer' interserver: files: - '**/*' name: interServer_build-$(date +%Y-%m-%d) base-directory: 'interServer' ※ buildspec.yml 파일은 root 경로에 두는 것을 권장하나 아무대나 둬도 상관은 없다. aws에서 경로 설정이 가능 |
appspec.yml
예시)
version: 0.0 os: windows files: - source: Server/ destination: C:\\Users\\Administrator\\Desktop\\deploy hooks: BeforeInstall: AfterInstall: ApplicationStart: - location: ./Deploy.bat timeout: 300 ValidateService: - location: ./AfterService.bat timeout: 300 ※ Bat 파일 실행시 경로 설정을 다르게 하기 위해 솔루션이 아닌 프로젝트 상의 경로에 둔다. |
배포시 실행되는 스크립트
AfterService.bat
0.00MB
config.json
0.00MB
Deploy.bat
0.00MB
- appspec.yml에 적힌 hook 이벤트 중 ApplicationStart 실행시에 실행되는 프로그램
- 작성된 기능
- 배포된 파일이 실제 서버 폴더로 복사 되기 전 현재 서버 폴더 백업
- 시작한 후 배포된 파일을 실제 서버 경로에 복사
- 서버 프로그램 시작
- config.txt에서 설정
- bat 파일 실행시에 background로 어플리케이션이 실행이 되는데 변경해야함.
반응형
'개발관련 > ETC..' 카테고리의 다른 글
Linux에 서비스 등록 (0) | 2023.01.10 |
---|---|
Apple revoke token 처리 (0) | 2022.07.09 |
객체 지향 설계의 원칙>SOLID (0) | 2019.05.08 |
javascript> Drag & Drop 파일 읽기 (0) | 2018.12.05 |
C# ms referencesource 소스 (0) | 2018.03.29 |