工作日志手稿

发个工作日志手稿,相当于是工作备忘日志,方便时间长了回头好查看。

////////////////////////////////////////////////////////////

#!groovy
timestamps {

group_id = “www.jenkins.cn
artifact_id = “psakce-pga”
version = “”
packaging = “tar.gz”
artifact_description = “psakce-pga artifacts”
group_id_path = group_id.replaceAll("\.", “/”)
nexus_encdata_ci_url = “http://120.139.139.153:18090/service/local/repositories/encdata-ci/content

node(“master”) {
remote_rootdir = WORKSPACE.replaceAll("/workspace/${JOB_BASE_NAME}", “”)

stage("checkout psakce-pga") {
    git_repo_url = "ssh://git@120.139.139.148:32020/${repo_name}"
    //checkout([$class: 'GitSCM', branches: [[name: "*/${branch_name}"]], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: "${working_dir}"], [$class: 'CheckoutOption', timeout: 100]], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'gitlab-10.7.0', url: "${git_repo_url}"]]])
    //checkout([$class: 'GitSCM', branches: [[name: "*/${branch_name}"]], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: "${working_dir}"], [$class: 'CheckoutOption', timeout: 100]], submoduleCfg: [], userRemoteConfigs: [[url: "${git_repo_url}"]]])
    
    sh """if [ -d ${working_dir}/.git ]; then
        cd ${working_dir};
        current_branch=\$(git branch |sed -e "s/\\* //g");
        if [ \"\${current_branch}\" != \"${branch_name}\" ]; then
            git checkout -f .;
            git checkout -b ${branch_name};
            git pull ${git_repo_url} ${branch_name};
        else
            git checkout -f .;
            git pull ${git_repo_url} ${branch_name};
        fi    
    else
        git clone ${git_repo_url} -b ${branch_name} ${working_dir};
    fi"""
    
}

stage("build") {
    sh "cd ${working_dir} && pwd cd /usr/local/maven3.5/bin/mvn -B -Dmaven.test.skip=true clean compile package"
    //sh "cd ${working_dir} && cd updatelist/app/pga_linux64_ubuntu && make clean && make DEBUG:=1"
    //sh "cd ${working_dir} && cp ${remote_dir}/server/pgaapp deploye/pga.server/update_3.0.1.x && cp ${remote_dir}/server/WatchDog.out deploye/pga.server/update_3.0.1.x && cp -rf deploye/pga.server/update_3.0.1.x && cd 01bin/deployment/pga.server/update_3.0.1.x && DATE=\$(date) && sed -i \"s/3.x.x.x/${product_version}/g\" config.xml && sed -i \"s/3.x.x.x/${product_version}/g\" update.xml && sed -i \"s/mvs_compile_date/\${DATE}/g\" update.xml"
    //sh "cd ${working_dir} && cd 01bin/deployment/pga.server && cp -rf update_3.0.1.x update_${product_version} && rm -rf update_3.0.1.x"
    //sh "cd ${working_dir} && cd 01bin/deployment && rm -rf pga.server && rm -f pga.server.zip && mkdir MVS_${product_version}_Server && cp -rf MVS.Server/* MVS_${product_version}_Server"
}


stage("upload") {
    version = sh (
        script: 'date +%Y%m%d-%H%M%S',
        returnStdout: true
    ).trim()
    
    sh "cd ${working_dir} && cd 01bin/deployment && is_exist_file=\$(ls ${artifact_id}*.${packaging} |wc -l) && if [ \${is_exist_file} -ne 0 ]; then rm -f ${artifact_id}*.${packaging}; fi"
    sh "cd ${working_dir} && cd 01bin/deployment && tar -czvf ${artifact_id}-${version}.${packaging} pga_${product_version}_Server"
    sh "cd ${working_dir} && cd 01bin/deployment && mv ${artifact_id}-${version}.${packaging} /tmp/ && /usr/bin/python ${remote_rootdir}/artifact_pull_push.py -g ${group_id} -a ${artifact_id} -v ${version} -p ${packaging} -P true -d '${artifact_description}'"
}



stage("jira issue") {
    if (issue_id != "") {
        withEnv(['JIRA_SITE=jira7.13.1']) {
            echo "issue_id: ${issue_id}"
            
            //def fields = jiraGetFields idOrKey: "${issue_id}"
            //echo issue.data.toString()
            
            def issue = jiraGetIssue idOrKey: "${issue_id}"
            issue_type = issue.data.fields.issuetype.name
            issue_type_id = issue.data.fields.issuetype.id
            issue_status = issue.data.fields.status.name
            //echo issue.data.fields.issuetype.name
            //echo issue.data.fields.status.name
            
            if (issue_type == "任务" && issue_status == "已分配") {
                def transitionInput = [transition: [id: '8']]  // accept
                response = jiraTransitionIssue idOrKey: "${issue_id}", input: transitionInput
                echo response.successful.toString()
                echo response.data.toString()
            } else if (issue_type == "缺陷" && issue_status == "已分配") {
                def transitionInput = [transition: [id: '8']]  // confirm
                response = jiraTransitionIssue idOrKey: "${issue_id}", input: transitionInput
                echo response.successful.toString()
                echo response.data.toString()
            } else {
                echo "当前 Issue 状态为:${issue_status}, 状态不作更新!"
            }
            
            // add artifact download link
            nexus_artifact_url = nexus_encdata_ci_url + "/" + group_id_path + "/" + artifact_id + "/" + version + "/" + artifact_id+"-"+version+"."+packaging
            //jiraAddComment idOrKey: "${issue_id}", comment: "发布包下载:${nexus_artifact_url}"
            
            project_key = issue_id.replaceAll("-.*", "")
            echo "project_key: ${project_key}"
            def project = jiraGetProject idOrKey: "${project_key}"
            //echo project.data.toString()
            project_id = project.data.id.toString()
            
            def editIssue = [fields: [ project: [id: "${project_id}"],
                             customfield_10200: "${nexus_artifact_url}",
                             customfield_10201: ["${product_version}"],
                             issuetype: [id: "${issue_type_id}"]]]

            response = jiraEditIssue idOrKey: "${issue_id}", issue: editIssue
            issue_edit_response = response.successful.toString()
            echo "issue edit response: ${issue_edit_response}"
        }
    }
}

}

}