总结:
如果想实现node项目的CICD自动部署,可以通过Github Actions进行自动构建,构建之后,上传到宝塔服务器中,之后进行重启项目。
原文地址: https://vtron.site/
配置宝塔的项目
第一步:
在宝塔中Node项目管理中配置项目的基础信息。这一步都是可视化操作,不再过多叙述
需要注意的是项目名称,之后的步骤需要用到
配置Github Action
我们的流水线需要用到ssh登录服务器,所以需要ssh私钥配置在github action Secrets中
在Github的项目页中,找到settings->Secrets and variables->Actions
点击New repository secret 创建一个新的秘密字符串
名字填SERVER_SSH_KEY
值填你的服务器的ssh私钥。
配置流水线
在node项目下新建文件夹.github
.github
文件夹下新建文件夹workflows
workflows
下新建文件 node.yml
写入以下内容
# This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: Node CI
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- uses: pnpm/action-setup@v4
with:
cache: 'pnpm'
- run: pnpm install
- run: pnpm run build
- name: Deploy to Staging server
uses: easingthemes/ssh-deploy@main
env:
SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}
SOURCE: 'dist/'
REMOTE_HOST: 这里填你的服务器地址
REMOTE_USER: 这里填root或者其他ssh用户名
REMOTE_PORT: 这里填ssh登录的端口,默认是22
TARGET: 这里填你配置的node项目的路径
SCRIPT_AFTER: lsof -i :3100 -t | xargs kill -9 && sh /www/server/nodejs/vhost/scripts/项目名.sh
上面的地方有一些需要按照你的情况进行修改,不要照抄
on:
push:
branches:
- main
这里的触发条件完全看你的选择
- run: pnpm install
- run: pnpm run build
我这里使用了pnpm 进行项目的构建,如果你有其他的方式,请修改这里和之前的pnpm命令
env:
SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}
SOURCE: 'dist/'
REMOTE_HOST: 这里填你的服务器地址
REMOTE_USER: 这里填root或者其他ssh用户名
REMOTE_PORT: 这里填ssh登录的端口,默认是22
TARGET: 这里填你配置的node项目的路径
SCRIPT_AFTER: lsof -i :3100 -t | xargs kill -9 && sh /www/server/nodejs/vhost/scripts/项目名.sh
上面的参数中,source是构建之后的node项目的文件夹地址,按照你的项目的实际情况进行修改。
服务器的地址需要注意不要暴露,如果你的项目是私有的,可以直接写,如果是公有的,建议写在secret
中。
target 是你的宝塔项目的地址。
SCRIPT_AFTER这里需要注意,首先需要根据端口kill掉原来的进程,你也可以采用其他的方式kill掉进程。我这里写的项目端口是3100。
sh中最后一级的文件名,填你的项目名.sh 这个文件是宝塔用来启动项目的。
最后
配置完成之后,提交代码触发流水线的构建,之后,github action中会把构建完的文件上传到服务器中,再执行命令杀掉程序,然后重启。