mac安装sonar-scanner
export SONAR_RUNNER_HOME=/Users/clouder/work/soft/sonar-scanner-4.3
export PATH=$PATH:$SONAR_RUNNER_HOME/bin
在需要扫描的项目根目录下 vi sonar-project.properties
drone.yml文件编写
中文
官网:https://docs.drone.io/pipeline/docker/syntax/cloning/
drone + docker runner安装配置
要设置Trusted选项,在启动drone的时候设置的admin username要和使用gitea登陆的用户名一样,该选项才会出现
- DRONE_USER_CREATE=username:xxx,admin:true #设置drone管理员账号
------------------------------drone文件编写
1.字段冒号后面要有一个空格,没有解析错误,可能是为了和内容信息中:区分开来
2. type: runner的type,如docker, kubernetes,exec
3. 一个文件中可以并行运行多个pipeline(通常是编译多个平台), 使用---来区分,各个pipeline之间不共享状态
管道之间可以有依赖性,比如某个管道需要先执行其他的2个pipeline,就可以使用 depends_on:
4.
workspace:
#base 属性定义了所有工作流步骤共享的基础容器空间
base: /srv/drone-demo #指明git 源代码克隆的目标路径,本例中 git 源代码将被克隆到golang 容器中的/srv/drone-demo目录,默认是/drone/src/
path: .
workspace
定义了所有工作流步骤共享的容器空间和目录。各个阶段通过各个阶段共享 volume 和工作路径,避免了复制
workspace:
base: /go
path: src/github.com/octocat/hello-world #path 属性定义了构建的工作目录。这是代码被克隆到的目录,也将是每一个构建步骤的默认工作目录。这个路径必须是基于 base 路径的相对路径
5.clone:
#第一步会自动clone代码,(git路径不需要再指明了,drone知道是哪个仓库触发了这次事件)
depth: 50 #只拷贝最近50次提交的分支
#disable: true 可以自定义clone过程
6.挂载
在.drone.yml文件末尾添加
volumes:
- name: cache
host:
path: /home/fish #这个目录不需要提前创建的
在需要使用共享文件夹的step添加
steps:
- name: code-analysis
image: aosapps/drone-sonar-plugin
volumes:
- name: cache
path: /root
注意进入容器后,会处置默认文件夹,要操作文件,可以使用绝对路径,如mkdir -p /root/fish
定位drone-sonar-plugin运行时间太久的原因(10行普通代码,超过15分钟):
原因: drone-sonar-plugin(docker容器)运行的时候先从sonarqube下载安装插件(各个语言的分析器)花了13分钟左右,如果分析器存在,则不需要下载
解决方法: 在pipleline中使用缓存,将sonar-scanner相关文件存储在宿主机上,配置如下:
kind: pipeline
type: docker
name: mytest
workspace:
# base: /srv/drone-demo
# path: .
steps:
- name: code-analysis
image: aosapps/drone-sonar-plugin
volumes:
- name: cache
path: /root
settings:
sonar_host: http://118.89.177.83:9000
sonar_token: b50eee2005d900f8abef7ca80642f302af4e38ba
ver: 1.0
sources: .
#level: DEBUG
showProfiling: true
- name: build
image: golang
commands:
- go build
volumes:
- name: cache
host:
path: /home/fish #这个目录不需要提前创建的
7.调试问题定位
如果要进入到step中的某个docker,但是这个step执行时间又短,可以添加sleep来阻塞