背景

某项目测试环境jenkins突然执行不了脚本,错误如下:

$ /bin/sh -xe /tmp/jenkins3171686575384136508.sh
FATAL: command execution failed
java.io.IOException: error=13, Permission denied
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
Caused: java.io.IOException: Cannot run program "/bin/sh" (in directory "/data/jenkins/workspace/yc-notice-service"): error=13, Permission denied
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at hudson.Proc$LocalProc.<init>(Proc.java:249)
	at hudson.Proc$LocalProc.<init>(Proc.java:218)
	at hudson.Launcher$LocalLauncher.launch(Launcher.java:935)
	at hudson.Launcher$ProcStarter.start(Launcher.java:454)
	at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:109)
	at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:66)
	at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
	at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
	at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.build(MavenModuleSetBuild.java:945)
	at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:683)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
	at hudson.model.Run.execute(Run.java:1819)
	at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)
	at hudson.model.ResourceController.execute(ResourceController.java:97)
	at hudson.model.Executor.run(Executor.java:429)
Build step 'Execute shell' marked build as failure
Finished: FAILURE

测试环境在更改jenkins工作目录后问题解决,这个改动量其实蛮大的,需要迁移原工作目录数据,还要更改工作目录配置。然后生产环境也出现同样的问题,这边记录下解决的过程。

Read the rest of this entry

介绍

前面两篇介绍sonar的安装和配置,并且简单介绍了下如何使用,可以点击以下连接回顾下

根据前面的介绍,我们知道,你可以通过maven工具或者sonar-scanner将代码上传到sonar,如果你只是搭一个demo自己测试自己玩,这样一点问题都没有,如果你准备搭建一个代码质量平台,希望推广到全公司,给所有的人用,不是把环境搭起来甩一篇使用文档就完事了,所有的工具都是这样的,给你的只是砖头,具体要盖平房还是高楼取决于用砖头的人。

目标

这次我们的目标希望能达到以下目的

  • 自定义前端界面,员工登录后可以提交代码质量检测请求,请求内容比较重要的两个字段就是git地址和git分支。
  • 可以通过前端界面跳转到sonar系统中对结果进行查看。

Read the rest of this entry

介绍

上一篇中,介绍了如何安装部署sonar,这一篇介绍如何配置sonar。

权限

每个项目都可以设置一个权限模板(Permission Templates),权限模板里可以对用户和组分配不同的权限,采用矩阵方式进行配置,以下就是sonar默认的权限模板

默认的权限模板不是很合理,其中群组sonar-users可以看所有的项目,因为所有sonar上的用户都属于这个群组,所以大家是可以互相查看对方项目的,很不合理。

Read the rest of this entry

sonar介绍

sonar是一款开源的代码质量检查工具,基本支持所有流行的编程语言。平时我们自己做代码review费时费力而且对审查的人要求比较高,一般是资深开发人员进行审查,有了sonar后上万行代码片刻之间就可以完成review,事无巨细的给你指出代码中存在的问题还能指导你如何进行修复。

在sonar中,问题分为三种,每种按照严重程度分为A-E五个级别,三种问题分别为:

  • bug,sonar能识别出非运行时bug,比如空指针没处理等。
  • Vulnerabilities(漏洞),存在的安全问题
  • bad smell(坏代码),不规范的代码,这个可以帮助我们改正我们代码中的一些不良习惯。

以下是sonar检测完后的报告:

Read the rest of this entry