通过Github Actions和宝塔实现自动部署Node项目


总结:
如果想实现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中会把构建完的文件上传到服务器中,再执行命令杀掉程序,然后重启。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值