定义模块
包含内容如图:
模板内容如下(执行脚本较复杂,也另建文件管理):
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)]
推荐链接
发表评论