概念
GitHubActions是GitHub于2018年10月推出的持续集成服务。
这么何谓持续集成呢?
持续集成
持续集成(Continuousintegration),也就是我们常常说的CI。它是一种软件开发实践,可以让团队在持续的基础上收到反馈并进行改进,毋须等到开发后期才寻觅和修补缺陷,常运用于软件的敏捷开发中。Jenkins就是我们常用的持续集成平台工具。
理解了持续集成的概念以后,下边我简单讲一下使用持续集成的益处:
Actions
相比较持续集成这个大概念,GitHub推出的Actions就变得十分轻量和巧妙了。Actions就相当于持续集成中的某个特定功能的,通过多个actions的自由组合,便可实现自己特定功能的持续集成服务。
同时ubuntu github 使用虚拟主机 linux,Github为了便捷你们使用Actions,还专门做了一个Actions市场,真的是十分便捷!
GitHubActions有一些自己的术语:
workflow文件
GitHubActions的配置文件称作workflow文件,储存在代码库房的.github/workflows目录,如右图所示:
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,如右图所示:
这儿我们注意到定义了一个secrets.CREDENTIAL_JSON常量,也就是我们的google帐号认证证书,这儿须要我们在项目的Settings=>选择Secrets=>点击Newrepositorysecret来创建一个属性名为CREDENTIAL_JSON的常量。对应的值你可以到你的用户Home目录下的.pub-cache文件夹下找到credentials.json文件。
右图是我执行了一次发布action的结果,只需2分钟,无需科学上网工具和给终端配置代理,即可完成flutter插件的发布,真的是十分便捷!
怎样使用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
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
- 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
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的时侯,才会触发右图的疗效:
见到上图的疗效,是不是倍感很惊喜,很剌激?你以为你做白嫖党我就没有办法治你?哈哈,给我老实点!
最后
都听到这里了,还不赶快三连支持一下,莫非你也想做白嫖党吗?
本文原创地址://gulass.cn/usysrjxgqlqq.html编辑:刘遄,审核员:暂无