📢 공지합니다
이 게시글은 메인 페이지에 항상 고정되어 표시됩니다.
CI는 개발자들이 자주 코드 변경 사항을 중앙 리포지토리에 통합하는 프로세스입니다. 통합이 발생할 때마다 자동으로 빌드와 테스트가 수행되어 코드의 품질을 유지하고, 새로운 버그가 즉시 발견되도록 합니다. CI의 주요 목표는 코드 통합을 빈번하게 함으로써 충돌과 통합 문제를 최소화하는 것입니다.
CI의 주요 요소
- 코드 통합: 개발자들은 하루에도 여러 번 자신의 코드를 리포지토리에 푸시(push)합니다.
- 자동화된 빌드: 코드가 리포지토리에 통합될 때마다 자동으로 빌드 프로세스가 실행됩니다.
- 자동화된 테스트: 빌드가 성공적으로 완료되면, 자동으로 테스트가 실행되어 코드의 품질을 검증합니다.
Continuous Deployment는 CI 이후의 프로세스를 자동화하여, 코드 변경 사항이 자동으로 프로덕션 환경에 배포되도록 하는 방법입니다. 즉, 모든 코드 변경이 테스트를 통과하면 자동으로 배포됩니다.
CD의 주요 요소
- 자동화된 배포: 테스트가 성공적으로 완료되면, 코드가 자동으로 프로덕션 서버에 배포됩니다.
- 지속적인 모니터링: 배포된 애플리케이션이 올바르게 동작하는지 모니터링합니다.
하지만 필자는 현재 테스트 코드가 없어 이번시간에는 CD로 진행할 예정이다.
본인이 만든 프로젝트에 들어가서 위 사진과 같이 Setting에 들어간뒤 Action을 눌러준다!!
![]() |
![]() |
그럼 왼쪽 화면이 뜰것이다!!!
여기서 New respoitory secret 버튼을 누르면 오른쪽 화면이 나오게 된다!
그럼 먼저
Name: EC2_HOST // Secret: 본인 aws 인스턴스 퍼블릭 주소 적으면 됨!!
Name: EC2_USER // Secret: 본인 aws 인스턴스 유저!! 거의다 ubuntu 일거라서 적으면 된다!
Name: EC2_KEY // Secret: 이거는 인스턴스에서 생성하고 받은 key 파일이다!!
예로 들어서 필자는 feelybuddy2121212.pem 파일을 받았는데 파일 내용이
-----BEGIN RSA PRIVATE KEY-----
.
.
내용들
.
.
-----END RSA PRIVATE KEY-----
이런식으로 있을것이다. 즉 저 내용을 첨부터 끝까지 복사한 다음 해당 Secret에 복사하면 끝이다!!!
그런 다음 로컬에서(필자는 파이참) 위 사진과 같이 폴더와 파일을 만들어준다!
.github - workflows - deploy.yml !!!
name: Deploy to EC2
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up SSH
uses: webfactory/ssh-agent@v0.5.3
with:
ssh-private-key: ${{ secrets.EC2_KEY }}
- name: Deploy to EC2
run: |
ssh -o StrictHostKeyChecking=no ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} << 'EOF'
cd /home/ubuntu/FeelBuddy22222 # 실제 애플리케이션 디렉토리로 변경
git pull origin main # 최신 코드 가져오기
sudo systemctl restart feelbuddy22222.service # 서비스 재시작 (유니콘 등)
sudo systemctl restart nginx # Nginx 재시작
EOF
위와 같이 작성을 해주자!!!
여기서 주의 할점은 실제 에플리케이션 디렉토리 및 서비스 재시작 파일 구조를 본인 프로젝트 구조에 맞게 적어야된다!
또한 이전에 EC2_KEY, EC2_USER, EC2_HOST 이걸로 이름을 설정한게 위 코드에 반영된것을 확인할 수 있다.
git add .github/workflows/deploy.yml
git commit -m "CD 적용"
git push origin main
자 그럼 이젠 터미널에서 위와 같이 git 을 통해 코드를 보낸다!!
깃허브에서 해당 리포지토리를 간다음에 위 사진과 같이 v 표시가 있으면 성공이다!!!
만약 X 가 뜨면 대부분 key 파일을 잘못복사해서 일어난 일이니깐 수정해주면 된다!
도커로 AWS EC2 스프링 배포하기 (3) | 2024.11.28 |
---|---|
AWS Route53을 이용하여 도메인 연결하기 (0) | 2024.08.18 |
AWS EC2 SSH 원격 접속 (0) | 2024.08.12 |