前言

接上文初探CI,Github调戏Action手记——自动构建并发布

在学习了Action的基本操作之后

接着我们来探索Action其他可能的功能

众所周知 只有用得到的技术学习的才会最快

我也是如此

在完成了当前仓库不同分支的构建发布后,我又有了新的需求 自动构建后发布到不同的仓库

正文

我们直接新建一个yml发布文件

在系统给我们生成的文件中我们可以看到基础语法的介绍

这里我结合自己的理解标注一下

在进行解读之前我们先了解一下基本概念

基本术语

  • workflow (工作流程)
  • job (任务) 一个workflow可以由多个不同的job组成
  • step (步骤) 每个job可以由多个step来组成
  • action(动作) 每个step又可以由多个action来组成

Action市场

由于持续集成大家的需求大部分可能都是相同的操作

所以github建立了一个Action市场

使得每个人编写的Action脚本都可以被其他人来引用

这就使得当我这种彩笔小白想要使用这些功能的时候而不用写出很复杂的脚本

而这整个持续集成的过程也就成为了不同的Action相组合的产物

使用方法也很简单,只需要使用uses关键字直接引用别人的库即可

uses userName/repoName

结合模板

然后我们来结合系统生成的基础模板来进行基本的解读

# This is a basic workflow to help you get started with Actions

name: CI  # 构建流程的名称

on: #触发该流程的方式
  push:
    branches: [ master ]  #触犯该流程的分支
  pull_request:
    branches: [ master ]

jobs:
  # 该任务当前仅包含了一个任务  名称是build
  build:    
    runs-on: ubuntu-latest #任务锁运行的工作环境

    # 该任务所包含的步骤
    steps:
    # 步骤所依赖的操作库 这里引用了官方发布的git操作库 目的是拉取当前库的代码
    - uses: actions/checkout@v2

    # 这里是一个单行命令的模板
    - name: Run a one-line script
      run: echo Hello, world!

    # 这里是一个多行命令的模板
    - name: Run a multi-line script
      run: |
        echo Add other actions to build,
        echo test, and deploy your project.

使用已有的库进行持续集成(当前库构建发布到另外的库)

到这里我们就可以开始进行自己的Action的组装了

首先我们先找一个有发布到其他Git库功能的Action

我们可以在github的市场搜索自己需要的Action

MFcPRLTway742pE

这里我使用的是s0/git-publish-subdir-action@master

点开这个库的主页我们可以在下方看到该库的使用说明

这里就不在赘述了

name: AutoBuild

on:
  push:
    branches: [ OneKeyVip-master ]
  pull_request:
    branches: [ OneKeyVip-master ]
jobs:

  build:
    name: build
    runs-on: ubuntu-latest    
    steps:    
    - uses: actions/checkout@v2    
    - name: npm install
      run: |
        npm install
        npm ci
    - name: npm build
      run: |
       npm run build
       cp README.MD ./publish/README.MD
       cp CHANGELOG ./publish/CHANGELOG

    - name: publish
      uses: s0/git-publish-subdir-action@master
      env:
        REPO: 目标库
        BRANCH: 目标分支
        FOLDER: 要发布的内容所在的文件夹        
        SSH_PRIVATE_KEY: ${{ secrets.publish }}

结语

至此我们就完成了从当前库发布到其他的库持续集成的脚本的编写

剩下的我们就可以不再关心代码的生成与发布了

可以愉快的码代码了

GvEprR2w75OY4sX

Last modification:May 5, 2022
如果觉得我的文章对你有用,请随意赞赏