aws code pipeline 으로 cicd 적용하기

김진욱·2024년 1월 25일

gitlab 과 aws code pipeline mirroring 으로 자동 배포를 진행 해봅시다

1. aws code commit repository 생성

프로젝트 repository 이며 git 과 같은 개념입니다 우리는 이 repository 에 gitlab을 미러링 하여 직접 붙어서 사용하지 않고 gitlab으로만 cicd를 진행 할 예정입니다
  • gitlab 과 미러링 될 repository를 생성해줍니다

  • iam user 생성

  • 생성한 user에 codecommit 권한을 부여해줍니다

  • 생성한 user에 자격증명 생성

2. Gitlab 설정

  • gitlab mirroring 설정
  • code commit에서 생성한 repository mirroring
    Git repository URL : code commit에서 생성한 repository url
    Username : iam user
    Password : 자격 증명시 발급 된 password
  • result

3. code build 설정

배포가 될 프로젝트의 코드를 build 해주는 영역입니다.
  • code build 생성
    소스 공급자에서 code commit 에서 생성 했던 repository 선택
  • buildspec.yml 은 build 시 사용될 옵션을 정의하는 파일이며 기본값 사용
  • 빌드 파일이 저장 될 저장소를 설정

4. code deploy 설정

appspec.yml 파일을 바탕으로 배포 옵션을 설정합니다.

  • code deploy 생성 전 deploy에 사용 될 iam role 을 만들어 줍니다

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "autoscaling:CompleteLifecycleAction",
                "autoscaling:DeleteLifecycleHook",
                "autoscaling:DescribeAutoScalingGroups",
                "autoscaling:DescribeLifecycleHooks",
                "autoscaling:PutLifecycleHook",
                "autoscaling:RecordLifecycleActionHeartbeat",
                "autoscaling:CreateAutoScalingGroup",
                "autoscaling:CreateOrUpdateTags",
                "autoscaling:UpdateAutoScalingGroup",
                "autoscaling:EnableMetricsCollection",
                "autoscaling:DescribePolicies",
                "autoscaling:DescribeScheduledActions",
                "autoscaling:DescribeNotificationConfigurations",
                "autoscaling:SuspendProcesses",
                "autoscaling:ResumeProcesses",
                "autoscaling:AttachLoadBalancers",
                "autoscaling:AttachLoadBalancerTargetGroups",
                "autoscaling:PutScalingPolicy",
                "autoscaling:PutScheduledUpdateGroupAction",
                "autoscaling:PutNotificationConfiguration",
                "autoscaling:PutWarmPool",
                "autoscaling:DescribeScalingActivities",
                "autoscaling:DeleteAutoScalingGroup",
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceStatus",
                "ec2:TerminateInstances",
                "tag:GetResources",
                "sns:Publish",
                "cloudwatch:DescribeAlarms",
                "cloudwatch:PutMetricAlarm",
                "elasticloadbalancing:DescribeLoadBalancerAttributes",
                "elasticloadbalancing:DescribeTargetGroupAttributes",
                "elasticloadbalancing:DescribeLoadBalancers",
                "elasticloadbalancing:DescribeInstanceHealth",
                "elasticloadbalancing:RegisterInstancesWithLoadBalancer",
                "elasticloadbalancing:DeregisterInstancesFromLoadBalancer",
                "elasticloadbalancing:DescribeTargetGroups",
                "elasticloadbalancing:DescribeTargetHealth",
                "elasticloadbalancing:RegisterTargets",
                "elasticloadbalancing:DeregisterTargets"
            ],
            "Resource": "*"
        }
    ]
}
  • code deploy application 생성

  • 생성 된 code deploy application 에 배포 그룹 설정

  • 위에서 만들었던 역할 사용

  • 배포 대상이 될 EC2 설정

5. code pipeline 설정

  • code pipeline 생성
    code commit에서 생성한 repository 와 배포 대상이 될 브랜치를 선택

  • code build에서 생성한 build project 선택

  • code deploy에서 생성한 배포 그룹 선택

이상으로 [ gitlab -> aws codepipeline -> ec2 ] cicd 설정을 마쳤습니다.

profile
2021.12~ 공부의 기록

0개의 댓글