개발자
React로 만들어진 서비스를 Nginx에 배포하고 있습니다 ! yarn build하고 빌드파일들을 SFTP로 서버에 접속해서 파일을 업로드하고 배포하는게 너무 귀찮은데...github actions를 통해서 자동화 할 수 있는 방법이 있을까요? ssh로 구축한 글을 본 것 같긴한데 자세히 알고 계신 분 있나요...? AWS는 계획이 없고..docker나 가상머신이 필요할까요..ㅠㅠ
답변 1
인기 답변
React 배포 환경도 docker 안에 있는 게 아니라면, 굳이 docker는 사용하지 않아도 될 것 같습니다. 서버 인스턴스 내부에다가 react 빌드 파일을 업로드하는 거라면, Shell script로 배포를 자동화하는게 더 좋아보여요! Github actions를 안 써 봐서 모르겠지만, 제가 생각하는 절차는 다음과 같습니다. 1. 서버 ssh key를 CI/CD 툴이 사용할 수 있도록 등록 (Jenkins, Github action 등) 2. 특정 브랜치에 commit이 push 되었을 때를 감지해서 react build (Jenkins & Github webhook, Github action의 workflow..?) 3. 명령어 입력. 3-1. yarn build 3-2. build가 끝나고 나면 scp나 sftp 명령어로 nginx가 호스팅하는 react의 파일 경로에다가 빌드 결과물 복사 3-3. build 결과물 삭제 Github 사용하신다면 development 같이 특정 브랜치에 push event가 발생한거 감지할 수 있으니까, 이런식으로 하면 좋을 것 같아요!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2023년 09월 13일
네, 배포 과정을 자동화하기 위해 Github Actions를 활용할 수 있습니다. 이를 위해 아래와 같은 절차가 필요합니다. Step 1: 우선, Github에 프로젝트를 푸시하십시오. Step 2: .github/workflows라는 이름의 새 디렉토리를 프로젝트 루트에 생성하십시오. Step 3: 빌드 및 배포 작업을 정의하는 YML 파일(예: deploy.yml)을 workflows 디렉토리에 추가하십시오. 이 파일에서는 그룹화된 동작들을 "작업"으로 정의하고 각 작업은 한 개 이상의 "단계"로 구성됩니다. 각 단계는 실행할 명령어인 run 항목이나 사용해야 하는 Github Action인 uses 항목 등 여러 요소로 구성됩니다. 아래 코드 조각은 Github Actions가 변경 사항을 master 브랜치에 푸시할 때마다 React 애플리케이션을 빌드하고 nginx 서버에 업로드하는 예제입니다: ```yml name: Deploy to server on: push: branches: - master jobs: build_and_deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Install dependencies and build run: | npm install npm run build - name: Deploy to server uses: appleboy/scp-action@master with: host: ${{ secrets.SERVER_IP }} username: ${{ secrets.SERVER_USERNAME }} password: ${{ secrets.SERVER_PASSWORD }} source: "build/*" target: "/path/to/nginx/directory" ``` 이 파일에는 세 가지 주요 단계가 있습니다. 첫 번째 단계에서는 Github 저장소의 코드를 체크아웃하고, 두 번째 단계에서는 종속성을 설치하고 애플리케이션을 빌드합니다. 마지막으로, 세 번째 단계에서는 빌드된 파일을 SCP(secure copy)로 서버에 업로드합니다. 이와 같은 방식으로 원격 서버에 대한 배포를 자동화할 수 있습니다. 서버 접근 정보(scp-action 입력의 일부)가 필요하므로 Github Actions Secret를 사용하여 이러한 정보를 안전하게 관리하는 것이 좋습니다. Docker나 가상머신은 필수적인 요건은 아니지만, 추가적인 격리나 프로덕션 환경 시뮬레이션 등 다양한 이점을 제공하기 때문에 고려할 만한 옵션입니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!