所有文章 > 学习各类API > 基于JenkinsAPI创建自定义JenkinsPipeline
基于JenkinsAPI创建自定义JenkinsPipeline

基于JenkinsAPI创建自定义JenkinsPipeline

本文详细介绍了如何通过Jenkins API创建自定义的Jenkins Pipeline,从而提高自动化部署的效率。使用Pipeline的方式可以减少手动配置的工作量,并增强配置的灵活性和可追溯性。本文还包括了如何使用Jenkinsfile进行版本管理,以及如何通过Jenkins提供的API接口快速创建Job,适用于Jenkins 2.46.2版本。

AtomCI 工作流

AtomCI 是一个支持自定义 Docker 运行镜像和环境变量定义的工作流工具。可以通过查看 sample/sample.go 文件获取示例代码。

AtomCI 工作流

使用 Jenkins 进行自动化部署

在使用 Jenkins 进行自动化部署时,通常从 FreeStyle 构建开始,随着业务增长,管理多个 Job 变得低效。通过 Pipeline 创建 Job,并使用 Jenkinsfile 存储在项目仓库中,提高了灵活性和可追溯性。

Pipeline 示例结构

以下是一个基础的 Pipeline 示例,用于定义自动构建过程和指定在哪个节点运行。

pipeline {
    agent any
    stages {
        stage("Build") {
            steps {
                sh 'Hello World'
            }
        }
    }
    post {
        always {
            sh 'Hello World'
        }
    }
}

分支 checkout

在配置 Pipeline 时,只需执行以下命令即可指定 SCM 版本仓库地址。

checkout scm

wrap 用法

在 Jenkinsfile 中,wrap 可以替代 FreeStyle 中的 Build Environment 管理设置。

wrap([$class: 'TestInProgressBuildWrapper']) {
    sh '''
        mvn test
    '''
}

step 用法

使用 step 在 FreeStyle Build 过程中执行相关步骤。

step([$class: 'Publisher', reportFilenamePattern: '**/testng-results.xml'])

环境变量

通过 ${}$XXX 获取 Build 变量。

sh '${BUILD_ID}'

完整示例

此示例展示如何使用 Maven 进行自动化测试,并通过报告界面展示结果。

pipeline {
    agent { node { label "agent-2" } }
    tools {
        jdk "8u91"
        maven "3.3.9"
    }
    stages {
        stage("Build") {
            steps {
                wrap([$class: 'TestInProgressBuildWrapper']) {
                    checkout scm
                    sh '''
                        echo "PATH = ${PATH}"
                        echo "M2_HOME = ${M2_HOME}"
                        mvn test
                    '''
                }
            }
        }
    }
    post {
        always {
            step([$class: 'Publisher', reportFilenamePattern: '**/testng-results.xml'])
        }
    }
}

创建 Job 接口

Jenkins 提供了 API 来创建 Job,地址为 http://xxx/createItem?name=$jobname。请求类型为 POSTContent-Type 必须是 application/xmlBody 为 XML 格式。

BRANCH_NAME="test" && 
XML_DATA=" 
 
 
false 
 
 
 
 
 
 
 
2 
 
 
https://gitlab.xxxx.com/xxx/autotester.git 
049ef8c4-d01c-4304-b1eb-22d26ef26a8e 
 
 
 
 
*/${BRANCH_NAME} 
 
 
false 
 
 
 
Jenkinsfile 
true 
 
 
false 
" && 
curl -u username:password -H "Content-Type: application/xml" -XPOST https://jenkins.xxx.com/createItem?name=${BRANCH_NAME} -d "${XML_DATA}"

相关文档

FAQ

问:什么是 AtomCI?

  • 答:AtomCI 是一个支持自定义 Docker 运行镜像和环境变量定义的工作流工具。可以通过查看示例代码文件 sample/sample.go 获取更多信息。

问:Jenkins 如何提高自动化部署的灵活性和可追溯性?

  • 答:通过使用 Jenkins 的 Pipeline 功能创建 Job,并将 Jenkinsfile 存储在项目仓库中,可以提高自动化部署的灵活性和可追溯性。这种方法比传统的 FreeStyle 构建更加高效,尤其是在管理多个 Job 时。

问:如何在 Jenkins Pipeline 中使用 wrapstep

  • 答:在 Jenkinsfile 中,wrap 可以替代 FreeStyle 中的 Build Environment 管理设置,例如使用 wrap([$class: 'TestInProgressBuildWrapper']) 包裹 mvn teststep 用于在 FreeStyle Build 过程中执行相关步骤,例如 step([$class: 'Publisher', reportFilenamePattern: '**/testng-results.xml'])

问:如何使用 Jenkins API 创建自定义 Jenkins pipeline?

  • 答:可以通过 Jenkins 提供的 API 创建 Job,API 地址为 http://xxx/createItem?name=$jobname,请求类型为 POSTContent-Type 必须是 application/xmlBody 为 XML 格式。示例代码中详细展示了如何通过 API 使用 XML 数据来创建自定义 Jenkins pipeline。

问:如何在 Jenkins Pipeline 中使用环境变量?

  • 答:可以通过 ${}$XXX 的形式获取 Build 变量。例如,使用 sh '${BUILD_ID}' 可以在 shell 中输出 BUILD_ID 变量的值。
#你可能也喜欢这些API文章!