나의 개발일지(김지헌)
항해 99 82일차 12/09일 본문
오늘은 깃허브 액션을 이용한 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 |