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.)