GitHub Actions配通的过程,终于不用每次手动连服务器部署了
先说下我之前怎么上线的,说出来有点丢人。
代码改完了,本地跑一下,然后Xshell连服务器,cd到目录,git pull,npm install,pm2 restart。一套下来顺的话十分钟,不顺的话——比如忘记切分支了,或者node_modules抽风了——半小时就没了。
最烦的是有时候就改一行字,也得来一遍。后来实在受不了,抽了一天把GitHub Actions配好了。现在git push完就不用管了,服务器自己更新。
记录一下配的过程,省得以后忘了。
准备工作
三样东西:一个GitHub仓库、一台服务器、服务器上已经跑起来的项目。
我用的Node.js加PM2,服务器是之前ztopcloud开的阿里云ECS,注册就邮箱不用实名,充钱就能用。
第一步,服务器上搞个密钥
GitHub Actions要登服务器,用密钥对免密。
服务器上跑:
bash
ssh-keygen -t ed25519 -C "github-actions" -f ~/.ssh/github-actions
出来两个文件,公钥加到authorized_keys:
bash
cat ~/.ssh/github-actions.pub >> ~/.ssh/authorized_keys
拿私钥试一下能不能登:
bash
ssh -i ~/.ssh/github-actions 用户名@服务器IP
通了就行。
第二步,私钥塞GitHub Secrets里
私钥不能放代码里。去仓库Settings → Secrets and variables → Actions,新建三个:
-
SERVER_SSH_KEY,值就是刚才那个私钥文件内容(cat一下全复制)
-
SERVER_HOST,服务器IP
-
SERVER_USER,登录用户名
第三步,写那个yml文件
项目根目录建.github/workflows/deploy.yml:
yaml
name: Deploy to Server
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test # 没写测试就删掉
- name: Deploy to server
uses: appleboy/ssh-action@v0.1.5
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
script: |
cd /path/to/your/project
git pull origin main
npm ci --only=production
pm2 restart your-app-name
路径换成自己服务器上的实际路径。注意服务器上项目得先clone好。
第四步,推上去看跑不跑得通
bash
git add .github/workflows/deploy.yml
git commit -m "add deploy"
git push origin main
然后去Actions标签页看,绿了就是成了。
踩过的几个坑
服务器上git pull要密码。解决:服务器上用SSH方式clone,公钥加到GitHub的Deploy keys里。
pm2找不到。script里写全路径,which pm2查一下。
npm ci慢。个人项目几十秒,懒得折腾。
多环境的话
develop分支推测试服,main分支推正式服,改一下branches和脚本里路径就行。
配完感受
现在上线就是git push然后不管了。一年省不少时间,而且不会有本地行服务器不行的情况了。
还在手动的可以花一两个小时配一下。服务器我用的ztopcloud,开机器快,不用实名绑卡,微信支付宝都行,装好环境按上面来就行。
有问题留言。
更多推荐



所有评论(0)