概念

GitHubActions是GitHub于2018年10月推出的持续集成服务。

这么何谓持续集成呢?

持续集成

持续集成(Continuousintegration),也就是我们常常说的CI。它是一种软件开发实践,可以让团队在持续的基础上收到反馈并进行改进,毋须等到开发后期才寻觅和修补缺陷,常运用于软件的敏捷开发中。Jenkins就是我们常用的持续集成平台工具。

理解了持续集成的概念以后,下边我简单讲一下使用持续集成的益处:

Actions

相比较持续集成这个大概念,GitHub推出的Actions就变得十分轻量和巧妙了。Actions就相当于持续集成中的某个特定功能的,通过多个actions的自由组合,便可实现自己特定功能的持续集成服务。

同时ubuntu github 使用虚拟主机 linux,Github为了便捷你们使用Actions,还专门做了一个Actions市场,真的是十分便捷!

ubuntu github 使用_使用英语怎么说_使用灭火器对准火焰的什么部位

GitHubActions有一些自己的术语:

workflow文件

GitHubActions的配置文件称作workflow文件,储存在代码库房的.github/workflows目录,如右图所示:

ubuntu github 使用_使用英语怎么说_使用灭火器对准火焰的什么部位

workflow文件采用YAML格式ubuntu github 使用,文件名可以任意取,而且后缀名统一为.yml,例如上图的package.yml。

workflow文件的配置数组特别多,详见官方文档。下边是一些基本数组:

Actions的应用怎样使用Action发布flutter插件

之前我写过一篇《FlutterPlugin插件开发填坑手册》,讲的就是怎么开发一个flutter插件并进行发布。但因为我们发布插件到flutter插件平台须要访问内网,并且还须要给终端设置代理,所以每次的发布都十分的麻烦。

一个碰巧的机会,我就在Action市场中发觉了一个publish-dart-flutter-package插件,可以一键把自己的插件发布到flutter插件平台,如下:

name: Pub Publish plugin
on: workflow_dispatch
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v1
      - name: Publish
        uses: sakebook/actions-flutter-pub-publisher@v1.3.0
        with:
          credential: ${{ secrets.CREDENTIAL_JSON }}
          flutter_package: true
          skip_test: true
          dry_run: false

其实你也可以参考我的flutter_xupdate,它就是借助这个Action进行发布的。

这儿我们可以看见,我们定义的触发条件是workflow_dispatch,也就是自动触发任务执行:须要我们点击Runworkflow=>选择master分支=>点击Runworkflow,如右图所示:

使用英语怎么说_使用灭火器对准火焰的什么部位_ubuntu github 使用

这儿我们注意到定义了一个secrets.CREDENTIAL_JSON常量,也就是我们的google帐号认证证书,这儿须要我们在项目的Settings=>选择Secrets=>点击Newrepositorysecret来创建一个属性名为CREDENTIAL_JSON的常量。对应的值你可以到你的用户Home目录下的.pub-cache文件夹下找到credentials.json文件。

ubuntu github 使用_使用英语怎么说_使用灭火器对准火焰的什么部位

右图是我执行了一次发布action的结果,只需2分钟,无需科学上网工具和给终端配置代理,即可完成flutter插件的发布,真的是十分便捷!

使用英语怎么说_ubuntu github 使用_使用灭火器对准火焰的什么部位

怎样使用Action打包apk

作为一名Android开发,你有没有想过每次递交代码或则发布版本的时侯,github才能对应帮你手动打包出一个apk?

这样你既可以省去打包apk的时间,还免去了应用包的管理,岂不悲哉?

这么我们应当怎样做呢?下边就是我实现的一个workflow脚本,主要的功能就是:在递交代码或则发布版本的时侯,手动建立脚本打包出apk,同时直接上传至Artifacts储存。

name: Android CI
on:
  release:
    types: [published]
  push:
    branches:
      - master
    tags:
      - '2.*'
  pull_request:
    branches:
      - master

使用灭火器对准火焰的什么部位_使用英语怎么说_ubuntu github 使用

jobs:   build:     runs-on: ubuntu-latest     steps:       - uses: actions/checkout@v2       - name: set up JDK 1.8         uses: actions/setup-java@v1         with:           java-version: 1.8       - name: release apk sign         run: |           echo "给apk增加签名"           cp $GITHUB_WORKSPACE/.github/workflows/android.keystore $GITHUB_WORKSPACE/app/android.keystore           sed '$aRELEASE_STORE_FILE=./android.keystore'          $GITHUB_WORKSPACE/gradle.properties -i       - name: build with gradle         run: |           echo "开始进行release构建"           chmod +x gradlew           ./gradlew app:assembleRelease

ubuntu github 使用_使用英语怎么说_使用灭火器对准火焰的什么部位

      - name : upload apk         uses: actions/upload-artifact@master         if: always()         with:           name: xupdate_apk           path: ${{ github.workspace }}/app/build/outputs/apk/release

详尽配置可以参考我的XUpdate中的配置。

这儿我们可以看见,我们定义的触发条件是release,push和pull_request,触发的分支是master,tags是2.*开头的。

整个任务主要分为4个步骤:

最后执行的疗效如下:

怎样使用Action来还击白嫖党

我在做开源项目的时侯,常常才能见到一些个无名大号(白嫖党),项目看都不看就提一些没有任何价值的issues,之后你好心好意地回复了,他却消失不见了...真的是让人恨得牙搔痒的!

是的,你没有看错,Action竟然还可以拿来还击白嫖党!这也是之前我在逛鹈鹕的时侯碰巧听到一篇文章《❌对白嫖怪SAYNO!!!——如何在GitHub上制止卑鄙白嫖》发现的。

这么他是如何做的呢?虽然也很简单,就是设置触发的条件是issues的创建,在创建的时侯去查询一下issues的创建者是否star或则fork了该库房linux伊甸园,假如满足条件则不做处理,否则将手动锁住并关掉issues。

其实,那位作者也是把这个特别骚的Action弄成了一个插件,插件的地址是:,使用上去十分简单。

以下是我简单使用的脚本案例:

name: No Free usage issue checker

使用灭火器对准火焰的什么部位_ubuntu github 使用_使用英语怎么说

on:   issues:     types: [opened, reopened] jobs:   build:     runs-on: ubuntu-latest     steps:       - uses: actions/checkout@v2       - name: Check issue actor         uses: fluttercandies/no-free-usage-action@v1.0.1         with:           token: ${{ secrets.GITHUB_TOKEN }}  # 由GitHub提供的临时Token,必须在此处进行传递,且必须为这个值。           forked: '--no-forked'           words:  To support our project, please file the issue after you starred the repo. Thanks! 

这儿,我设置的触发条件是issues的打开和重新打开风波,设置不强制fork,而且须要star。当一只野生的白嫖党出没并在你的项目上提issues的时侯,才会触发右图的疗效:

使用英语怎么说_使用灭火器对准火焰的什么部位_ubuntu github 使用

见到上图的疗效,是不是倍感很惊喜,很剌激?你以为你做白嫖党我就没有办法治你?哈哈,给我老实点!

最后

都听到这里了,还不赶快三连支持一下,莫非你也想做白嫖党吗?

本文原创地址://q13zd.cn/usysrjxgqlqq.html编辑:刘遄,审核员:暂无