核心思想是master分支push后触发Action去ssh云服务器执行shell来部署
1.云服务器生成SSH公私钥
ssh-keygen -t rsa -b 4096 -C your_email@example.com
默认会在~/.ssh/路径下生成两个文件(私钥和公钥):id_rsa, id_rsa.pub
把公钥内容复制进~/.ssh/authorized_keys文件内
2.云服务器创建shell脚本用于部署
示例采用了pm2部署Node.js程序,可以根据自己的情况编写shell
cd /your_project_path
git pull origin master
npm install
pm2 restart 0
3.设置Github Secrets变量
项目页面Settings->Secrets->New secret
创建以下3个变量:
REMOTE_HOST: 云服务器ip
REMOTE_USER: SSH登录user
SERVER_SSH_KEY: 步骤1中id_rsa的内容(私钥)
4. 新建一个Action
项目页面点击Action新建,Workflow file内容如下:
# This is a basic workflow to help you get started with Actions
name: Deploy
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Run a command remotely
uses: docker://evaneos/ssh-action:0.1.0
with:
hosts: ${{ secrets.REMOTE_HOST }}
user: ${{ secrets.REMOTE_USER }}
private_key: ${{ secrets.SERVER_SSH_KEY }}
commands: sh /your_path/your_shell.sh
至此完成设置,当master分支push后,可以点击Action查看workflows