일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- EKS
- Fargate
- SPF
- K8S
- awscli
- SMTP
- Lambda
- aws ses
- gochannel
- go
- DKIM
- SAA-CO2
- docker
- aws
- Fluentbit
- goroutine
- Datadog
- Kubernetes
- serverless
- 메일 인증 프로토콜
- 도커
- dMarc
- Java
- Certified Solutions Architect
- SAA-CO3
- SAA
- JVM
- BitBucket
- Ingress
- Today
- Total
DevOps Tasks
Simple 스크립트로 CI/CD Pipeline 최적화하기 본문
Deploy 중복 방지를 통해 CICD Pipeline 최적화 적용
Time Limit , 사용자의 Stop Action 등 Bitbucket Pipeline 상에서 배포가 중지되어도
AWS CodeDeploy 상에선 배포가 아직 돌고 있을 때가 빈번하게 발생한다.
CodeDeploy 중지를 시켜줘야 다시 Bitbucket Pipeline을 돌릴 수 있게 된다.
의미 없는 작업은 너무 귀찮다!!
간단한 스크립트로 자동화한다.
Bitbucket Pipeline 상에서 이미 돌고 있는 배포가 있기 때문에 실패했다는 메시지가 나온다.
AWS CodeDeploy를 살펴보면 아직 진행 중인 Deploy가 존재한다.
CodeDeploy에서 배포가 중지되지 않은 상태에서 다시 파이프라인을 실행시킬 때 해당 오류가 발생한다.
위 에러가 발생할 때마다 직접 AWS 콘솔에 접속해 롤백시켜줘야 했다.
이 귀찮음의 요소를 스크립트를 통해 CodeDeploy의 Status를 확인 후 중지, 롤백 후 재배포 과정을 자동화한다.
직접 콘솔에 접속해서 롤백해 주는 대신 pipeline.yml 에 Deploy Step에서 AWS CLI를 통해 현재 진행 중인
CodeDeploy가 있는지 확인 후 있다면 중지 후 롤백해 주고 없다면 해당 step을 skip 후에 배포를 진행하는 방식이다.
진행 중인 CodeDeploy Deploy ID 호출
$ aws deploy list-deployments \
--application-name <CODEDEPLOY_APPLICATION_NAME> \
--deployment-group-name <CODEDEPLOY_GROUP_NAME> \
--include-only-statuses InProgress
deploy 중지 명령 시 deploy id 만 필요하므로 따옴표도 같이 추출되므로 jq -r 옵션으로 따옴표를 제거한다.
자동 롤백
-auto-rollback-enabled
-no-auto-rollback-enabled
중지하는 시간이 필요하므로 sleep 5
- sleep 하지 않으면 본 배포 시 already has an active Deployment Error
https://docs.aws.amazon.com/cli/latest/reference/deploy/stop-deployment.html
IAM 권한 추가
- Bitbucket System 계정 role에 codedeployment 권한이 추가되어야 한다.
- 권한이 없으면 아래 에러가 뜬다.
because no identity-based policy allows the codedeploy:StopDeployment action
Resource ARN 은 Custom 하고 해당 스크립트를 돌리기 위해선 최소한 저 2 권한이 필요하다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"codedeploy:CreateDeployment",
"codedeploy:StopDeployment"
],
"Resource": "*"
}
]
}
오늘도 이렇게 귀찮음 1 스택 해결..
'DevOps' 카테고리의 다른 글
메일 인증 프로토콜로 제로 스팸 메일 만들기 - SPF Part (0) | 2024.02.04 |
---|---|
[JAVA ] GC (Garbage Collection) Master (0) | 2024.01.31 |
[JAVA ] JVM (Java Virtual Machine) Master (1) | 2024.01.28 |
Obsidian 알아보기 (0) | 2024.01.20 |
Git 이란? (0) | 2024.01.06 |