基于GitHub Actions的node.js自动化部署

对于持续集成这个名词不太理解的,建议先去了解一下DevOps的相关概念。

什么是GitHub Actions?

GitHub Actions就是GitHub提供的一个功能,我们在项目仓库顶部的tab项这里可以见到它。

它的功能就是,监控某一个分支提交,当分支有新的提交进来时就会触发你编写的脚本

触发:GitHub免费提供了一个服务器来跑我们编写的脚本

脚本:脚本可以自己编写也可以使用别人编写好的脚本(action),在顶部的marketplace里就可以找到别人的action

实践

我的脚本

name: Node.js CI
on:
  push:
    branches: [ master ] #监听master分支的push事件
  pull_request:
    branches: [ master ]
jobs:
  build:
    runs-on: ubuntu-latest #指定运行环境为最新的Ubuntu版本
    strategy:
      matrix:
        node-version: [15.9.0] #指定node版本
    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }} #使用action安装node环境
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - run: npm install #安装项目依赖
    - run: npm run build #build项目
    - name: ssh scp ssh pipelines #使用市场找到的action来将项目build的产物传到我的服务器
      uses: cross-the-world/ssh-scp-ssh-pipelines@latest
      env:
        WELCOME: "ssh scp ssh pipelines"
        LASTSSH: "Doing something after copying"
      with:
        host: ${{ secrets.LDD_SERVER_IP }} # 服务器的ip
        user: ${{ secrets.LDD_SERVER_NAME }} # 服务器的账号
        pass: ${{ secrets.LDD_SERVER_PASSWORD }} # 服务器的密码
        connect_timeout: 10s
        first_ssh: | #这部分是在服务器上,传输文件前执行的命令,关闭并删除运行中的旧版本
          pm2 delete all
          cd /project/ldd-rms-backend
          rm -rf dist
        scp: | #将build生成的文件从GitHub服务器的相应目录,传到我服务器的相应目录
          ./dist => /project/ldd-rms-backend
          ./package.json => /project/ldd-rms-backend
          ./yarn.lock => /project/ldd-rms-backend
        last_ssh: | #这部分是在服务器上,传输文件后执行的命令,新版本重新安装依赖并运行
          cd /project/ldd-rms-backend
          yarn
          pm2 start ./dist/main.js

这个脚本我用的是这个生成的:

传输部分的action是在市场找到的这个ssh scp ssh pipelines

 

脚本中的变量${{ secrets.LDD_SERVER_IP }},这个是在项目的settings里设置的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值