赞
踩
这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党
GitHub Actions是GitHub提供的一种持续集成/持续交付(CI/CD)工具,它可以帮助开发者自动化软件开发流程中的各种任务,如构建、测试、部署等。通过在代码仓库中配置和定义工作流程(Workflow),GitHub Actions可以在特定的事件触发时执行一系列的操作
这么解释有点官方。最简单只直观的解释就是我们每次提交一些大型开源项目的时候,就会有一个这个玩意
就是你定义一些规则,比如在给master 提交代码或者pr的时候就触发一些单元测试之类的ci等。
本次我们的目标是实现一个提交pr自动触发运行单元测试的功能
项目源码:https://github.com/weihubeats/spring-boot-nebula
在github
自己仓库创建一个.github/workflows
目录。
这样在.github/workflows
下的yml
文件会被自动识别为action
,然后会根据我们定义为规则运行这个action
# action name name: Test with Junit # 什么时候触发这个workflow on: # push 到master分之的时候 这里可以指定多个 push: branches: - master # pull request 到master分之的时候, 这里可以指定多个 pull_request: branches: - master # 一个workflow可以由多个job组成,多个job可以并行运行 jobs: junit: strategy: matrix: # 指定jdk 版本。可以指定多个版本 比如[8,11,17] java: [11] # 指定运行 os 版本 也是多个 os: [ 'windows-latest', 'ubuntu-latest' ] # 运行环境,这里就是上面定义的多个 os runs-on: ${{ matrix.os }} steps: # 将job的工作目录指向$GITHUB_WORSPACES checkout@v2比较旧不推荐使用 - name: Checkout codes uses: actions/checkout@v3 # 设置jdk环境 - name: Set up JDK ${{ matrix.java }} uses: actions/setup-java@v3 with: distribution: 'temurin' java-version: ${{ matrix.java }} # 设置maven 仓库缓存 避免每次构建时都重新下载依赖 - name: Cache local Maven repository uses: actions/cache@v3 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-maven- - name: Test with Maven run: mvn clean test -B -U
不带注释的源码可以在这里下载:https://github.com/weihubeats/spring-boot-nebula/blob/master/.github/workflows/junit_test.yml
这里我简单写一个pr然后提交看会不会自动触发action
可以看到自动触发了maven的test
我这里故意写一个不会通过的单测
提交后马上出发了test
。这里有代码冲突我们先不管
可以看到马上就是ci test失败了。这样就能增加我们项目稳定性
注意maven-surefire-plugin
不要配置<skipTests>true</skipTests>
总的来说不管是开源项目还是私有项目,想要项目更稳定,可能还是需要各种单元测试来保证的。
这次我们只是配置了单元测试,实际有大量场景需要集成测试,后续有空再研究下集成测试吧
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。