首页 > 其他分享 >jenkins API实践

jenkins API实践

时间:2024-09-25 17:51:03浏览次数:3  
标签:http projectName 实践 192.168 job API jenkins 1.129

一、jenkins Python API

在线文档:https://python-jenkins.readthedocs.io/en/latest/

项目地址:https://pypi.org/project/python-jenkins/

1.注意支持的Python版本

jenkins API实践_API

目前只支持到3.6

2.简单示例

pip3 install python-jenkins

import jenkins
server = jenkins.Jenkins('http://192.168.1.129:8080/jenkins', username='admin', password='123456',timeout=10)  #jenkins地址 用户 密码 连接超时,单位秒
user = server.get_whoami()     # get_whoami 及get_version就是接口名称,其他接口名称可以通过文档查询,执行对应的操作即可
version = server.get_version()
print('Hello %s from Jenkins %s' % (user['fullName'], version))

二、jenkins REST API

1.API简介

本地文档:http://${jenkins_url}/api/

#job可以替换成其他jenkins 选项,如果视图 凭据,都有全局及单个,在对应的url后面加上/api即可
http://${jenkins_url}/job/${job_name}/api/  

http://192.168.1.129:8080/jenkins/manage/credentials/api/ #凭据
http://192.168.1.129:8080/jenkins/manage/credentials/store/system/domain/_/credential/nexus-admin/api/  #单个凭据

 以下为常见的job API

jenkins API实践_API_02

jenkins API实践_python_03

2.jenkins REST API共享库封装

创建 API token

jenkins API实践_API_04

创建凭据

jenkins API实践_xml_05

 验证凭据是否有效

pipeline {
    agent  any

    stages {
        //下载代码
        stage("GetCode"){ //阶段名称
            steps{  //步骤
                httpRequest authentication: 'jenkins-admin',
                httpMode: 'POST',
                responseHandle: 'NONE',
                url: 'http://192.168.1.129:8080/jenkins/job/pipeline-test02/disable'  #将test02禁用
            }
        }
    }
}

jenkins API实践_API_06

确实被禁用了

jenkins API实践_xml_07

3.jenkins file + sharelibrary示例

 sharelibrary

jenkinsapi.groovy(注意替换对应的 jenkins地址 凭据名称 及模板项目名称)

package org.devops

//封装HTTP请求
def HttpReq(reqType,reqUrl,reqBody){
    def jenkinsServer = 'http://192.168.1.129:8080/jenkins/'
    result = httpRequest authentication: 'jenkins-admin',
                        httpMode: reqType,
                        consoleLogResponseBody: true,
                        ignoreSslErrors: true, 
                        requestBody: reqBody,
                        url: "${jenkinsServer}/${reqUrl}"
                        //quiet: true
                        
}


//新建项目

def CreateProject(projectName){
    
    withCredentials([usernamePassword(credentialsId: 'jenkins-zeyang-admin', passwordVariable: 'password', usernameVariable: 'username')]) {
    
    
       // demo-project-manage 为示例pipeline项目,用于提供新项目配置模板
        sh """
           curl -u ${username}:${password} -X GET 'http://192.168.1.129:8080/jenkins/job/demo-project-manage/config.xml' -o config.xml
           ls -l 
       
           curl -u ${username}:${password} -X POST 'http://192.168.1.129:8080/jenkins//createItem?name=${projectName}' -H 'Content-Type:text/xml' --data-binary @config.xml
    
    
        """
    }
}

//禁用项目
def Project(projectName,option){

    println(projectName)
    println(option)
    
    options = [ "DisableProject": "disable",
                "EnableProject":"enable",
                "DeleteProject":"doDelete",
                "BuildProject":"build"]
    
    result = HttpReq('POST',"job/${projectName}/${options[option]}",'')
    
}

jenkins file

jenkinsapi.jenkinsfile

@Library("jenkinslibrary@master") _

def jenkinsapi = new org.devops.jenkinsapi()

String projectName = "${env.projectName}"
String manageOpts = "${env.manageOpts}"

pipeline {
    
    agent { node {label "master"}}
    
    stages{
        stage("test"){
            steps{
                script{
                    
                    if (manageOpts == "CreateProject"){
                        jenkinsapi.CreateProject(projectName)
                    } else {
                        jenkinsapi.Project(projectName,manageOpts)
                    }
                }
            }
        }
    }
}

创建模板pipeline项目

jenkins API实践_API_08

jenkins API实践_xml_09

 显示结果

jenkins API实践_xml_10

测试

jenkins API实践_API_11

 

jenkins API实践_API_12

jenkins API实践_python_13

三、jenkins CoreAPI

就是java版API,文档链接:https://javadoc.jenkins.io/index-core.html

不会java,会的可以研究下

 

"一劳永逸" 的话,有是有的,而 "一劳永逸" 的事却极少



标签:http,projectName,实践,192.168,job,API,jenkins,1.129
From: https://blog.51cto.com/u_8901540/12111305

相关文章

  • 基于Sentinel自研组件的系统限流、降级、负载保护最佳实践探索
    一、Sentinel简介Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Sentinel具有以下特征:•丰富的应用场景:Sentinel承接了阿里巴巴近10年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷......
  • 什么是openAPI?
    什么是openAPI?OpenAPI是一个规范(Specification)和一套工具集,用于描述和定义RESTful风格的Web服务接口。它的核心目标是使API的开发、使用、维护和文档化变得更加容易和高效。OpenAPI规范(OpenAPISpecification,OAS)以前也被称为Swagger规范,它提供了一种标准化的方式,让开发者以YAML......
  • 微信支付开发-支付工厂H5Api查账代码
    一、H5支付产品、Native支付产品二、工厂父类抽象类代码开发<?php/***微信父类抽象类*User:龙哥·三年风水*Date:2024/9/19*Time:11:33*/namespacePayment\WechatPay;abstractclassWechatPaymentHandle{/***下单*User:龙哥·三......
  • 大模型训练:K8s 环境中数千节点存储最佳实践
    今天这篇博客来自全栈工程师朱唯唯,她在前不久举办的KubeCon中国大会上进行了该主题分享。Kubernetes已经成为事实的应用编排标准,越来越多的应用在不断的向云原生靠拢。与此同时,人工智能技术的迅速发展,尤其是大型语言模型(LLM)的推进,导致企业需要处理的数据量急剧增加,例如,Llama......
  • 2024年开源API工具盘点,覆盖API全生命周期
    2024年经济持续低迷,本文整理一些免费的开源工具,旨在帮助企业组织降低工具的支出成本,能用免费的何必用付费的呢(狗头)?如何高效地管理API的全生命周期——从设计、开发、测试、部署到监控和优化,已经成为每个开发者和技术团队关注的重点。以下工具清单,无论你是刚刚入门API开发,还是经验......
  • 如何集成化管理API_方便企业内外部调用?
    API已成为企业数字战略中不可或缺的一部分。它们使不同软件系统、应用程序和服务之间能够高效、灵活地相互沟通。API不仅能提升企业内部各部门之间的协作效率,还能加强与外部合作伙伴及客户之间的互动。API的集成化管理将成为企业实现更高效业务流程的重要手段。通过有效的API管......
  • 基于Sentinel自研组件的系统限流、降级、负载保护最佳实践探索
    一、Sentinel简介Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Sentinel具有以下特征:•丰富的应用场景:Sentinel承接了阿里巴巴近10年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集......
  • 轻松编排工作流,浅谈DolphinScheduler如何使用Python调用API接口?
    最近,在做某大型零售企业项目时,有客户用到DolphinScheduler,并咨询是否可以用Python脚本编排工作流?该如何实现?相信有很多人会有这样的疑问,那么,本文将为我们简单分享DolphinScheduler的优势和实际使用。为什么企业数据开发要使用海豚调度?当企业在做数据开发时,任务调度平台会扮演自......
  • 轻松编排工作流,浅谈DolphinScheduler如何使用Python调用API接口?
    最近,在做某大型零售企业项目时,有客户用到DolphinScheduler,并咨询是否可以用Python脚本编排工作流?该如何实现?相信有很多人会有这样的疑问,那么,本文将为我们简单分享DolphinScheduler的优势和实际使用。为什么企业数据开发要使用海豚调度?当企业在做数据开发时,任务调度平台会扮演自动......
  • 基于数据源驱动的跨组件通信最佳实践(低码篇)
    基于数据源驱动的跨组件通信最佳实践(低码篇)徐小夕​循环智能前端工程师​关注他 5人赞同了该文章hello,大家好,我是徐小夕,之前一直在研究可视化零代码相关产品的技术落地,也分享了很多可视化低代码的 技术实践,今天和大家继续分享一下低......