【问题标题】:Run gauge tests inside a docker container在 docker 容器内运行仪表测试
【发布时间】:2019-10-07 22:04:03
【问题描述】:

我正在尝试 Dockerize 一个 Gauge 测试自动化项目,以便我可以在 Docker 容器中运行规范。该项目是用 Java 和 Spring Boot 编写的。

我在 Gauge 文档中看到了这个 tutorial

这是教程中的 DockerFile:

FROM ubuntu

# Install Java.
RUN apt-get update && apt-get install -q -y \
    openjdk-8-jdk \
    apt-transport-https \
    gnupg2 \
    ca-certificates

# Install gauge
RUN apt-key adv --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys 023EDB0B && \
    echo deb https://dl.bintray.com/gauge/gauge-deb stable main | tee -a /etc/apt/sources.list

RUN apt-get update && apt-get install gauge

# Install gauge plugins
RUN gauge install java && \
    gauge install screenshot

ENV PATH=$HOME/.gauge:$PATH

如您所见,DokcerFile 中没有“ADD”/“COPY”。

是否只是建议在主机上安装 Gauge 和其他软件包的替代方法?

关于如何在 Docker 容器中运行规范有什么想法吗?

【问题讨论】:

  • 没有ADD,因为期望用户将项目目录作为卷挂载到来宾上。例如:docker run -v pwd:/<project_directory> -w=”/<project_directory>” test gauge run specs。参考:docs.gauge.org/howto/ci_cd/…
  • @SrikanthVenugopalan 这是否意味着,您需要 docker 容器和机器上可用的项目目录,以便您可以运行规范?我正在尝试对整个项目进行 dokerize。
  • 我将更新问题以使其更具体。
  • 是的,文档中的 docker 说明是指通过将它们安装为卷来构建一个具有仪表和依赖项的环境,该环境可以运行多个项目。我不建议在容器中运送项目,因为您必须为每次更改构建映像!此外,如果您挂载卷,您可以访问主机中的报告/日志(在容器被杀死之后)。
  • @Alireza - 用 alpine 替换 ubuntu 仍然可以达到目的,并使图像轻量级。

标签: java docker dockerfile gauge getgauge


【解决方案1】:

这是我为在 docker 容器中运行测试所做的工作。

我在项目结构中的 src 旁边有一个 specs 文件夹,这意味着仪表测试将使用 JAR 文件运行,但它们本身不是 JAR 文件的一部分。

--MyProject
----specs
----src
...

我使用 maven 在容器内运行测试。这就是为什么我更喜欢在容器内构建项目的原因,因此我可以使用与运行测试相同的 maven 版本准备好 JAR 文件。

这里是 DockerFile。我开发了一个 bash 脚本来运行测试。您可以使用 CMD 或 ENTRYPOINT 运行脚本:

FROM maven:3.6.1-jdk-8

# add any project resources needed
ADD env /home/e2e/env
ADD specs /home/e2e/specs
ADD src /home/e2e/src
ADD src/main/scripts/entrypoint.sh /home/e2e/
ADD pom.xml /home/e2e/

RUN ["chmod", "+x", "./home/e2e/entrypoint.sh"]

# Install Gauge, web browser and webdriver in your preferred way...

ENV PATH=$HOME/.gauge:$PATH
# I'm keeping the cntainer running. But it's all up to you.
CMD /home/e2e/entrypoint.sh && tail -f /dev/null

然后是简单的 entrypoint.sh 脚本:

#!/bin/bash
cd /home/e2e/
mvn clean package
gauge --version
google-chrome --version
mvn -version
mvn gauge:execute -DspecsDir=specs/myTest.spec

当然,您可以只使用现成的 JAR,而不是在容器内构建它。或者您可以在创建 docker 映像时构建 JAR。

【讨论】:

    最近更新 更多