<返回更多

前端必知的GitHub Action一键部署

2023-02-06    HerryLo
加入收藏

最近由于自己的个人应用增加,每次都需要在服务器手动发布,觉得特别麻烦,所以想通过代码控制自动发布,直接选择了Github Action

 

GitHub Action持续集成服务,目前已经免费开放使用,由于大部分人的个人项目都是放在github上,那么使用它来发布、测试、部署,是非常方便的。

 

Github Action配置

 

下面的内容默认你已经会创建Github Action,官方提供了很多Github Action 配置模版,可以根据自己的需求随意选择,不是太了解的可以先参考阮一峰 GitHub Actions入门教程,了解一下Github Action。

 

我们来看看Github Action配置文件的基本构成,配置文件格式是.yml,示例如下:

 

# main.yml
# 一个 workflow,名字为Github Action Example
name: Github Action Example

# 触发 workflow 的事件
on:
  push:
    # 分支随意
    branches:
      - master

# 一个workflow由执行的一项或多项job
jobs:
    # 一个job任务,任务名为build
    build:
        # runs-on 指定job任务运行所需要的虚拟机环境(必填字段)
        runs-on: ubuntu-latest
        # steps是每个Job的运行步骤,可以包含一个或多个步骤
        steps:
            # action命令,切换分支获取源码
            - name: Checkout
                # 使用action库  actions/checkout获取源码
                uses: actions/checkout@master
            # action命令,安装Node10
            - name: use Node.js 10
                # 使用action库  actions/setup-node安装node
                uses: actions/setup-node@v1
                with:
                    node-version: 10
            # action命令,install && test
            - name: npm install and test
                # 运行的命令或者 action
                run: |
                    npm install
                    npm run test
                # 环境变量
                env:
                    CI: true

 

 

Github: Github Action插件查询库,可以查询你需要的action库,这些都是共享的,如果满足不了需求也可以自己定义。

 

Github Action发布阿里云ECS

 

下面就是我发布到阿里云ECS的 Github Action配置文件

 

我的Github Action服务配置

 

# main.yml
name: deploy to aliyun
on:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      # 切换分支
      - name: Checkout
        uses: actions/checkout@master
      # 下载 git submodule
      - uses: srt32/git-actions@v0.0.3
        with:
          args: git submodule update --init --recursive
      # 使用 node:10
      - name: use Node.js 10
        uses: actions/setup-node@v1
        with:
          node-version: 10
      # npm install
      - name: npm install and build
        run: |
          npm install
          npm run build
        env:
          CI: true
      # Deploy
      - name: Deploy
        uses: easingthemes/ssh-deploy@v2.0.7
        env:
          SSH_PRIVATE_KEY: ${{ secrets.ACCESS_TOKEN }}
          ARGS: "-avz --delete"
          SOURCE: "[Current File Dir]"
          REMOTE_HOST: "[Domain]"
          REMOTE_USER: "[UserName]"
          TARGET: "[Server Dir]"

 

以上是我的配置文件,action插件请根据自己的需求合理选择。我是要博客网站,发布到阿里云服务上,所以采用以上配置,而最后的action Deploy中action插件的选择,也是根据需求,在Github: action插件库中选择的。

 

补充注意⚠️:如果你是要发布到阿里云服务器,同时也使用以上配置action文件,请记住:ACCESS_TOKEN 是服务器ssh密钥对的私钥部分应将服务器公钥部分添加到接收部署的服务器上的authorized_keys文件中。正常情况下,ACCESS_TOKEN 是 服务器 ~/.ssh目录下的id_rsa 文件中 的内容。仔细看一下
https://github.com/marketplac... 文档中的字段配置描述)

 

最新更新20220424

由于githubs action 安全升级的原因,我发现有了这个报错:

Starting the git Action
fatal: unsafe repository ('/github/workspace' is owned by someone else)
To add an exception for this directory, call:

	git config --global --add safe.directory /github/workspace

 

按照提示修改配置,也在网上查找了很多办法,都不太行,最后决定将 srt32/git-actions@v0.0.3 移除了

- - uses: srt32/git-actions@v0.0.3
-        with:
-         args: git submodule update --init --recursive

 

更多

使用GitHub Actions发布Hexo网站到GitHub Pages

GitHub Actions发布博客到阿里云OSS

GitHub Actions自动构建镜像并推送到阿里云容器镜像服务

 

参考

Core concepts for GitHub Actions

阮一峰: GitHub Actions 入门教程

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>