在这篇文章中,我们将向您展示如何创建交付流水线并实现以下目标:
- 使用Web应用程序构建Docker镜像
- 在Docker容器中运行该应用程序
- 从不同的容器中使用Maven运行Selenium测试
出于本文演示目的,我们将使用托管在GitHub上的Java示例项目: github.com/buddy-red/node-maven-selenium-tests进行演示。
流水线流程
每次更改存储仓时,流水线将执行以下任务:
- 构建Web应用程序的Docker镜像
- 运行3个Docker容器:
- 上一个操作中生成镜像的容器
- Selenium服务器容器
- 带有将运行测试的Maven容器
- 根据测试,流水线将给出以下两个结果:
- [测试通过] 推送镜像至Docker注册中心 & 运行镜像于服务器
- [测试失败] 通过Slack给团队发送通知
流水线配置
首先,我们需要在GitHub源代码存储仓库中对Buddy系统进行帐户身份验证:
接下来,我们新添一条流水线,并将其配置为在每次推送到主分支时自动运行:
操作
我们指定了流水线的目标分支和触发条件,是时候添加将运行任务的操作了。
构建Docker镜像
在操作列表中Docker部分找到如下图的构建镜像
定义Dockerfile和相关联环境(如果它与包含Dockerfile的目录不同)。在本例中是front
:
使用Maven配置Selenium测试
随着Docker镜像的构建和等待,我们需要一个操作来运行测试。在构建工具 & 任务运行部分找到Maven操作或者在搜索框中直接搜索Maven:
输入将运行测试的命令,例如:mvn clean install
:
现在,我们需要在服务标签页中添加两个微服务,这些本质上是附加并链接到主构建容器的Docker容器。
- 第一个应该是适用于您的浏览器类型的Selenium服务。在这个例子中,我们将使用Selenium Chrome:
- 现在,单击**+加号按钮附加另一个,然后选择Custom**自定义服务。将其配置为使用我们在上一步中构建的Docker容器:
确保设置应用程序将在其上运行的端口(本例为
80
)。这样在应用程序成功启动之前,Maven不会启动测试。
配置Selenium
配置后