diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..917325fd50a80bcd4e51de634a2a830b38c025b2 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,35 @@ +stages: + - build + - deploy + +build: + stage: build + image: node:16 + script: + # React 프로젝트 설치 및 빌드 + - npm install + - npm run build + artifacts: + paths: + - build/ # 빌드 결과물을 아티팩트로 저장 + +deploy: + stage: deploy + image: alpine:latest + before_script: + # SSH 클라이언트 설치 + - apk add --no-cache openssh + # .ssh 디렉토리 생성 + - mkdir -p ~/.ssh + # Base64로 인코딩된 SSH 키 디코딩 및 파일 생성 + - echo "$SSH_PEM_KEY_BASE64" | base64 -d > ~/.ssh/id_rsa.pem + - chmod 600 ~/.ssh/id_rsa.pem + script: + # 원격 서버에 디렉토리 생성 및 권한 설정 + - ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa.pem $SSH_USER@$EC2_HOST "sudo mkdir -p /var/www/yanawa.shop && sudo chown -R $SSH_USER:$SSH_USER /var/www/yanawa.shop" + # 파일 업로드 + - scp -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa.pem -r build/* $SSH_USER@$EC2_HOST:/var/www/yanawa.shop + # Nginx 재시작 + - ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa.pem $SSH_USER@$EC2_HOST "sudo systemctl reload nginx" + only: + - main # main 브랜치에 푸시될 때만 실행 \ No newline at end of file