定义模块

包含内容如图:

模板内容如下(执行脚本较复杂,也另建文件管理):

sonar:

\_\_global\_\_: # 模块层的全局配置

execTmpl: |

%{readText "code/sca.yaml" | indent 34}%

default: # 模块级的默认配置

type: git # 类型都为git

config: "" # 表示不需要生成配置文件

common:

labels:

package: true # 表示公共库

settings:

repo: http://xxx/common.git

mvn:

api: # 只上传jar包 不打包和构建镜像

dir: ""

sonar:

exclusions: 'src/main/java/xxx/protobuf/\*\*' # sonar扫描排除pb代码

user:

labels:

role: user # 属于用户中心;默认(和不填)为公共模块,服务于所有部门;支持多个归属

settings:

repo: http://xxx/user.git

mvn:

api:

dir: user-api

service:

dir: user-service

bigdata:

labels:

role: bigdata # 属于大数据中心;默认(和不填)为公共模块,服务于所有部门;支持多个归属

settings:

repo: http://xxx/bigdata.git

branch: dev

mvn:

api:

dir: flink-stream

sonar:

exclusions: 'src/main/\*\*/proto/\*\*'

执行脚本模板(code/sca.yaml)如下:

# 分两步:

# 1. 下载代码

# 2. 扫描代码

@{- $env := .env -}@

@{- $repoName := repoName .settings.repo}@

@{- $parent := . }@

- name: git

image: busybox

command: [/bin/sh, -c]

args:

- |

echo 下载代码 @{.settings.repo}@ branch:@{ or .settings.tag .settings.branch (render $env.code.branch .) }@

@{- range $type,$val := .settings.mvn}@

- name: mvn-sast-@{$type}@

depends: [git]

image: busybox

command: [/bin/sh, -c]

args:

- |

echo 代码扫描

@{- $projName := $repoName }@

@{- if $val.dir }@

@{- $projName = concat $projName ":" $val.dir }@

@{- end}@

@{- $projName = replace $projName "/" ":" -1 }@

echo 'mvn clean package sonar:sonar -DskipTests -U -P @{$env.mvn.profile}@ \

@{- if (or $parent.settings.sonar.exclusions "") }@

-Dsonar.exclusions=@{ $parent.settings.sonar.exclusions }@ \

@{- end}@

-Dsonar.projectKey=SAST:@{$projName}@ \

-Dsonar.projectName=SAST:@{$projName}@ \

-Dsonar.host.url=@{$env.info.sonar.url}@ \

-Dsonar.login=@{$env.info.sonar.token}@'

@{- end }@

执行编排

分两步:

yaml定义参数cli执行

完整的执行脚本(Makefile)如下:

server=http://localhost:8888

# OPS\_USER需设置环境变量,eg:export OPS\_USER=xxx

apply-sonar:

ops apply -p sonar -s ${server} -u ${OPS\_USER} -f sonar/project.yaml

ops apply -p sonar -s ${server} -u ${OPS\_USER} -f sonar/definitions/main.yaml

#扫描common代码

ops apply -p sonar -s ${server} -u ${OPS\_USER} -f sonar/engines/params-common.yaml

#扫描user代码

ops apply -p sonar -s ${server} -u ${OPS\_USER} -f sonar/engines/params-user.yaml

#扫描大数据代码

ops apply -p sonar -s ${server} -u ${OPS\_USER} -f sonar/engines/params-bigdata.yaml

扫描第一部分代码(common)

参数定义:

kind: Engine

apiVersion: api/v1

metadata:

name: sonar-1 # 编排名称:用于编排任务分类

cron: "0 20 \* \* \*" # 定时任务:每天晚上8点执行一次

envs:

- prod # 指定环境:应用环境定义的属性

engine: sonar # 指定项目编排的模板:应用 `project.spec.engine.sonar`编排模板

annotations: # 扩展属性:用于编排模板渲染

part: first

branch: master

执行

ops apply -p sonar -s ${server} -u ${OPS\_USER} -f sonar/engines/params-common.yaml

扫描第二部分代码(user)

参数定义:

kind: Engine

apiVersion: api/v1

metadata:

name: sonar-2 # 编排名称:用于编排任务分类

cron: "0 20 \* \* \*" # 定时任务:每天晚上8点执行一次

envs:

- prod # 指定环境:应用环境定义的属性

engine: sonar # 指定项目编排的模板:应用 `project.spec.engine.sonar`编排模板

annotations: # 扩展属性:用于编排模板渲染

part: second

branch: master

执行

ops apply -p sonar -s ${server} -u ${OPS\_USER} -f sonar/engines/params-user.yaml

扫描大数据代码(bigdata)

参数定义:

kind: Engine

apiVersion: api/v1

metadata:

name: sonar-bigdata # 编排名称:用于编排任务分类

cron: "0 20 \* \* \*" # 定时任务:每天晚上8点执行一次

envs:

- prod # 指定环境:应用环境定义的属性

engine: sonar # 指定项目编排的模板:应用 `project.spec.engine.sonar`编排模板

annotations: # 扩展属性:用于编排模板渲染

part: bigdata

branch: dev

执行

ops apply -p sonar -s ${server} -u ${OPS\_USER} -f sonar/engines/params-bigdata.yaml

效果展示

扫描第一部分代码(common)

工作流任务

工作流日志1(下载代码):

工作流日志2(代码扫描):

扫描第二部分代码(user)

工作流任务

工作流日志1(下载代码):

工作流日志2(代码扫描):

扫描大数据代码(bigdata)

工作流任务(有api和service两个个代码扫描任务)

工作流日志1(下载代码):

工作流日志2(扫描代码api):

工作流日志2(扫描代码service):

结语

只需写模板文件和配置文件就可以构建自己的工作流,保证了良好的扩展性。

请用微信扫码关注下 ,持续更新云原生DevOps最佳实践。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)

中…(img-hOLEWDet-1712829152711)] [外链图片转存中…(img-WGrIFQXe-1712829152712)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取) [外链图片转存中…(img-9onyvLi5-1712829152712)]

推荐链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。