Github 작업을 사용하여 내 VPS에 업데이트 배포
7669 단어 githubactions
Github 작업 소개
Github 작업은 다양한 github 관련 이벤트에 의해 트리거될 수 있는 사용자 정의 가능한 자동화입니다. 내 경우 내
main
분기에 대한 커밋이 발생할 때 내 작업이 발생합니다..yml
에 있는 .github/workflows
파일에서 작업을 정의합니다. 위에서 말할 가치가 있습니다. 이 파일은 저장소에서 볼 수 있으므로 노출되는 정보에 대해 주의해야 합니다. 보안 우선!name: Update Linode VPS Action
on:
push:
branches:
- 'main'
jobs:
Push-to-linode:
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps:
- name: Configure SSH
run: |
mkdir -p ~/.ssh/
echo "$SSH_KEY" > ~/.ssh/staging.key
chmod 600 ~/.ssh/staging.key
cat >>~/.ssh/config <<END
Host staging
HostName $SSH_HOST
User $SSH_USER
IdentityFile ~/.ssh/staging.key
StrictHostKeyChecking no
END
env:
SSH_USER: ${{ secrets.STAGING_SSH_USER }}
SSH_KEY: ${{ secrets.STAGING_SSH_KEY }}
SSH_HOST: ${{ secrets.STAGING_SSH_HOST }}
- name: Run npm run deploy
run: |
ssh staging 'cd ~/martingraham-dot-dev; npm run deploy'
이것을 분석해 보겠습니다.
on:
push:
branches:
- 'main'
이 비트는 작업이 실행되는 시기를 정의합니다. 광산은 매우 간단하지만 고급 배포를 위해 이벤트를 매우 구성할 수 있습니다.
작업 흐름에는 여러 작업이 있을 수 있습니다. 내 작업에는 제목이 하나만 있습니다
Push-to-linode
.jobs:
Push-to-linode:
이 조건문은 (내 이벤트 설정으로 인해) 아무 작업도 수행하지 않지만 향후 기능 참조를 위해 그대로 두었습니다.
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
행을 언급해야 합니다. Github 작업은 소위 러너에서 실행됩니다. 우리의 경우 러너는 github에서 운영합니다. 이후 명령은 이 러너 환경에서 실행됩니다. 자신의 러너를 자체 호스팅할 수 있지만 잠재적으로 시스템이 임의의 코드 실행에 노출될 수 있으므로(예: PR 또는 포크에서 실행되는 작업이 있는 경우) 공개 리포지토리에서는 자체 실행을 호스팅하지 않는 것이 좋습니다.jobs:
Push-to-linode:
runs-on: ubuntu-latest
SSH 및 비밀
우리의 작업은 몇 단계로 실행되며, 그 중 첫 번째는 내 VPS에 대한 SSH 연결을 구성하는 것입니다.
run
명령은 러너 환경 내에서 명령을 실행하므로 여기서는 ssh 구성 파일을 만듭니다.run: |
mkdir -p ~/.ssh/
echo "$SSH_KEY" > ~/.ssh/staging.key
chmod 600 ~/.ssh/staging.key
cat >>~/.ssh/config <<END
Host staging
HostName $SSH_HOST
User $SSH_USER
IdentityFile ~/.ssh/staging.key
StrictHostKeyChecking no
END
$SSH_USER
는 내 VPS에서 사용하기에 꽤 이상한 사용자 계정입니다. 사실 저는 전체 인터넷이 제 VPS 내부 사용자 계정의 이름을 알기를 원하지 않습니다. 그리고 나는 그들이 내 개인 SSH 키의 사본을 갖는 것을 확실히 원하지 않습니다. 그것이 env:
가 들어오는 곳입니다.env:
SSH_USER: ${{ secrets.STAGING_SSH_USER }}
SSH_KEY: ${{ secrets.STAGING_SSH_KEY }}
SSH_HOST: ${{ secrets.STAGING_SSH_HOST }}
이것은 내 작업에서 액세스할 수 있는 러너의 환경 변수를 설정합니다. Github 리포지토리에서 설정으로 이동하여 Github 작업에서 액세스할 수 있는 비밀(SSH 키, API 키 등)을 정의할 수 있습니다. 분명히 그들은 또한 로그에서 수정되지만 이러한 값을 기록하지 않도록 항상 주의해야 합니다.
NPM 스크립트
다음 단계에서는 새로 구성된 SSH 연결을 사용하여 VPS에 연결하고 명령을 실행합니다.
- name: Run npm run deploy
run: |
ssh staging 'cd ~/martingraham-dot-dev; npm run deploy'
알림
ssh staging
- 위를 보면 구성 파일에서 HOST staging
를 작성하여 대상의 이름을 지정한 것을 볼 수 있으며 여기에서 참조하고 있는 내용입니다.제 경우에는 빌드 단계가 필요한 노드 앱(정확히는 SvelteKit)을 실행하고 있으며 앱과 연결된
pm2
프로세스를 다시 시작해야 합니다. npm script
를 활용하여 최신 버전의 저장소를 가져오고 앱을 빌드한 다음 프로세스를 다시 시작합니다. 빌드 프로세스를 변경해야 하는 경우 github 작업 구성을 망칠 필요가 없기 때문에 이 방법을 좋아합니다.결론
Github Actions에 대한 간단한 소개가 있습니다. 가서 몇 가지 단계를 저장하세요!
사진 제공: Alex Knight on Unsplash
Reference
이 문제에 관하여(Github 작업을 사용하여 내 VPS에 업데이트 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/martinandersongraham/using-github-actions-to-deploy-updates-to-my-vps-40el텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)