转载

使用 Maven 运行单元测试

Gitlab 除了基本的版本管理功能之外,还提供了很有用的持续集成能力,简单的在项目根目录中编写一段 .gitlab-ci.yml ,就能够让 Gitlab 按照其中的指示完成持续集成的工作。

Gitlab CI/CD 是 Gitlab 的一个组件,它利用 Gitlab Runner 来执行具体的构建任务。

Gitlab Runner 和 Gitlab 主程序一样,提供了 Helm chart 用于进行安装,同样可以用 helm fetch 下载 Chart 进行定制和渲染:

helm fetch --untar gitlab/gitlab-runner

根据官方文档介绍,Runner 的安装有两个必要参数:

gitlabUrl
runnerRegistrationToken

另外还有一个即将用到的重要参数: runners.image 这个参数可以用来指定 Runner 的基础镜像,以满足不同环节中对 Runner 的需求。

例如为了构建 Java 应用,我们创建一个 Maven 的 Runner。Gitlab 地址我们已经知道了,接下来获取一个 Token,用浏览器打开 /admin/runners ,可以查看:

使用 Maven 运行单元测试

我们使用这个 Token,创建一个基于 maven:alpine 的 Runner:

$ helm template gitlab-runner /
--namespace gitlab /
--name java /
--set gitlabUrl="https://gitlab.microservice.rocks" /
--set runnerRegistrationToken="xgX4QEt8gklFGSOFu0FURTzfvticEQmqaa3cnosMmoxc1nacYSIMBniRmBgACn19" /
--set rbac.create=true /
--set runners.image="maven:alpine" /
--set runners.tags="java/,maven" /
--set runners.privileged=true | kubectl appy -f
secret/java-gitlab-runner created
configmap/java-gitlab-runner created
serviceaccount/java-gitlab-runner created
deployment.extensions/java-gitlab-runner created
role.rbac.authorization.k8s.io/java-gitlab-runner created
rolebinding.rbac.authorization.k8s.io/java-gitlab-runner created

创建成功之后,打开页面 /admin/runners ,会看到其中列出了我们新建的 Runner:

使用 Maven 运行单元测试

点击 Runner ID,可以看到详细信息,也可以进行修改。

Runner 运行起来之后,我们可以尝试建立一个项目,使用 Runner 来针对每次提交,运行一次单元测试。

访问 projects/new 创建一个新项目,命名为 sample

使用 Maven 运行单元测试

创建完成之后,进入项目的主页面:

使用 Maven 运行单元测试

这里点击 clone 按钮,会看到弹出的项目 git 地址,我们使用这个地址对项目进行初始化。

$ git clone git@gitlab.microservice.rocks:root/sample.git
正克隆到 'sample'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
接收对象中: 100% (3/3), 完成.

这里我们使用来自 Junit 5 Sample 中的 Maven 示例来尝试 CI。

$ cd sample
$ wget https://github.com/junit-team/junit5-samples/archive/master.zip
...
$ unzip master
$ mv junit5-samples-master/junit5-jupiter-starter-maven/* .
$ rm master.zip
$ rm -Rf junit5-samples-master

接下来创建如下内容的文件,命名为 .gitlab-ci.yaml

stages:
  - scan
  - build
job unit:
  stage: scan
  tags:
    - maven
  script:
    - mvn test

Git 添加并提交,返回浏览器,查看项目首页,会发现多出一行内容:

这表示项目的 CICD 正在运行。稍候片刻,浏览 root/sample/pipelines ,会看到执行的 Pipeline 列表,我们最近的提交,Pipeline 结果已经显示为成功,点击后能够看到每个 Job 的执行记录:

使用 Maven 运行单元测试

如果我们修改一下测试案例 src/test/java/com/example/project/CalculatorTests.java ,把其中的 34 行修改为 1011 或者其它的错误结果,就会看到测试失败的情况。

如果新建分支,并在分支中修复测试案例的话,会在 MR 中看到单元测试的结果,帮助管理员判断 Merge Request 的合并请求是否合理:

使用 Maven 运行单元测试

原文  http://mp.weixin.qq.com/s?__biz=MzIxMDY5ODM1OA==&mid=2247484684&idx=1&sn=9a0a48027f347d7cc1a0665244be20cb
正文到此结束
Loading...