创建Jenkins扫描门禁任务
创建任务
请勿在master节点上运行。
- 进入Jenkins主页,在左侧树单击“新建任务”。图1 创建pipeline任务1
- 打开新建任务页面,填写任务名称,选择流水线选项,单击“确定”按钮创建任务。图2 创建pipeline任务2
- 进入到新创建的Pipeline任务中,左侧树单击“配置”,打开配置页面。将Pipeline脚本样例复制到流水线配置的脚本中,最后单击“保存”。图3 创建pipeline任务3
- 单击任务左侧树“立即构建”,执行任务。图4 执行任务
- 查看任务执行状态。
- 传统方式查看任务执行状态。
图5 传统方式查看任务执行状态
- 现代方式查看任务执行状态。
- 传统方式查看任务执行状态。
- 任务执行完成后,可查阅报告。
Jenkins流水线扫描门禁代码示例
pipeline {
agent any
options {
timeout(time: 1, unit: 'HOURS')
}
parameters {
string(name: 'GIT_URL', defaultValue: 'https://github.com/ruanjue/wtdbg2.git', description: '--> git url <--')
string(name: 'GIT_BRANCH', defaultValue: 'v2.5', description: '--> code branch <--')
string(name: 'GIT_TARGET_DIR_NAME', defaultValue: 'wtdbg2', description: '--> code branch <--')
}
stages{
stage('Git Code') {
agent {
label 'kunpeng_scanner' //对应添加节点时的标签,可选择多个
}
steps {
echo '====== 获取源码 ======'
checkout scmGit(branches: [[name: "${params.GIT_BRANCH}"]],
browser: github("${params.GIT_URL}"),
extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: "${params.GIT_TARGET_DIR_NAME}"], cleanBeforeCheckout(deleteUntrackedNestedRepositories: true)],
userRemoteConfigs: [[url: "${params.GIT_URL}"]])
}
}
stage('PARALLEL BUILD') {
parallel {
stage('Kunpeng') {
agent {
label 'kunpeng_scanner'
}
stages{
stage('source-code-migration') {
steps {
echo '====== 源码迁移 ======'
sh 'if [ ! -d "./report_dir" ]; then mkdir -p ./report_dir; fi
/usr/bin/rm -rf ./report_dir/*.html'
script{
def SRC_MIG_STATUS_CODE = sh(returnStatus: true, script: 'devkit porting src-mig -i ../src/wtdbg2 -c make -r html -o ./report_dir')
switch(SRC_MIG_STATUS_CODE) {
case 0:
currentBuild.result = 'SUCCESS'
echo '【源码迁移】--> 无扫描建议 <--'
break
case 1:
currentBuild.result = 'UNSTABLE'
echo '【源码迁移】--> 扫描结果仅存在建议项 <--'
break
case 5:
currentBuild.result = 'FAILURE'
echo '【源码迁移】--> 扫描结果存在必须修改项 <--'
break
case 3:
currentBuild.result = 'ABORTED'
echo '【源码迁移】--> 扫描结果超时 <--'
break
case 4:
currentBuild.result = 'ABORTED'
echo '【源码迁移】--> 扫描命令错误 <--'
break
default:
currentBuild.result = 'ABORTED'
echo '【源码迁移】--> 异常终止{Ctrl + C | Ctrl + Z} <--'
break
}
}
sh 'mv ./report_dir/src-mig*.html ./report_dir/SourceCodeScanningReport.html'
}
post {
always {
publishHTML(target: [allowMissing: false,
alwaysLinkToLastBuild: false,
keepAll : true,
reportDir : './report_dir',
reportFiles : 'SourceCodeScanningReport.html',
reportName : 'Source Code Scanning Report']
)
}
}
}
stage('vectorized-check') {
steps {
echo '====== 向量化检查 ======'
sh '''
if [ ! -d "./report_dir" ]; then mkdir -p ./report_dir; fi
/usr/bin/rm -rf ./report_dir/*.html
devkit advisor vec-check -i ../src/test-gllvm -f ../src/test-gllvm -c make -r html -o ./report_dir
mv ./report_dir/vec-check*.html ./report_dir/vectorized-check.html
'''
}
post {
always {
publishHTML(target: [allowMissing: false,
alwaysLinkToLastBuild: false,
keepAll : true,
reportDir : './report_dir',
reportFiles : 'vectorized-check.html',
reportName : 'vectorized-check Report']
)
}
}
}
}
}
}
}
}
}
父主题: Jenkins流水线







