이번에는 AWS console에서 git clone과 build 해보는 과정을 하겠다.
GitAction 이란?
GitHub에서 제공하는 CI/CD(Continuous Integration and Continuous Deployment) 플랫폼이며 소프트웨어 개발 워크플로우를 자동화할 수 있는 도구이다.
또한, 코드 테스트, 빌드, 배포, 린팅(linting), 패키징 등의 작업을 자동으로 실행 가능하다.
비슷한 제품으로는 Jenkins(젠킨스)가 있으며 더 많은 커스터마이징과 다양한 환경 지원 필요시 사용하기도 한다.
메모리를 증량해보자
먼저 프리티어 EC2 메모리를 증량해 보겠다.
EC2 연결후 진행한다.
# 공간 확인
$ free -h
#swap 절차
#1. dd 명령을 사용하여 루트 파일 시스템에 스왑 파일 생성
$ sudo dd if=/dev/zero of=/swapfile bs=128M count=16
#명령에서 bs는 블록 크기이고 count는 블록 수
#스왑 파일의 크기는 dd 명령의 블록 크기 옵션에 블록 수 옵션을 곱한 값임
#명령에서 스왑 파일의 크기는 2GB(128MB x 16)
#2. 스왑 파일의 읽기 및 쓰기 권한 업데이트
$ sudo chmod 600 /swapfile
#3. Linux 스왑 영역 설정
$ sudo mkswap /swapfile
#4. 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용
$ sudo swapon /swapfile
#5. 프로시저가 성공적인지 확인
$ sudo swapon -s
#swapfile에 2GB가 할당되었음
#6. /etc/fstab 파일을 편집하여 부팅 시 스왑 파일 시작
#리눅스에서 통상적인 편집기는 vi를 주로 사용 -> 명령에 공부가 필요
#nano 편집기 사용
$ sudo nano /etc/fstab
#7. 편집기에서 파일을 오픈
#파일 끝에 다음 줄을 새로 추가하고 파일을 저장한 다음 종료
$ /swapfile swap swap defaults 0 0
#8. 공간 확인 => 2G 추가된것 확인 완료
$ free -h
#9. 재부팅
$ sudo reboot
#10. 재접속후 확인
$ free -h
위 순서를 따라오면 최종적으로
이렇게 할당할 수 있다.
그 후 demo-deploy를 github와 연동한다.
그저 새 레퍼지스토리를 생성 후 연동해 주면 된다. 다만 AWS의 키값이나 중요 부분이 노출될 수 있으니 Private로 진행한다.
하지만 Private로 설정시 SSH로 Clone 하는 과정에서 인증이 필요하다.
EC2 Key 설정
먼저 EC2 프로젝트에 git이 설치되어 있는지 확인 후 안되어있으면 설치해 주도록 하자.
# Amazon linux2
$ sudo yum install git
# Ubuntu
$ sudo apt-get install git
그다음 ssh키를 생성한다.
$ cd ~/.ssh
$ ssh-keygen -t rsa -C '깃허브 계정 메일'
생성중 나오는 문구에는 모두 Enter를 입력 후
이 텍스쳐가 나오게 되면 성공이다!
이제 github에 ssh키를 등록한다.
그럼 준비가 끝난다.
Github Clone 및 배포 수동연결
이제 git clone을 해보자!
$ git clone [git repository 주소]
이렇게 인스턴스에 깃을 클론 하게 된다.
그다음 서버에서 빌드 및 가동을 해보겠다.
# 프로젝트로 이동
$ cd demo-deploy
# 빌드
$ ./gradlew clean build
# 빌드 명령어가 퍼미션오류가 발생하면 권한 조정
$ chmod +x ./gradlew
# 서버 가동
$ nohup java -jar build/libs/demo-deploy-0.0.1-SNAPSHOT.jar &
# 서버 로그 모니터링
$ tail -f nohup.out
그러고 나서 `http://내 탄력적 IP주소:8080` 에 접속하면
성공이다!
이제 IntelliJ로 돌아가 수정해 보고 다시 빌드해 볼 텐데, git commit과 push 이후엔 전부 똑같다.
Git 수정과 적용
home.html 파일을 수정후 push 해보겠다.
성공적으로 진행되었다.
그다음은 다시 시도 하기전 8080 포트를 끄도록 하겠다.
# 포트 확인
$ sudo lsof -i:8080
# 해당 포트를 사용하는 프로세스 중단
$ sudo fuser -k -n tcp 8080
이제 다시 Github로부터 받아와야 한다.
여기서 중요한 점은 위에 설명했듯이 git pull을 통해 받아와야 한다.
그 후 아래와 같이 진행한다.
# 프로젝트로 이동
$ cd demo-deploy
# 빌드
$ ./gradlew clean build
# 서버 가동
$ nohup java -jar build/libs/demo-deploy-0.0.1-SNAPSHOT.jar &
# 서버 로그 모니터링
$ tail -f nohup.out
그 다음 다시 `http://내 탄력적 IP주소:8080` 에 접속해 보자!
성공적이다!
하지만 해당 방법은 매번 번거로울 뿐 아니라 CI/CD 긴 하지만 번잡하고 불편하며 많은 시간 소요된다.
이를 위해 자동화가 필요하다.
자동화와 GitAction은 2편에서 계속 ~
'SK 루키즈 > Cloud' 카테고리의 다른 글
[Rookies 개발 2기] 스프링부트 + GitAction + CI/CD (2) (0) | 2025.01.17 |
---|---|
[Rookies 개발 2기] VPC 기본 개념 및 설정 (0) | 2025.01.16 |
[Rookies 개발 2기] AWS에 Java Spring 프로젝트를 올려보자 (2) (0) | 2025.01.16 |
[Rookies 개발 2기] AWS에 Java Spring 프로젝트를 올려보자 (1) (3) | 2025.01.16 |
[Rookies 개발 2기] DevOps 개념과 도구 (3) (2) | 2025.01.16 |