进来拷贝,来用GitHub Actions部署前端项目

816 阅读2分钟

Image

前言

搞完jenkins部署项目后,很快啊、我大意了没有闪!大佬们就说,现在还有谁搞jenkins自动部署。给我讲起来GitHub Actions。简单看了一波,对用Github托管的项目可以说是相当友好,接下来当然是一把刷。

基本概念

GitHub Actions内有一些概念性的定义,如下所示:

  • workflow:顾名思义这是工作流程,在GitHub Actions中每执行一次就是一个工作流程。
  • job:工作流程中的一个任务,一个工作流程可以配置多个任务
  • step:工作任务中的步骤,根据配置的先后顺序执行,一个任务内可以配置多个步骤
  • use:在执行 step 时,你可以使用别人定义好的 actions
  • action:每个步骤所使用的构建动作,可以使用GitHub官方提供的动作实现,也可以自动编写。
  • run:在执行 step 时,执行 run 对应的 shell 命令

使用GitHub Actions

创建添加过workflow文件

每一个工作流都是由一个YML文件进行配置的,在该文件内我们可以配置仓库的GitHub Actions所相关的全部内容,GitHub针对文件所处的目录进行了约定,必须在仓库根下的.github/workflows目录内。

  • 方式一:直接点击新建、随便选择一波模板 image.png
  • 方式二:在项目根目录创建.github/workflows目录,然后在新创建的目录下添加一个名为随便.yml的工作流配置文件将修改提交后pushGitHub仓库即可。

编辑YML文件

image.png 编辑后点击提交就可以了,截图使用的是node模板。附上咱目前配置.yml ,直接用到easingthemes/ssh-deploy@main这个开源的actions,其原理也是使用rsync这个工具实现数据传输。

name: stage
on:
  #测试
  push:
    branches:
      - feature
jobs:
  # 任务配置
  build:
    # 运行环境
    runs-on: ubuntu-latest
    # 步骤
    steps:
    # 使用别人的action
    - uses: actions/checkout@v2
    # 步骤名称
    - name: yarn install
      # 步骤执行Deploy keys
      run: yarn
    - name: yarn build
      run: yarn build:stage
    # 命名这个任务为发布Deplook
    - name: Deploy to Server
      uses: easingthemes/ssh-deploy@main
      env:
          SSH_PRIVATE_KEY: ${{ secrets.TEST_SERVER_SSH_KEY }}
          ARGS: "-rltgoDzvO --delete"
          SOURCE: "dist/"
          REMOTE_HOST: ${{ secrets.TEST_USER_HOST }}
          REMOTE_USER: ${{ secrets.USER_NAME }}
          TARGET: ${{secrets.TARGET}}
          EXCLUDE: "/dist/, /node_modules/"

secrets 配置

接下来配置Workflows中获取的值、继续在GitHub上就有得添加

image.png 服务器配置 由于rsync是借助秘钥实现通过 ssh 进行传输。所以在服务器上需要做一些配置。

创建秘钥

ssh-keygen -m PEM -t rsa -b 4096

在服务器上安装公钥

cat .ssh/id_rsa.pub >> .ssh/authorized_keys

编辑 /etc/ssh/sshd_config 文件,开启服务器允许通过秘钥登录。添加

RSAAuthentication yesPubkeyAuthentication yes

因为我是直接使用 root 账号,所以还要开启允许 root 通过 ssh 登录:PermitRootLogin yes

重启服务: systemctl restart sshd.service

最后记得将私钥(id_rsa )中的内容保存到 secrets。

参考

觉得有用的大佬帮忙点个赞,好人一生平安~

链接:blog.csdn.net/weixin_3196…

链接:www.jianshu.com/p/24379f77b…