无法在 Jenkins 管道的 docker 容器中运行 jasmine 测试用例

     2023-02-19     79

关键词:

【中文标题】无法在 Jenkins 管道的 docker 容器中运行 jasmine 测试用例【英文标题】:Could not run jasmine test case in docker container in Jenkins pipeline 【发布时间】:2020-09-14 09:51:23 【问题描述】:

我一直在尝试在基于node:10-alpine 构建的docker 容器中运行jasmine 测试以测试我用Angular 7 编写的UI 代码。我试图运行安装 chromium 和 puppeteer,但我的 chrome headless 似乎没有被捕获。我收到以下错误:

WARN [启动器]:ChromeHeadless 在 210000 毫秒内未捕获,正在杀死。

WARN [launcher]:ChromeHeadless 在 2000 毫秒内没有被杀死,发送 SIGKILL。 WARN [启动器]:ChromeHeadless 在 2000 毫秒内没有被 SIGKILL 杀死,> 继续。 npm 错误!代码生命周期 npm 错误!错误号 1

我也试过了:

增加 captureTimeout 和 browserNoActivityTimeout 添加了除“--no-sandbox”之外的更多标志,如下所示
customLaunchers: 


      ChromeHeadlessNoSandbox:
        base: "ChromeHeadless",
        flags: [
          "--no-sandbox",
          "--no-proxy-server",
          "--disable-web-security",
          "--disable-gpu",
          "--disable-dev-shm-usage",
          '--no-proxy-server',
          '--proxy-bypass-list=*',
          '--window-size=1920,1080',
          '--remote-debugging-port=9222'
        ]
      
    

我也加了

process.env.CHROME_BIN = require('puppeteer').executablePath(); 

在业力配置中

但一点运气都没有。谁能给我最好的解决方案?先谢谢了?

【问题讨论】:

【参考方案1】:

在挣扎了将近一周之后,我不知何故找到了解决办法。在我的 customLaunchers 中使用最少的配置,只有 "--no-sandbox" 标志并且没有 puppeteer,我能够通过正确设置以下环境变量在 docker 容器中运行我的 jasmine 测试用例:

CHROME_BIN=/usr/bin/chromium-browser and CHROME_PATH=/usr/lib/chromium/

以下是我在终端中运行以检查测试是否成功执行的命令:

docker run -e CHROME_BIN=/usr/bin/chromium-browser -e CHROME_PATH=/usr/lib/chromium/ -v path-to-project:/usr/src/app -w /usr/src/app dockerImage sh -c "apk add chromium && npm install && npm rebuild node-sass && npm run test:ci"

在我的 jenkins 文件中,我添加了以下行以在 Jenkins 管道中运行测试用例:

withEnv(["CHROME_BIN=/usr/bin/chromium-browser", "CHROME_PATH=/usr/lib/chromium/"]) 
   sh 'apk add chromium && npm install && npm run test:ci && npm run build'

【讨论】:

在 Jenkins Docker 代理中使用测试容器:容器无法启动,NoRouteToHostException

】在JenkinsDocker代理中使用测试容器:容器无法启动,NoRouteToHostException【英文标题】:UsingtestcontainersinaJenkinsDockerAgent:containersfailtostart,NoRouteToHostException【发布时间】:2019-09-0308:15:18【问题描述】:我正在使用带有Docker代理的Jenkin... 查看详情

在 docker 容器中运行 jenkins 代理,jenkins 管道和 /var/run/docker.socket 出现问题

】在docker容器中运行jenkins代理,jenkins管道和/var/run/docker.socket出现问题【英文标题】:Runjenkinsagentindockercontainer,issuewithjenkinspipelineand/var/run/docker.socket【发布时间】:2018-03-1320:18:39【问题描述】:我创建了用于詹金斯代理奴隶的... 查看详情

jenkins 管道脚本中 docker 容器的 if else 条件

】jenkins管道脚本中docker容器的ifelse条件【英文标题】:Ifelseconditionsfordockercontainerinjenkinspipelinescript【发布时间】:2021-01-1321:48:30【问题描述】:我在Jenkins中创建了一个管道,其步骤是:gitpull(从GitHub获取应用)构建(maven打包应... 查看详情

npm install 在 docker 的 jenkins 管道中失败

】npminstall在docker的jenkins管道中失败【英文标题】:npminstallfailsinjenkinspipelineindocker【发布时间】:2017-08-0206:18:53【问题描述】:我正在学习有关Jenkins管道的教程,我可以在节点6.10docker容器下获得一个“helloworld”。但是,当我将... 查看详情

jenkins管道部署容器化初探(代码片段)

目标服务器安装docker参考官方文档https://docs.docker.com/install/linux/docker-ce/centos/(可选)在目标服务器上安装docker私服https://docs.docker.com/registry/目标服务器启动jenkinsdocker镜像容器https://hub.docker.com/r/jenkinsci/blueocean/创建d 查看详情

无法让 Docker 在 Docker 之外与 ECS 中的 Jenkins 一起工作

】无法让Docker在Docker之外与ECS中的Jenkins一起工作【英文标题】:Can\'tgetDockeroutsideofDockertoworkwithJenkinsinECS【发布时间】:2019-06-1918:14:04【问题描述】:我正在尝试将JenkinsDocker映像部署到ECS并让docker-compose在我的管道内工作。为了... 查看详情

用于 Jenkins 管道的 Docker 插件 - uid 1005 不存在用户

】用于Jenkins管道的Docker插件-uid1005不存在用户【英文标题】:DockerPluginforJenkinsPipeline-Nouserexistsforuid1005【发布时间】:2017-07-1306:27:00【问题描述】:我正在尝试从Jenkins管道中的Docker容器内部执行SSH命令。我使用CloudBeesDockerPipelineP... 查看详情

Docker Windows 容器挂载命名管道

...:2017-12-2209:22:47【问题描述】:我正在尝试在容器中使用Jenkins并挂载命名管道来控制主机上的docker引擎。根据this博客文章,为此安装命名管道就足够了。但是,当我使用该挂载运行容器时,容器上没有打开命名管道,因此docker... 查看详情

在 Jenkins 中使用 docker Container 链接

】在Jenkins中使用dockerContainer链接【英文标题】:UsingdockerContainerlinksinJenkins【发布时间】:2021-06-2718:42:25【问题描述】:我正在尝试运行适用于数据库迁移脚本的CI系统。因此,这可能会阻止我们运行由于语法错误而在迁移时无... 查看详情

如何在声明性 Jenkins 管道中使用 Docker 的 --cache-from 构建标志?

】如何在声明性Jenkins管道中使用Docker的--cache-from构建标志?【英文标题】:HowdoIuseDocker\'s--cache-frombuildflaginadeclarativeJenkinspipeline?【发布时间】:2018-03-1605:42:46【问题描述】:我正在使用声明性Jenkinsfile在Docker容器内运行一些阶段... 查看详情

带有容器的 Jenkins Docker Sidecar 运行守护程序命令

】带有容器的JenkinsDockerSidecar运行守护程序命令【英文标题】:JenkinsDockerSidecarwithContainerRunningadaemoncommand【发布时间】:2019-04-2223:42:32【问题描述】:我想在我的管道中将ZAP作为代理运行,并通过代理运行我的selenium测试。我只... 查看详情

使用 Jenkins 声明性管道为 dockerfile 代理设置构建参数

】使用Jenkins声明性管道为dockerfile代理设置构建参数【英文标题】:SettingbuildargsfordockerfileagentusingaJenkinsdeclarativepipeline【发布时间】:2017-12-0123:18:15【问题描述】:我正在使用声明性管道语法在docker容器内执行一些CI工作。我注... 查看详情

如何在 Jenkins 管道中使用 SSH?

】如何在Jenkins管道中使用SSH?【英文标题】:HowdoIuseSSHinaJenkinspipeline?【发布时间】:2017-10-2911:07:15【问题描述】:我使用构建NPM项目的Jenkins管道模型定义定义了一些Jenkins作业。我使用Docker容器来构建这些项目(使用与只是Node.... 查看详情

使用 docker 代理了解 Jenkins 管道步骤

】使用docker代理了解Jenkins管道步骤【英文标题】:UnderstandingJenkinspipelinestepswithdockeragent【发布时间】:2019-03-3012:28:14【问题描述】:我正在尝试使用JenkinsPipelines设置自动化构建器/部署器作业。我已经设置了一个安装NodeJS和Gulp... 查看详情

jenkins容器中使用docker

参考技术A在项目中要使用jenkins实现自动化CI/CD功能,jenkins以docker容器方式运行,其中项目编译完要以docker方式构建image,上传到harbor私有仓库中。那jenkins容器中就要有docker运行环境以实现dockerbuildimages。我使用的官方的镜像文... 查看详情

在 Jenkins Pipeline 中访问本地运行的容器

】在JenkinsPipeline中访问本地运行的容器【英文标题】:AccessinglocallyrunningcontainerswithinJenkinsPipeline【发布时间】:2021-03-1220:10:28【问题描述】:我正在尝试使用Docker来运行Jenkins和Sonarqube。然后在Jenkins中,我想使用管道设置一个作... 查看详情

来自 AWS ECR 的 Jenkins 管道 Docker 代理

】来自AWSECR的Jenkins管道Docker代理【英文标题】:JenkinspipelineDockeragentfromAWSECR【发布时间】:2020-01-2509:26:55【问题描述】:我需要在Docker中作为代理执行Jenkins管道,Docker镜像位于AWSECR,如何通过AWSECR进行身份验证以为代理提取图... 查看详情

jenkins安装(docker)

安装步骤参考文档:​​安装Jenkins​​dockerrun\\-uroot\\-d\\-p8080:8080\\-p50000:50000\\-vjenkins-data:/var/jenkins_home\\-v/etc/localtime:/etc/localtime:ro\\-v/var/run/docker.sock:/var/run/docker.sock\\--restart=always\\jenkinsci/blueocean#自己构建镜像RUN的时候就把时区... 查看详情