开始使用Github Actions。用Maven在Java项目中运行JUnit 5测试

Github Actions是由Github提供的CI/CD服务,它对公共仓库是免费的。对于私有仓库,每个GitHub账户都能获得一定的免费时间和存储空间,这取决于账户使用的产品。

在这篇博文中,你将学习如何为基于Maven的Java项目运行JUnit 5测试创建一个简单的工作流,以及如何在README.md文件中添加构建状态徽章。

这是Ewelina Fiedorowicz的客座文章,她是一位雄心勃勃的初级Java程序员,对新技术持开放态度,渴望接受新挑战。

目录

问题

在每个push ,用Maven在Java项目中运行JUnit 5测试,并缓存下载的依赖项,以加快后续运行速度。

解决方案

TL;DR

完整的工作流程,由一个包含四个步骤的工作组成,用于在Java项目中用Maven运行JUnit测试的自动化过程。

name: tests
on: push
jobs:
  run_tests:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout the repository
        uses: actions/checkout@v2
      - name: Set up JDK 14
        uses: actions/setup-java@v1
        with:
          java-version: 14
      - name: Cache Maven packages
        uses: actions/cache@v2
        with:
          path: ~/.m2
          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
          restore-keys: ${{ runner.os }}-m2
      - name: Run tests with Maven
        run: mvn -B test --file pom.xml
复制代码

工作流语法介绍

工作流文件使用YAML语法,扩展名为.yml.yaml 。所有工作流文件都必须放在项目根部的.github/workflows 目录中。

你可以创建自己完全定制的工作流,也可以使用Github社区提供的动作。你可以在Github Marketplace中找到它们)。

工作流程由以下部分组成。

  • name (可选):一个工作流名称,将显示在版本库的动作页面上。
  • on (必需的):一个触发工作流的事件( , , , 等等)。你可以指定一个或多个事件,也可以定义要运行的分支或标签。工作流也可以使用cron语法进行调度。push pull request page build
  • env (可选):环境变量。它们可以为整个工作流程、单个工作或某个步骤设置。建议使用Github Secrets来向工作流传递令牌或秘密。秘密是加密的环境变量,只暴露给选定的行动。

Github Actions文档中了解更多关于存储秘密的信息。

  • jobs (至少需要一个):它是一个要在运行器上执行的实际任务列表。每个工作必须有一个唯一的标识符,并可能包括几个属性,例如。
    • runs-on (需要):你可以选择一种机器来运行任务(Windows、Linux或macOS)或你自己的运行器。
    • steps:一连串的任务。每个步骤可以是一个简单的shell命令,也可以是一个由各种步骤组成的行动。一个动作可以在你自己的资源库、任何其他公共资源库或Docker注册表中定义。有些动作需要输入,可以使用with 关键字来传递。

工作流程的语法可以在Github Actions文档中找到。

第1步:签出版本库

第一步是签出版本库。为了做到这一点,请使用checkout 动作。

- name: Checkhout the repository
  uses: actions/checkout@v2
复制代码

第2步:设置JDK 14

要配置 Java 环境,使用setup-java 动作。您可以选择各种Java版本,包括major、minor和early access。

- name: Set up JDK 14
  uses: actions/setup-java@v1
  with:
    java-version: 14
复制代码

第3步:缓存Maven包

使用Github社区提供的cache 动作来缓存下载的依赖项和构建输出。Path参数定义了要缓存或恢复的运行器上的文件路径。Key参数用于搜索缓存。如果没有匹配,将创建一个新的缓存条目,并在路径目录下用所提供的密钥保存。Restore-keys参数是可选的,包含一个备选密钥的列表。

- name: Cache Maven packages
  uses: actions/cache@v2
  with:
    path: ~/.m2
    key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
    restore-keys: ${{ runner.os }}-m2
复制代码

第四步:用Maven运行测试

最后,使用mvn 命令来运行测试。

- name: Test with Maven
  run: mvn -B test --file pom.xml
复制代码

徽章

README.md文件中添加徽章是一种很好的方式,可以向版本库访问者展示你的项目构建正确,所有测试都通过了。

要获得一个工作流的徽章,只需将以下URL中的占位符替换为相关信息。注意,<WORKFLOW_NAME>是在.yml文件的第一行定义的名字,它不一定是文件名。

https://github.com/<OWNER>/<REPOSITORY>/workflows/<WORKFLOW_NAME>/badge.svg
复制代码

要在项目中添加一个徽章,请按以下方式包好徽章的链接,并粘贴在README.md文件的顶部。

![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2a86718351e4445dbb9ec55879512512~tplv-k3u1fbpfcp-zoom-1.image)
复制代码

徽章将在提交和推送更改到版本库后出现。

总结

工作流成功触发后,你会在Github仓库的行动页面中看到日志和结果。Github Actions使用退出代码来定义一个动作是通过还是失败。任何非零的退出代码都被认为是失败。

源代码

这篇文章的源代码可以在Github上找到。

参考文献

猜你喜欢

转载自juejin.im/post/7125708677746540575