inblog logo
|
tubeblog

    Git Action으로 CI/CD 구성하기

    Git Action으로 CI/CD 구성하기
    May 20, 2023
    Git Action으로 CI/CD 구성하기
    Contents
    code depoly 설치하기EC2 IAM 설정EC2에 권한 부여 하기code deploy 설정IAM 사용자 추가github에서 s3로 올리기s3에서 리액트 애플리케이션 웹서버로 배포하기트러블 슈팅
    code depoly 설치하기EC2 IAM 설정EC2에 권한 부여 하기code deploy 설정IAM 사용자 추가Access Key Secret Key생성된 유저에 정책 연결Github 설정github에서 s3로 올리기S3 생성EC2 등록.github/workflows/deploy.ymls3에서 리액트 애플리케이션 웹서버로 배포하기appspec.ymldeploy.sh트러블 슈팅 Missing credentials - please check if this instance was started with an IAM instance profile

    code depoly 설치하기

    • code depoly 다운받기
    sudo apt update sudo apt install ruby-full sudo apt install wget wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install chmod +x ./install
     
    • Ubuntu 20.04에서 최신 버전의 CodeDeploy 에이전트를 설치하려면 다음을 수행합니다.
    sudo ./install auto > /tmp/logfile
    notion image
     
     

    EC2 IAM 설정

    notion image
    notion image
    notion image
    notion image
    notion image
    notion image
     

    EC2에 권한 부여 하기

    notion image
     
    notion image
     
    CodeDeploy가 S3에서 파일을 받아서 EC2에 올려야 하기 때문에 해당 작업을 위한 권한 설정이 필요하다.
    notion image
    notion image
    notion image
     
    notion image
    notion image
     

    code deploy 설정

    notion image
     
    notion image
     
    notion image
     
    notion image
     
    notion image
    notion image
    notion image
     
    notion image
    CodeDeploy에서 배포 구성 작업 - AWS CodeDeploy
    CodeDeploy에서 배포 구성 작업 방식을 알아봅니다.
    CodeDeploy에서 배포 구성 작업 - AWS CodeDeploy
    https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/deployment-configurations.html#deployment-configuration-server
     
    notion image
     
     

    IAM 사용자 추가

    • S3에 푸시할수 있는 권한을 가진 사용자를 생성한다.
    notion image
     
    notion image
     
    notion image
    notion image
     
    notion image
     

    Access Key Secret Key

    notion image
    notion image
     
     
    notion image
    notion image
     
     
    notion image
     

    생성된 유저에 정책 연결

    • s3FullAccess 권한과 CodeDeployFullAccess 권한이 필요하다.
    • 없을 시 권한 추가 - 직접 정책 연결 - 찾아서 추가
    notion image
     

    Github 설정

    notion image
     
    notion image
     
    • 세개 전부 환경변수로 설정 완료
      • AWS_ACCESS_KEY: access-key
      • AWS_SECRET_ACCESS_KEY: secret-key
      • AWS_REGION: ap-northeast-2
    notion image
     

    github에서 s3로 올리기

    S3 생성

     

    EC2 등록

    sudo apt update sudo apt install awscli
    aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: ap-northeast-2 Default output format [None]:
     
    1. 깃헙의 업데이트 내용을 s3로 올리는 명령어 작성
    1. s3에 올린 내용을 CodeDeploy를 통해 EC2로 업로드 하는 명령어 작성
     

    .github/workflows/deploy.yml

    name: Deploy # Workflow 이름 on: # Event 감지 push: branches: - main # 해당 브랜치의 푸쉬가 일어날 때 CI/CD를 진행하겠다는 뜻 env: S3_BUCKET_NAME: s3-cuping-fe # S3 버킷 이름 CODE_DEPLOY_APPLICATION_NAME: cuping-cicd-fe # codedeploy에서 만든 어플리케이션 이름 CODE_DEPLOY_DEPLOYMENT_GROUP_NAME: dg-cuping-fe # codedeploy 만든 배포 그룹 세부 정보 jobs: build: runs-on: ubuntu-22.04 steps: - name: Checkout source code. uses: actions/checkout@v2 - name: Check Node v # 노드 버전 확인 run: node -v - name: Install Dependencies run: yarn - name: Build # 빌드 run: yarn build env: CI: "" - name: zip create # zip 파일을 만듭니다(파일명은 자유, 대신 아래 workflow에 적을 파일명과 동일하게 맞춰주세요). run: zip -qq -r ./dist.zip . shell: bash - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ secrets.AWS_REGION }} - name: Upload to S3 # Upload build file to S3 env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} run: | aws s3 cp --region ap-northeast-2 ./dist.zip s3://${{env.S3_BUCKET_NAME}}/dist.zip - name: Deploy # Deploy to EC2 run: aws deploy create-deployment --deployment-config-name CodeDeployDefault.AllAtOnce --application-name ${{env.CODE_DEPLOY_APPLICATION_NAME}} --deployment-group-name ${{env.CODE_DEPLOY_DEPLOYMENT_GROUP_NAME}} --s3-location bucket=${{env.S3_BUCKET_NAME}},key=dist.zip,bundleType=zip
     
    빌드 된것을 확인
    notion image
     

    s3에서 리액트 애플리케이션 웹서버로 배포하기

    appspec.yml

    version: 0.0 os: linux files: - source: / destination: /home/ubuntu/gitaction-react # 리액트 디렉터리 overwrite: yes permissions: - object: /home/ubuntu/gitaction-react # 리액트 디렉터리 owner: ubuntu group: ubuntu mode: 755 hooks: AfterInstall: - location: deploy.sh timeout: 60 runas: root
     

    deploy.sh

    #!/usr/bin/env bash echo "> FE 배포"

    트러블 슈팅

    트러블 슈팅은 해당 명령어로 할수 있다. codedeploy 로그를 볼수 있으므로 상황에 맞게 트러블 슈팅을 하자
    tail -f /var/log/aws/codedeploy-agent/codedeploy-agent.log
     

    Missing credentials - please check if this instance was started with an IAM instance profile

    해당 에러는 IAM 인증되기 전에 code deploy agent가 실행되어서 그렇다. 다시 code deploy agent를 실행 시켜주면 된다.
    sudo service codedeploy-agent restart
     
    Share article
    Contents
    code depoly 설치하기EC2 IAM 설정EC2에 권한 부여 하기code deploy 설정IAM 사용자 추가github에서 s3로 올리기s3에서 리액트 애플리케이션 웹서버로 배포하기트러블 슈팅

    tubeblog

    RSS·Powered by Inblog