관리 메뉴

나의 개발일지(김지헌)

항해 99 82일차 12/09일 본문

항해 99

항해 99 82일차 12/09일

코딩이좋아요 2022. 12. 10. 01:31

오늘은 깃허브 액션을 이용한 cd구축을 해봤다.

1.타입스크립트로 작성을 해서 컴파일된 빌드파일을 올린다.

2.서버로 코드를 다 올려서 빌드 후 배포한다.

2번은 부하와 메모리가 많이 먹어서 서버에 부담이 가서 안될꺼 같았고

1번으로 진행 하기로 하고 시작을 했다.

ap-northeast-2에 버킷을 생성하고 lam 역할에서 역할하나 생성 해서 진행 한다.

배포중인 ec2에 태그를 만들어준다.

 

그리고 깃허브 액션에 가서 yml파일을 생성한다.

#deploy.yml
name: campus
# 어디브랜치에 쓸꺼니?
on:
  push:
    branches: [CDTEST]
    
jobs:
  build:
    runs-on: ubuntu-latest
# 노드버전 쓰기
    strategy:
      matrix:
        node-version: [16.x]
        # See supported Node.js release schedule at https://nodejs.org/en/about/releases/

    steps:
      - name: Checkout source code.
        uses: actions/checkout@v3

      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
# env파일 생성 
      - name: create env file
        working-directory: ./
        run: |
          touch .env
          cat << EOF >> .env
          ${{ secrets.ENV }}
      - name: build client files
        working-directory: ./
        run: |
          npm install
# 어떤 파일을 알집하고 어떤이름으로 할꺼니
      - name: zip file
        run: zip -r campustest.zip ./build ./scripts ./appspec.yml ./env ./package.json
# aws연결 할 때 사용자 에세스키와 비밀키 깃헙 액션에 등록하기
      - name: AWS connect
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET }}
          aws-region: ap-northeast-2
# 버켓 지역 적기
      - name: upload to S3
        run: aws s3 cp --region ap-northeast-2 ./campustest.zip s3://qwerqwer/build/
# 지역 이름과 알집파일 버켓이름 적기
# deploy도 같은 지역으로 만들어야함 아니면 deploy 오류
      - name: deploy with AWS codeDeploy
        run: aws deploy create-deployment
          --application-name campusautocode
          --deployment-config-name CodeDeployDefault.OneAtATime
          --deployment-group-name campusautocodeGroup
          --s3-location bucket=campus123,bundleType=zip,key=build/cicdtest.zip

 

 

  - name: deploy with AWS codeDeploy
        run: aws deploy create-deployment
          --application-name 디플로이어플리케이션 이름
          --deployment-config-name CodeDeployDefault.OneAtATime
          --deployment-group-name 디플로이어플리케이션 그룹이름
          --s3-location bucket=버캣이름,bundleType=zip,key=build/cicdtest.zip

그 후 스크립트 폴더를 만들어서 넣어준다. deploy가 실행할 코드를 적어준다.

#!/bin/bash
REPOSITORY=/home/ubuntu/autocode/


cd $REPOSITORY

npm install

sudo pm2 start server.js

AWS에 CodeDeploy에 들어가서 어플리케이션을 EC2/온프레미스를 눌러서 생성 해준다.

그후 배포 그룹을 선택해서

서비스 역할은 아까 만들어준 AWSDEPLOY 역할을 넣어주고 순서대로 넣어준다. 그후 yml파일에 썻던 브렌치로 푸쉬하면 깃허브 액션에서 배포가 실행된다.

처음에 진행 할 때 디플로이에서 오류가 발생했는데 이유가 디플로이 region이 맞지 않아서 문제가 발생 했다.

꼭 버캣과 deploy의 region을 같은 지역으로 맞춰주는게 좋다. 쉽게 헷갈리고 무엇을 썻는지 감이 안오기 떄문이다.

 

우분투에 접속 해서

//위에서 순서대로 붙혀넣기
sudo apt update

sudo apt install awscli

sudo apt update

sudo apt install git

wget https://aws-codedeploy-ap-northeast-2.s3.amazonaws.com/latest/install

chmod +x ./install

sudo apt-get install ruby

sudo ./install auto

sudo service codedeploy-agent status

sudo vim /etc/init.d/codedeploy-startup.sh
#!/bin <- i눌러 붙혀넣기

//코드 디플로이 재시작
sudo service codedeploy-agent restart

//스크립트 실행
sudo chmod +x /etc/init.d/codedeploy-startup.sh 
//aws 등록
sudo aws configure
//앤터치면 나오는 화면에서 에쎄스키 -> 시크릿키 -> 리전 -> json 순으로 적어주기

'항해 99' 카테고리의 다른 글

항해 99 84일차 12/11일  (0) 2022.12.12
항해 99 83일차 12/10일  (0) 2022.12.10
항해 99 81일차 12/08일  (0) 2022.12.09
항해 99 79일차 12/06일  (0) 2022.12.07
항해 99 78일차 12/05일  (0) 2022.12.06