일반 프로젝트에서 많이 쓰는 CI/CD 구축 방법의 스크립트 질문
- name: SSH(원격접속)로 EC2에 접속하기
uses: appleboy/ssh-action@v1.0.3
#env:
#APPLICATION_PROPERTIES: ${{ secrets.APPLICATION_PROPERTIES }}
with:
#SSH로 접속할 때 필요한 값들이 있음. IP주소, ubuntu, 키페어 (EC2에 접속하기 위한 과정)
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_PRIVATE_KEY }}
#envs: APPLICATION_PROPERTIES
#문제가 있으면 스크립트 중단.
script_stop: true
script: |
rm -rf /home/ubuntu/instargram-server/current
mkdir /home/ubuntu/instargram-server/current
mv /home/ubuntu/instargram-server/tobe/project.jar /home/ubuntu/instargram-server/current/project.jar
cd /home/ubuntu/instargram-server/current
sudo fuser -k -n tcp 8080 || true
nohup java -jar project.jar > ./output.log 2>&1 &
rm -rf /home/ubuntu/instargram-server/tobe스크립트에서 실행 순서에 대한 질문입니다.
기존에 있던 서버는 current 파일의 project.jar 로 실행되고 있었을텐데 current 파일을 먼저 날리고 기존의 서버를 종료시켜 주는 부분이 이해가 되지 않습니다.
아마도 제 생각에는 current 폴더 안의 project.jar로 실행되고 있던 8080포트의 프로세스가 current 폴더를 삭제해주면 에러가 생길 것 같은데 에러가 생기지 않는 이유가 궁금합니다. 프로젝트 종료 -> 프로젝트가 담겨있던 폴더 삭제 -> 새 프로젝트 폴더 생성 순으로 가야 할 것 같은데 기존 프로젝트 폴더 삭제 -> 새 프로젝트 폴더 생성 -> 프로젝트 이동 -> 기존 프로젝트 종료 -> 새 프로젝트 실행 이런 순서로 해도 에러가 안나는 이유가 궁금합니다. 두서없이 써서 죄송합니다 ㅎㅎ;
답변 1
2
안녕하세요 seohyeonjin787님!
충분히 궁금해하실 수 있는 부분으로 질문 잘 해주셨습니다!
스크립트의 순서는 말씀해주신 순서인 '프로젝트 종료 -> 프로젝트가 담겨있던 폴더 삭제 -> 새 프로젝트 폴더 생성 순'으로 작성하셔도 괜찮습니다!
그런데 위의 스크립트 코드도 정상적으로 작동하는 이유는,
실행하고 있는 프로젝트의 파일에 대한 내용이 컴퓨터 메모리에 이미 복사되어 올라가있기 때문이에요!
그래서 프로젝트의 원본 파일을 지우더라도 프로젝트의 파일 내용이 컴퓨터 메모리에 여전히 남아있는 상태이기 때문에 에러가 안 나고 여전히 정상적으로 서버가 실행되고 있는 것입니다.
위 설명 중에 이해 안 되시는 부분이 있다면 편하게 또 질문 남겨주세요:D
무중단 배포
0
57
2
workflows/deploy.yml 궁금증
0
52
2
.git-credentials 파일이 없이 배포가 성공한 이유가 궁금
0
57
1
(해결 - 정보공유) /home/runner/work/_temp/6be6e~0.sh: line 1: ./gradlew: Permission denied 오류
1
63
2
(확인 완료) git config --global creadential.helper store 후에도 비밀번호 물어보는 현상
1
71
2
질문_ 강의 순서 및 그외
0
70
2
섹션 4 - Docker + 백엔드(Spring Boot)
0
63
2
deploy.yml작성후 원격에 push불가
0
63
2
CodeDeploy 사용시 registration 요구
0
106
3
스프링 종료 명령어
0
68
2
RAM & 스왑메모리 폭증하는 문제
0
102
2
섹션 4, 5와 6, 7은 유사한가요?
0
66
1
code deploy 배포입니다.
0
98
3
사용자 삭제가 안되는 이유
0
88
2
이미지 pull중 no basic auth credentials 문제입니다.
0
113
2
Docker Compose파일을 작성했을때 CI CD와의 연동
0
96
2
보안그룹 생성 오류
0
84
3
AWS 5월에 탈퇴해서 그러는데....
0
81
1
배포 오류
0
80
2
node.js 설치시 에러
0
149
2
appspec.yml, 스크립트 파일 수정요청
0
82
2
appleboy/ssh-action stop_script 대체
1
181
2
Vue.js 파일 배포
0
61
2
aws를완강하고 ci/cd로 넘어왔습니다.
0
85
1





