drone + docker

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

# must be unique in a given SonarQube instance
sonar.projectKey=test_ci

# --- optional properties ---

# defaults to project key
sonar.projectName=test_ci #sonarqube服务端不需要创建的,客户端上报后匹配或创建
# defaults to 'not provided'
sonar.projectVersion=1.0

# Path is relative to the sonar-project.properties file. Defaults to .
sonar.sources=.

# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

drone.yml文件编写

中文: https://blog.csdn.net/kikajack/article/details/80503786

官网: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来阻塞 

 


      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值