更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux教程 > 用Sonar Scanner和Jenkins扫描PHP/JavaScript/C#/HTML

用Sonar Scanner和Jenkins扫描PHP/JavaScript/C#/HTML

更新时间:2023-05-15 10:12:12浏览次数:560+次

本文介绍在Linux平台中使用Sonar Scanner和Jenkins扫描PHP/JavaScript/C#/HTML的方法。

前言

在本简短指南中,我们将利用SonarQube通过Sonar Scanner声纳扫描仪客户端扫描PHP或JavaScript或Java以外的其他编程语言。它的工作原理是Sonar Scanner连接到SonarQube,并扫描位于不同位置的服务器中的应用程序。对于这个例子,我们将使用Sonar Scanner和Jenkins实例,然后在CI/CD管道期间使用它来扫描应用程序。

要完成本文的目标,得要在Linux平台中安装了SonarQube和Jenkins,并且已经成功集成。下面的指南将为您提供帮助:

在Debian 11 Linux系统上安装和配置SonarQube:https://www.hmxthome.com/linux/5143.html

在Ubuntu 22.04系统上安装Jenkins Server的方法:https://www.hmxthome.com/linux/4903.html

使用Sonar Scanner和Jenkins扫描PHP/JavaScript/C#/HTML的操作步骤

步骤1、安装Sonar Scanner的说明

用户需要完成安装Sonar Scanner,如果还没有安装,可参考在Linux系统中安装Sonar Scanner声纳扫描仪一文,阅读地址在https://www.hmxthome.com/linux/5158.html。

步骤2、让Jenkins知道在哪里可以找到Sonar Scanner

在这一步中,我们将通知Jenkins声纳扫描仪已经安装,并将其指向其主目录。要完成此操作,请使用具有管理员权限的用户登录Jenkins服务器,然后单击“管理Jenkins”>“全局工具配置”(“Manage Jenkins” > “Global Tool Configuration”):

\

\

向下滚动到“SonarQube Scanner”部分,然后单击“Add SonarQube Scanner”。您将看到一个类似表单的迷你页面,可以在其中输入详细信息。给它一个您喜欢的名称,取消选中自动安装,然后输入SONAR_RUNNER_HOME值,即我们安装Sonar Scanner的位置,即“/opt/sonarqube/sonar-scanner/bin/”。屏幕截图如下所示:

\

步骤3、更新您的Jenkinsfile

安装Sonar Scanner并将其主目录添加到Jenkins服务器后,是时候将扫描步骤添加到Jenkinsfile中了,以便在部署之前扫描代码并提交报告。

1、用于编写脚本的Jenkinsfile

node('master') {

    def projectName = 'testProject'

stage("Sonar Scan") {

          withEnv(["PATH=/usr/bin:/usr/local/jdk-11.0.2/bin:/opt/sonarqube/sonar-scanner/bin/"]) {

            withSonarQubeEnv(installationName: 'sonarqube-Server', credentialsId: 'sonarqubeSecret') {  

            sh "sonar-scanner \

                -Dsonar.projectKey=${projectName} \

                -Dsonar.sources=. \

                -Dsonar.host.url=${env.SONAR_HOST_URL} \

                -Dsonar.login=${env.SONAR_AUTH_TOKEN} \

                -Dsonar.projectName=${projectName} \

                -Dsonar.projectVersion=${env.BUILD_ID}"

         }

      }

    }

  }

2、用于声明性Jenkinsfile

pipeline {

    agent any

    environment {

        projectName = "test-project"

    }

stages {

    stage ("SonarQube Scan") {

       steps {

          withEnv(["PATH=/usr/bin:/usr/local/jdk-11.0.2/bin:/opt/sonarqube/sonar-scanner/bin/"]) {

             withSonarQubeEnv(installationName: 'sonarqube-Server', credentialsId: 'sonarqubeSecret') { 

               sh "sonar-scanner \

                 -Dsonar.projectKey=${projectName} \

                 -Dsonar.sources=. \

                 -Dsonar.host.url=${env.SONAR_HOST_URL} \

                 -Dsonar.login=${env.SONAR_AUTH_TOKEN} \

                 -Dsonar.projectName=${projectName} \

                 -Dsonar.projectVersion=${env.BUILD_ID}"

           }

         }

       }

     }

  }

}

withEnv选项将帮助Jenkinsfile从服务器中的$PATH中找到Sonar Scanner。如果您收到错误“sonar-scanner command not found”,请考虑在上面的代码中添加此选项。

您还会注意到,我们没有使用任何登录密钥和在SonarQube上创建的项目。所有这些都由我们在将Jenkins与SonarQube集成时生成的令牌来处理。SonarQubeEnv的包装器使用我们已经在Jenkins中添加的凭据为我们完成了这项工作。withSonarQubeEnv暴露“${env.SONAR_AUTH_TOKEN}”和“${env.SONAR_HOST_URL}”环境变量,这些变量被注入Sonar Scanner。可以在Jenkinsfile中设置“${projectName}”变量,如上文所示。

步骤4、为SonarQube中的各种编程语言添加缺失的插件

要扫描JavaScript、C#、CSS、Visual Basic、HTML、PHP、Python等源代码,SonarQube需要安装各种语言的插件。SonarQube安装了大部分模块。如果其中一个尚未安装,请执行以下操作。使用管理员凭据登录SonarQube,然后单击“管理”>“市场”(“Administration” > “Marketplace”):

\

\

然后在“Plugins”部分搜索插件,如下所示:

\

步骤5、开始构建过程

希望每个方面都能很好地工作,并完美地集成在一起,我们可以自信地启动管道。您可以从GitHub或GitLab中的源代码触发它,也可以在Jenkins中手动构建它。扫描完成后,您应该会看到失败或成功的报告,如下所示:

\

结论

Sonar Scanner与SonarQube相结合,成为您安全工具包中最好的标签团队。让它们在您的CI/CD构建中为您工作,并最大限度地减少部署因可避免的安全缺陷而受损的代码的机会。