再探CI,Github調戲Action手記——自動構建併發布到另一倉庫

吾之初心,永世不忘發表於2020-04-17

前言

接上文初探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

相關文章