CI에는 .github/workflows/deploy.yml만 필요(파일명은 중요하지않음 확장자만yml이면 됨)
CD에 .ebextensions폴더랑 Procfile파일 필요.
deploy.yml 파일이 트리거역할을 하여 CI진행, CD가 진행된다.
CI절차
git repository에 푸쉬되는순간 CI서버에
우분투설치
jdk설치
코드다운로드
코드테스트
build(실행파일 생성)
-----------------------------여기까지CI
설정하고 github actions 들어가서 활성화 해준다음 , 커밋,푸쉬하면 CI 까지완성
CD절차
그다음 CD진행하려면, deploy.yml에 CD코드를 추가하고 .ebextensions폴더랑 Procfile파일 필요.
엘라스틱빈스톡에
*.jar파일을 업로드하면 /var/app/current/application.jar로 바꿔서 업로도되고 /var/app/current/Procfile 만듦
Procfile에는 java -jar application.jar 스크립트가 들어가있어서 단순하게 jar파일을 실행
그에 반해 deploy.zip파일을 업로드하면 알아서 압축을 풀어서
application.jar ,Procfile, .ebextention을 /var/app/current/에 넣는다.
먼저 .ebextention폴더에 jar파일을 실행하라는 스크립트를 만들어서 /sbin/appstart로 만들라는 스크립트가 적혀있다.
그다음 Procfile이 실행되는데
springapp: appstart
라고 적혀있는데 springapp이란 거는 아무거나 적어도 되는 자리이고 appstart를 실행
리눅스에서는 bin이나 sbin이나 이런 폴더 내부 파일은 어느폴더에서든지 실행할 수 있다.(환경변수가 등록되어있음 PATH가 잡혀있기 떄문 그래서 Procfile에는 sbin에있는 appstart파일을 실행시키라는 스크립트가 적혀있는 것.
nohup 을 안쓰는 이유? docker로 실행되기때문에 백그라운드에서 실행됨.
IAM사용자 생성
사용자이름 metacoding
자격증명유형선택 - 액세스키 선택
기존정책 직접연결 AdministratorAccess- AWSElasticBeanstalk 선택
액세스키 생성 후 이것을 깃허브 레포지토리 셋팅- secrets -actions에 등록한다.
RDS DB에 한글이 insert 안되는 문제
RDS- 파라미터그룹에 들어가서 character_set검색 후 나오는 모든 값을 utf8mb4 로 설정
그리고 재부팅
->그래도 안된다 왜냐면 인코딩설정을 하기전에 테이블을 만들었기떄문.
그래서 drop table 하고 다시 테이블을 만들어야함
로그 보기
ec2로 ssh접속하여
cd /var/app/current
cd /var/log에서
sudo cat springapp.stdout.log 또는 sudo tail -f springapp.stdou.log
NLB 고정 IP설정
1.탄력적ip생성후
2. 로드밸런서- 로드밸런서 생성 -NLB선택 - northeast 1개 선택후 고정ip로 설정
3. 리스너에서 대상등록 - 대상그룹생성 에서 기존 alb를 등록해준다. 이 대상그룹으로 80포트가 라우팅되게 한다.
'AWS > aws CICD-metacoding' 카테고리의 다른 글
docker exec (4) | 2024.09.04 |
---|---|
배포v5 롤링배포 (0) | 2024.08.20 |
배포v5 엘라스틱빈스톡+RDS -기본 설정 (0) | 2024.08.20 |
배포v4 엘라스틱빈스톡 + RDS (0) | 2024.08.19 |
배포v3 엘라스틱빈스톡 (0) | 2024.08.19 |