GitHub Actions를 사용하여 VPS에서 웹 사이트의 지속적인 배포를 설정하는 방법

4909 단어 webdevdevopsgithub

Doesn't matter if it is a private or public repository



전제 조건



이 자습서에 필요한 전제 조건은 다음과 같습니다.
  • A GitHub account
  • 모든 가상 사설 서버. 시작하기가 쉽기 때문에 DigitalOcean을 선호합니다. 내Referral Link로 DigitalOcean에 가입할 수 있으면 60일 동안 사용할 수 있는 $100 크레딧을 받게 됩니다.

  • 이 튜토리얼에서 다룰 내용 중 일부입니다.


  • 원격 VPS에서 ssh 키 생성
  • 생성된 공개 키를 승인된 키에 추가
  • GitHub 비밀 키 생성
  • 개인/공용 리포지토리를 자동 배포하도록 GitHub 작업 구성

  • 1단계 - 터미널을 열고 VPS에 ssh를 추가합니다.



    $ ssh user@hostname
    $ cd ~/.ssh
    

    2단계 - ssh 키 생성



    $  ssh-keygen -t rsa -b 4096 -C "[email protected]"
    

  • 이메일은 GitHub 계정에서 사용하는 이메일입니다
  • .

    3단계: Enter 키를 반복해서 눌러 기본 이름 설정(암호를 설정하지 않음)


  • 터미널에서 "ls"를 실행하면 다음 두 파일( id_rsa 및 id_rsa.pub)이 표시됩니다.

  • 4단계 - authorized_keys에 공개 키 추가



    $  cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    

  • 참고: id_rsa.pub 내용이 authorized_keys의 내용을 재정의하는 대신 authorized_keys 파일의 내용 끝에 추가되도록 >>를 사용하고 있습니다.

  • 5단계 - GitHub 비밀 생성



    $  cat ~/.ssh/id_rsa
    

  • 터미널에서 위의 명령을 실행하여 출력 콘텐츠를 선택하고 클립보드에 복사합니다.



  • 구성하려는 GitHub 리포지토리로 이동하고 설정 탭을 클릭한 다음 옵션 메뉴에서 다음 비밀을 클릭하고 추가합니다.
  • HOST: 키를 호스트 이름 또는 IP 주소로 설정합니다.
  • USERNAME: VPS에 SSH로 연결하는 데 사용하는 사용자 이름으로 키를 설정합니다.
  • SSHKEY: 위 명령에서 복사한 내용에 대한 키를 설정합니다.
  • 포트: 키를 22로 설정



  • 아직 여기 계시다면 축하합니다! 우리는 거의 끝났습니다!

    With the steps above completed, we’re left with only a single step more, namely, our .github/workflows/deploy.yml file.



    6단계 - 프라이빗/퍼블릭 리포지토리를 자동 배포하도록 GitHub 작업 구성



    머신에 로컬로 복제된 리포지토리가 있다고 가정하고 .github/workflows 폴더를 만들고 그 안에 deploy.yml 파일을 만듭니다.
  • deploy.yml 파일에 다음 내용을 추가합니다.

  • name: Deploy
    
    on: [push]
    
    jobs:
      build:
    
        runs-on: ubuntu-latest
    
        steps:
        - uses: actions/checkout@v1
    
        - name: Copy repository contents via scp
          uses: appleboy/scp-action@master
          env:
            HOST: ${{ secrets.HOST }}
            USERNAME: ${{ secrets.USERNAME }}
            PORT: ${{ secrets.PORT }}
            KEY: ${{ secrets.SSHKEY }}
          with:
            source: "."
            target: "/var/www/mywebsite"
    
        - name: Executing remote command
          uses: appleboy/ssh-action@master
          with:
            host: ${{ secrets.HOST }}
            USERNAME: ${{ secrets.USERNAME }}
            PORT: ${{ secrets.PORT }}
            KEY: ${{ secrets.SSHKEY }}
            script: ls
    

    Notice that my remote command is just " ls ".if you are trying to auto deploy a React App or a Vue App, you could set your script command to Build command.



    진실의 순간!



    deploy.yml 변경 사항을 커밋하고 리포지토리에 푸시합니다.

    오류 없이 빌드하고 VPS로 푸시해야 합니다.

    $  git add .
    
    $  git commit -m "deploy"
    
    $  git push origin master
    

    GitHub 리포지토리로 이동하여 작업 메뉴를 클릭하면 다음을 볼 수 있습니다.



    Yay ! That's it, your repository is officially configured, now everytime you make changes and push to GitHub that action will run and auto deploy your website.



    읽어 주셔서 감사합니다!



    귀하의 의견을 환영합니다

    좋은 웹페이지 즐겨찾기