반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

DevOps Tasks

Simple 스크립트로 CI/CD Pipeline 최적화하기 본문

DevOps

Simple 스크립트로 CI/CD Pipeline 최적화하기

데밥스 2024. 1. 6. 12:46
728x90
반응형

 

Deploy 중복 방지를 통해 CICD Pipeline 최적화 적용

 

Time Limit , 사용자의 Stop Action 등 Bitbucket Pipeline 상에서 배포가 중지되어도

AWS CodeDeploy 상에선 배포가 아직 돌고 있을 때가 빈번하게 발생한다.

CodeDeploy 중지를 시켜줘야 다시 Bitbucket Pipeline을 돌릴 수 있게 된다.

의미 없는 작업은 너무 귀찮다!!

간단한 스크립트로 자동화한다.

728x90

 

 

Bitbucket Pipeline Error

 

Bitbucket Pipeline 상에서 이미 돌고 있는 배포가 있기 때문에 실패했다는 메시지가 나온다.

 

AWS CodeDeploy를 살펴보면 아직 진행 중인 Deploy가 존재한다.

 

AWS CodeDeploy

 

CodeDeploy에서 배포가 중지되지 않은 상태에서 다시 파이프라인을 실행시킬 때 해당 오류가 발생한다.

 

위 에러가 발생할 때마다 직접 AWS 콘솔에 접속해 롤백시켜줘야 했다.

반응형

이 귀찮음의 요소를 스크립트를 통해 CodeDeploy의 Status를 확인 후 중지, 롤백 후 재배포 과정을 자동화한다.

 

직접 콘솔에 접속해서 롤백해 주는 대신 pipeline.yml 에 Deploy Step에서 AWS CLI를 통해 현재 진행 중인

CodeDeploy가 있는지 확인 후 있다면 중지 후 롤백해 주고 없다면 해당 step을 skip 후에 배포를 진행하는 방식이다.

 

자동화 Script

 

진행 중인 CodeDeploy Deploy ID 호출

$ aws deploy list-deployments \
--application-name <CODEDEPLOY_APPLICATION_NAME> \
--deployment-group-name <CODEDEPLOY_GROUP_NAME> \
--include-only-statuses InProgress

 

Deployment ID

 

 

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

 

stop-deployment — AWS CLI 1.32.14 Command Reference

Note: You are viewing the documentation for an older major version of the AWS CLI (version 1). AWS CLI version 2, the latest major version of AWS CLI, is now stable and recommended for general use. To view this page for the AWS CLI version 2, click here. F

docs.aws.amazon.com

 


 

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": "*"
        }
    ]
}

 

 

 

AWS CodeDeploy is not authorized to perform: codedeploy:CreateDeployment

I'm trying to do CI/CD with aws CodeDeployand and GitHub Actions from , following this tutorial. but the following error appears when trying to create the deploy: An error occurred (AccessDeniedExc...

stackoverflow.com

 

오늘도 이렇게 귀찮음 1 스택 해결..

728x90
반응형

'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