def downloadEmbeddedCI(){
sh 'rm -rf embedded-ci'
sh "git clone ${embeddedRemote} -b ${embeddedBranch} -v embedded-ci --depth=1"
}
def downloadRepoWithPr(String workspace, String namespace, String repo, Integer prnum, Integer deepth){
sh """
python3 main.py clone_repo \
-w ${workspace} \
-r https://atomgit.com/${namespace}/${repo} \
-p ${repo} \
-pr ${prnum} \
-dp ${deepth}
"""
}
def formatRes(String name, String action, String check_res, String log_path){
return sh (script: """
python3 main.py serial \
-c name=$name \
-c action=$action \
-c result=$check_res \
-c log_path=$log_path
""", returnStdout: true).trim()
}
def getRandomStr(){
return sh(script: """
cat /proc/sys/kernel/random/uuid
""", returnStdout: true).trim()
}
def mkdirOpeneulerLog(){
def logdir = "openeuler/log"
sh "mkdir -p $logdir"
return logdir
}
def STAGES_RES = []
pipeline {
agent { node "${node}" }
environment {
PATH = "/home/jenkins/.local/bin:${env.PATH}"
PYLINTRC = "/home/jenkins/agent/${giteeRepoName}/.pylintrc"
}
stages {
stage("clone embedded-ci"){
steps{
dir('/home/jenkins/agent'){
script{
downloadEmbeddedCI()
}
}
}
}
stage("code check"){
steps {
dir('/home/jenkins/agent/embedded-ci'){
script{
withCredentials([string(credentialsId: "${giteeId}", variable: 'GITEETOKEN')]){
// 下载本项目代码仓源码
downloadRepoWithPr("/home/jenkins/agent", giteeTargetNamespace, giteeRepoName, Integer.parseInt(giteePullRequestid), Integer.parseInt(commitCount))
def randomStr = getRandomStr()
def logDir = mkdirOpeneulerLog()
// 执行commit检查
def task_res_code = sh (script: """
python3 main.py codecheck \
-c /home/jenkins/agent/$giteeRepoName \
-target commit_msg \
-o $giteeTargetNamespace \
-p $giteeRepoName \
-gt $GITEETOKEN \
-pr $giteePullRequestid > ${logDir}/${randomStr}.log
""", returnStatus: true)
def check_res = ""
if (task_res_code == 0){
check_res = "success"
}else{
check_res = "failed"
env.code_check_result = "failed"
}
// 对检查赋值
// env.task_check_commit = formatRes("check", "commit_check", check_res, "xxx")
archiveArtifacts "${logDir}/*.log"
STAGES_RES.push(formatRes("check", "commit_check", check_res, "artifact/${logDir}/${randomStr}.log"))
}
}
}
}
}
}
post {
always {
dir('/home/jenkins/agent/embedded-ci'){
script{
withCredentials([
string(credentialsId: "${giteeId}", variable: 'GITEETOKEN'),
usernamePassword(credentialsId: "${jenkinsId}", usernameVariable: 'JUSER',passwordVariable: 'JPASSWD')]){
if (currentBuild.result != 'ABORTED') {
def chks = ""
for (int i = 0; i < STAGES_RES.size(); ++i) {
chks = "${chks} -chk ${STAGES_RES[i]}"
}
def duration_time = System.currentTimeMillis() - currentBuild.startTimeInMillis
sh """
python3 main.py comment \
-m gate \
-o $giteeTargetNamespace \
-p $giteeRepoName \
-pr $giteePullRequestid \
-gt $GITEETOKEN \
-dt $duration_time \
$chks
"""
}
}
}
}
}
}
}