【问题标题】:TypeScript SonarQube Scan in Docker ContainerDocker 容器中的 TypeScript SonarQube 扫描
【发布时间】:2018-10-09 09:25:25
【问题描述】:

我正在尝试通过 Jenkins 管道构建我的 TypeScript 应用程序。为了管理构建、测试和代码质量扫描,我让 Jenkins 使用基于 node:7-alpine 的 Docker 代理。

我的容器的 Dockerfile 是:

FROM node:7-alpine

RUN npm install -g gulp sonarqube-scanner 

我的 Jenkins 文件如下所示:

pipeline {
   agent {
      dockerfile { dir 'build-image' }
   }
    stages {
        stage('Build') {
            steps {
                  sh 'npm install'
                  sh 'npm run build'
            }       
        }
        stage("SonarQube Analysis") {
           steps{
              sh 'gulp sonar'
           }
        }

在声纳运行之前一切似乎都正常。当它运行时出现错误:

[-47-get-web-client-building-LUNCQQ5SQOUXXUXPT5TJDVBCFON3OPD2COBIW6WPU3J3ZRFFTYJQ] 运行shell脚本

  • gulp 声纳

[03:00:14] 使用 gulpfile /var/jenkins_home/workspace/-47-get-web-client-building-LUNCQQ5SQOUXXUXPT5TJDVBCFON3OPD2COBIW6WPU3J3ZRFFTYJQ/gulpfile.js

[03:00:14] 开始“声纳”...

[03:00:14] 开始 SonarQube 分析...

[03:00:14] 检查可执行文件是否存在: /home/node/.sonar/native-sonar-scanner/sonar-scanner-3.0.3.778-linux/bin/sonar-scanner

[03:00:14] 找不到可执行文件 '/home/node/.sonar/native-sonar-scanner'.

[03:00:14] 继续下载平台二进制文件 SonarQube 扫描仪...

[03:00:14] 创建 /home/node/.sonar/native-sonar-scanner

[03:00:14] 下载自 https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.0.3.778-linux.zip

[03:00:14](可执行文件将保存在缓存文件夹中: /home/node/.sonar/native-sonar-scanner)

/home/node/.sonar/native-sonar-scanner/sonar-scanner-3.0.3.778-linux/bin/sonar-scanner: 执行:第 73 行: /home/node/.sonar/native-sonar-scanner/sonar-scanner-3.0.3.778-linux/jre/bin/java: 没找到

child_process.js:504

throw err;

^

我只使用了 node:7-alpine 容器,我得到了同样的错误。奇怪的是容器有 java 可执行文件,但似乎无法识别:

【问题讨论】:

    标签: docker sonarqube-scan


    【解决方案1】:

    我对此进行了更多研究,我认为问题在于假设存在一些实际上不存在的动态依赖项。 不幸的是,我已经转移到另一个项目并且无法重新创建问题,但我怀疑如果使用ldd,您会发现存在不满足的动态依赖关系导致错误。这也解释了为什么基于 alpine 的图像会出现问题,根据设计,它们应该是精简和轻量级的,并且可能不包含依赖项。

    【讨论】:

      【解决方案2】:

      我有同样的错误。 我不知道这个错误的原因,但解决方法是使用非高山版本的节点。 也许您可以使用multistage docker build,这样您的最终图像无论如何都是基于 alpine 版本的。

      【讨论】:

        猜你喜欢
        • 2019-07-11
        • 2017-05-30
        • 2017-02-20
        • 2021-02-13
        • 1970-01-01
        • 2018-07-04
        • 2017-02-12
        • 2017-10-08
        • 2018-08-01
        相关资源
        最近更新 更多