
点击上方蓝字关注我们

暑期2021项目研发正在火热进行中,开源之夏公众号面向广大社区及项目承担学生征稿,欢迎大家热情分享:
发送投稿文章至官方联络邮箱:
summer@iscas.ac.cn
添加公众号小编微信投稿:

本期分享来自 Apache APISIX 社区的刘乔升同学(优化 Dashboard 中 GitHub Action 质量与速度)的项目经验分享。
入门
使用
首先创建一个包含 Spring Boot 项目的GitHub 仓库
在根目录下创建 .github/workflows 文件夹。这个文件夹下的 *.yaml 文件会被 GitHub 识别为一个工作流。
在这里创建一个简单的工作流。
name: "Maven Test"#工作流的名称on:push:branches:- master# 这个工作流在push到master分支时触发jobs:test:name: Testruns-on: ubuntu-latest# 在ubuntu-latest环境中运行steps:- uses: actions/checkout@v2# 把该仓库checkout到运行环境中- uses: actions/setup-java@v2with:java-version: "11"distribution: "adopt"# 设置java11环境,附带maven- run: mvn test# 执行`mvn test`命令
保存文件,commit 并push 到 GitHub 上后,可以在仓库页面的 Actions 页下看到执行结果,之后每次 push 都会执行测试。

接下来我们继续完善这个工作流。我们希望在测试通过以后,能够自动构建 jar 包并供下载。 我们在工作流中增加一个阶段:
name: "Maven Test"on:#...jobs:test:#...package:name: Package and Uploadruns-on: ubuntu-latestneeds: test# 等待test阶段完成if: ${{ needs.test.result == 'success' }}# 如果test通过,则执行packagesteps:- uses: actions/checkout@v2- uses: actions/setup-java@v2with:java-version: "11"distribution: "adopt"- run: mvn package -DskipTests- uses: actions/upload-artifact@v2with:name: demo.jarpath: target/demo-*.jar# 上传target/demo-*.jar文件,并命名为demo.jar
同样 push 到 GitHub 上。可以看到 test 运行完成后执行了 package,并且可以下载构建的demo.jar。

优化
根据变更文件的目录运行任务
name: "Maven Test"on:push:branches:- masterpaths:- src/**- pom.xml# 只在src下的文件或pom.xml变更时触发jobs:# ...
缓存依赖和构建结果
# ...jobs:test:name: Testruns-on: ubuntu-lateststeps:- uses: actions/checkout@v2- uses: actions/setup-java@v2with:java-version: "11"distribution: "adopt"- uses: actions/cache@v2with:path: ~/.m2key: ${{ hashFiles('pom.xml') }}# 缓存~/.m2目录,key为pom.xml的hash值- run: mvn test# ...
重用流水线结果

文章转载自开源之夏,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




