GitHub Action 了解一下

有 N 人看过

最近手上有一个个人项目,后端使用 Node.js,前端使用 Vue 和 微信小程序。单独一项一项的构建、部署线上非常耗费时间,在思考如何自动化构建部署的时候,GitHub Action 进入了视线。这篇文章简单的记录一下这次 GitHub 的使用记录。

GitHub Action

一款持续集成应用,可以实现自动化拉取代码、测试、构建、登录远程服务器,发布等,功能应该对标 GitLab Pipelines、Travis CI 等,但是应该比这两款入门门槛低,使用更灵活。由于 GitLab 的私有部署,应该大部分公司都会选择 GitLab Pipelines 以保证其数据安全性。

官方市场

GitHub Action 的一个特性,可以引用别人已经写好的 Action,组合成自己的组合。GitHub 提供了 官方市场,可以搜索使用别人提交的 Action,开源仓库 awesome-actions 也有很多的 Action 可以使用。

如何使用

出门左转官方文档是最好的教程

https://help.github.com/en/actions (English)
https://help.github.com/cn/actions (中文)

下面贴一段自己写的 Demo,简单的解释一下配置文件

Demo

配置文件目录

.github/workflows/*.yml

文件名没有要求,Action 会自动运行该目录下所有的配置文件

直接贴配置文件,再解释几个点

name: Publish
on: [push]
jobs:
  build:
    name: SSH command
    runs-on: ubuntu-latest
    steps:
    - name: git fetch
      uses: appleboy/ssh-action@master
      with:
        host: ${{ secrets.SERVER_HOST }}
        username: ${{ secrets.SERVER_USERNAME }}
        password: ${{ secrets.SERVER_PASSWORD }}
        command_timeout: 10m
        script: |
          git fetch --all
          git reset --hard origin/master
  build:
    name: ...
    runs-on: ...
    ...

name

运行进程名,显示在 GitHub Action 执行列表

on

触发执行 Action 的时机,完整的事件列表请查看 官方文档

jobs, steps

字面意思,执行流程,可以有多个任务

runs-on

指定运行所需要的虚拟机环境,有 ubuntu-latest windows-latest macOS-latest

uses

选用的第三方 Action,Demo 上写的 appleboy/ssh-action@master 是远程 SSH 执行的 Action,

secrets

secrets 变量在 Project -> Settings -> Secrets 里面设置,字面意思,用于保存机密参数

More

GitHub Action 确实挺好玩的,hexo-theme-aomori 也使用了 GitHub Action 进行自动打包发布,大家可以参考一下该配置文件。

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。