有人可以指出我的 Dockerfile 有什么问题吗?另外,请告知如何将此文件转换为Alpine Linux


> [ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project myproject: Failed to clean project: Failed to delete /home/automation/myproject/target/generated-test-sources/test-annotations -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project myproject: Failed to clean project: Failed to delete /home/automation/myproject/target/generated-test-sources/test-annotations
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to clean project: Failed to delete /home/automation/thanos/target/generated-test-sources/test-annotations
    at org.apache.maven.plugin.clean.CleanMojo.execute (CleanMojo.java:215)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: java.io.IOException: Failed to delete /home/automation/myproject/target/generated-test-sources/test-annotations
    at org.apache.maven.plugin.clean.Cleaner.delete (Cleaner.java:249)
    at org.apache.maven.plugin.clean.Cleaner.delete (Cleaner.java:191)
    at org.apache.maven.plugin.clean.Cleaner.delete (Cleaner.java:158)
    at org.apache.maven.plugin.clean.Cleaner.delete (Cleaner.java:158)
    at org.apache.maven.plugin.clean.Cleaner.delete (Cleaner.java:117)
    at org.apache.maven.plugin.clean.CleanMojo.execute (CleanMojo.java:193)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
The command '/bin/sh -c cd /home/automation/myproject/ && mvn clean test-compile -e' returned a non-zero code: 1

我需要在Docker容器中执行Selenium测试。我知道Selenium提供集线器和节点容器,但我必须编写自己的Dockerfile,它将构建一个容器,该容器将在没有网格配置的情况下执行测试。基本上,由于某种原因,我无法使用网格。我写了一个Dockerfile。它在构建阶段失败,并说无法清理项目。

我尝试在不添加任何用户的情况下打开火狐和 chrome,即尝试通过 root 用户执行,但它不起作用。然后我添加了一个用户,但它仍然不起作用。看起来权限已授予。请指出我哪里需要许可,哪一个是?下面是我的 Dockerfile。

FROM ubuntu:latest
LABEL name="Project short intro" 
            author="TAFSEER HAIDER" 
            version="1.0" 
            description="my project description"
# Install Java JDK8, Maven, and Wget
RUN apt-get update 
    && apt-get install firefox  -y 
    && apt-get -y install openjdk-8-jdk 
    && apt-get install -y maven 
    && apt-get install -y wget 
    && apt-get clean 
    && rm -rf /var/lib/apt/lists/ /tmp/* /var/tmp/*

# Install Chrome
RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
RUN dpkg -i google-chrome-stable_current_amd64.deb; apt-get -fy install
# Add a user for running applications.
RUN apt-get update && apt-get install sudo -y 
    && adduser --disabled-password --gecos '' automation 
    && adduser automation sudo 
    && echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 
    && apt-get clean 
    && rm -rf /var/lib/apt/lists/ /tmp/* /var/tmp/* 
USER automation
# Copy myproject project to the specified directory in containerized Ubuntu Linux
COPY . /home/automation/myproject/

# Set working directory
WORKDIR /home/automation/myproject/
# Clean & compile myproject
RUN cd /home/automation/myproject/ && mvn clean test-compile -e
# Execute tests on microservices and fronted GUI by specifying the required test suite file
CMD ["mvn", "failsafe:integration-test", "-DtestSuite=frontend.xml"]

它应该在无头模式下执行我的测试。

看起来您的automation用户没有Linux写入权限,因此他无法在Maven clean阶段删除target文件夹

更改此行:

COPY . /home/automation/myproject/

对此:

COPY --chown=automation . /home/automation/myproject/

我也没有在您的 Dockerfile 中看到任何真实或虚拟的显示配置,希望您将headless参数传递给浏览器初始化,否则您的测试将不起作用。

此外,请确保遵循并行测试 - 最佳实践,特别是:

  • 使用 ThreadLocal 来保存您的 WebDriver 实例和变量,这些变量不是全局的,也不是跨线程共享的
  • 避免使用静态方法和字段
  • 确保您的测试是独立、可重复和稳定的
可能是

您的自动化用户无权删除某些文件,我看到您使用自动化用户上下文来复制文件

COPY . /home/automation/myproject/

但是我在文件夹/主页/自动化/灭霸上看到了另一个错误....

Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to clean project: Failed to delete /home/automation/thanos/target/generated-test-sources/test-annotations

您可以尝试更改用户的所有权或文件权限

chown -R $YOUR_USER /home/automation/

最新更新