前言

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

这里我使用的是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 }}

结语

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

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

可以愉快的码代码了

再探CI,Github调戏Action手记——自动构建并发布到另一仓库的更多相关文章

  1. 初探CI,Github调戏Action手记——自动构建并发布

    前言 最近在做脚本的说明文档时使用了vuepress这个东西 前端实在是菜,只能随便写写了 正常写完md文件之后推送至github做版本控制 而前端页面的生成则是在本地,部署也是在本地手工进行 一套下 ...

  2. Github配合Jenkins,实现vue等前端项目的自动构建与发布

    本篇文章前端项目以vue为例(其实前端工程化项目的操作方法都相同),部署在Linux系统上(centos). 之前做前端项目的部署,一直都是手动运行打包命令,打包完.再使用FTP.Xshell等这类的 ...

  3. 2.使用jenkins自动构建并发布应用到k8s集群

    作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-06-21 14:39:01 星期五 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...

  4. 实战:向GitHub提交代码时触发Jenkins自动构建

    当我们提交代码到GitHub后,可以在Jenkins上执行构建,但是每次都要动手去执行略显麻烦,今天我们就来实战Jenkins的自动构建功能,每次提交代码到GitHub后,Jenkins会进行自动构建 ...

  5. 实现自动构建编译javaweb项目并发布到N台服务器

    前言 当你使用nginx实现了负载均衡,当你有了超过3台以上的应用服务器时,一个特别头疼的问题就来了,发布项目好麻烦. 你每次都要在本地编译打包一遍,然后手动复制到每一台服务器上面去,如果只有一两台服 ...

  6. 小伙伴想学Jenkins自动构建发布项目,我:安排上了!!

    写在前面 趁着十一长假,很多小伙伴都在悄悄学习,有些是为了能够顺利通过面试,进入大厂升职加薪.有些则是为了进一步巩固和提高自己的专业技能,希望有朝一日能过成为互联网架构师乃至技术专家.这不,就有小伙伴 ...

  7. hexo配合github action 自动构建(多种形式)

    已经使用HEXO正常构建GitHub页面 根据github action 给hexo配置自动部署github page 前往墨抒颖的个人网站查看纯净版 1. 为仓库设置访问密钥 第一步先生成密钥,打开 ...

  8. GitHub搭配使用Travis CI 进行自动构建服务

    Travis CI (Continuous Integration)持续集成服务 用处:自动监控软件仓库,可以在代码提交后立刻执行自动测试或构建 1.在Github自己的仓库根目录里添加.travis ...

  9. 利用Travis CI+GitHub实现持续集成和自动部署

    前言 如果你手动部署过项目,一定会深感持续集成的必要性,因为手动部署实在又繁琐又耗时,虽然部署流程基本固定,依然容易出错. 如果你很熟悉持续集成,一定会同意这样的观点:"使用它已经成为一种标 ...

随机推荐

  1. kb4019990 补丁导致wpf无法启动异常

     问题补丁:[Microsoft Update Catalog](https://www.catalog.update.microsoft.com/Search.aspx?q=kb4019990 )  ...

  2. IOS抓包工具Stream——让移动端的抓包变得轻而易举

    有一天下晚班回家,在地铁上的时候,开发发来信息说,能不能把之前创建的bug再抓包看下数据.顿时心里就想,在地铁上,我上哪抓包去.之后百度了下,发现ios有一款非常实用的抓包工具,大家可以上App St ...

  3. C# 基础知识系列- 3 集合数组

    简单的介绍一下集合,通俗来讲就是用来保管多个数据的方案.比如说我们是一个公司的仓库管理,公司有一堆货物需要管理,有同类的,有不同类的,总而言之就是很多.很乱.我们对照集合的概念对仓库进行管理的话,那么 ...

  4. P5663 加工零件 题解

    原题链接 简要题意: 给定一个图,每次询问从 \(x\) 节点开始,\(y\) 步能不能达到 \(1\) 号节点. 算法一 这也是我本人考场算法.就是 深搜 . 因为你会发现,如果 \(x\) 用 \ ...

  5. 【分布式锁】06-Zookeeper实现分布式锁:可重入锁源码分析

    前言 前面已经讲解了Redis的客户端Redission是怎么实现分布式锁的,大多都深入到源码级别. 在分布式系统中,常见的分布式锁实现方案还有Zookeeper,接下来会深入研究Zookeeper是 ...

  6. 什么是CPU load

    最近经常收到告警,CPU load大于阈值告警.查看系统的CPU是12核,告警阈值设置的是8.对于CPU load一直有个模糊的概念,具体是什么意思还真搞不明白,趁这个机会好好搞搞究竟. 1.查看CP ...

  7. python快速入门基础知识

    1.变量赋值与语句 #python 不需要手动指定变量类型.不需要分号 #To assign the value 365 to the variable days,we enter the varia ...

  8. [LeetCode] 936. Stamping The Sequence 戳印序列

    You want to form a `target` string of lowercase letters. At the beginning, your sequence is target.l ...

  9. LeetCode#1047-Remove All Adjacent Duplicates In String-删除字符串中的所有相邻重复项

    一.题目 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们. 在 S 上反复执行重复项删除操作,直到无法继续删除. 在完成所有重复项删除操作后返回最终的字符串.答案 ...

  10. Mac OSX安装 Django MySQL mysqlclient

    Python3.6 $ brew install mysql-connector-c # 如果没有安装brew,先安装:# 安装可以查看:https://www.cnblogs.com/Jokergu ...