我在持续集成:Jenkins API使用方法详细介绍中介绍了jenkins API的使用方法,比如使用API读取jenkins项目相关信息、触发构建等操作,除此之外,还可以直接使用API来创建项目、新建节点。

目录

  • 创建slave节点
    • 1. 节点配置文件
    • 2. 创建节点
  • 获取JNLP节点秘钥
  • 创建项目
    • 1. 项目配置文件
    • 2. 创建项目
  • 更新项目
  • 系列文章

创建slave节点

1. 节点配置文件

要通过jenkins REST API创建节点,需要先准备节点的配置文件,例如Windows节点配置:

{"name": "win_slave","nodeDescription": "192.168.30.100","numExecutors": "1","remoteFS": "D:\\jenkins","labelString": "win_slave","mode": "NORMAL","": ["hudson.slaves.JNLPLauncher","hudson.slaves.RetentionStrategy$Always"],"launcher": {"stapler-class": "hudson.slaves.JNLPLauncher","$class": "hudson.slaves.JNLPLauncher","workDirSettings": {"disabled": false,"workDirPath": "D:\\jenkins","internalDir": "remoting","failIfWorkDirIsMissing": false},"webSocket": false,"tunnel": "","vmargs": ""},"retentionStrategy": {"stapler-class": "hudson.slaves.RetentionStrategy$Always","$class": "hudson.slaves.RetentionStrategy$Always"},"nodeProperties": {"stapler-class-bag": "true"},"type": "hudson.slaves.DumbSlave"
}

节点配置文件可使用抓包工具来获取,比如Charles、fiddler等,也可以直接使用浏览器的开发者工具获取,下面演示如何使用Edge浏览器来获取Linux节点的json格式节点配置文件:

1、创建新节点

2、填写配置信息

3、打开浏览器开发人员工具控制台

右键->点击检查,或者F12

4、点击保存

点击保存后,可在控制台中看到doCreateItem这个接口请求:

复制json字段的值即可。

{"name":"linux_slave","nodeDescription":"192.168.30.9","numExecutors":"1","remoteFS":"/tmp/jenkins_slave","labelString":"linux_slave","mode":"NORMAL","":["hudson.plugins.sshslaves.SSHLauncher","0"],"launcher":{"oldCommand":"","stapler-class":"hudson.plugins.sshslaves.SSHLauncher","$class":"hudson.plugins.sshslaves.SSHLauncher","host":"192.168.30.9","includeUser":"false","credentialsId":"f4d8827c-bd25-41e1-93df-2d32248164f3","":"2","sshHostKeyVerificationStrategy":{"requireInitialManualTrust":true,"stapler-class":"hudson.plugins.sshslaves.verifiers.ManuallyTrustedKeyVerificationStrategy","$class":"hudson.plugins.sshslaves.verifiers.ManuallyTrustedKeyVerificationStrategy"},"port":"22","javaPath":"","jvmOptions":"","prefixStartSlaveCmd":"","suffixStartSlaveCmd":"","launchTimeoutSeconds":"","maxNumRetries":"","retryWaitTime":"","tcpNoDelay":true,"workDir":""},"retentionStrategy":{"stapler-class":"hudson.slaves.RetentionStrategy$Always","$class":"hudson.slaves.RetentionStrategy$Always"},"nodeProperties":{"stapler-class-bag":"true"},"type":"hudson.slaves.DumbSlave","Jenkins-Crumb":"c05e26bd59fdfb37897cc2ac20d951f43cf077578eb0dbb255106cab05b9fb2d"
}

2. 创建节点

使用jenkinsAPI创建节点之前,需要生成一个用户的API Token:

下面使用Python的requests库进行接口请求,其它语言类似,下面以添加windows节点为例:

import json
import requestsheaders = {'Content-Type': 'application/x-www-form-urlencoded',
}with open('win_slave.json', 'r') as load_f:postdata = json.load(load_f)url = 'http://admin:11108c1d093a24fcebe11e945de3bcece4@192.168.30.8:8080/computer/doCreateItem?name=win_slave&type=hudson.slaves.DumbSlave'
response = requests.post(url, data=f'json={json.dumps(postdata)}', headers=headers)
assert response.status_code==200

当前jenkins的节点:

执行脚本后可以看到节点win_slave创建成功了:

进入win_slave节点,可看到提示信息:

在节点机上执行命令就可以注册到jenkins了。

获取JNLP节点秘钥

Windows节点通常是通过JNLP(Java Network Launching Protocol )的方式注册到jenkins的,要成功连接需要知道jenkins生成的秘钥,也就是前面启动节点中secret:

echo e001b3fc14e3f3c1278b45fad750361b64d955841b795245adb1b61a013b749f > secret-file
curl -sO http://192.168.30.8:8080/jnlpJars/agent.jar
java -jar agent.jar -jnlpUrl http://192.168.30.8:8080/manage/computer/win%5Fslave/jenkins-agent.jnlp -secret @secret-file -workDir "D:\jenkins"

通过jenkins API创建windows节点之后,我们可以访问jenkins页面来获取这个秘钥,如果想通过接口的方式获取也是可以的。

秘钥信息是存储在jenkins-agent.jnlp文件(或者slave-agent.jnlp)中的,路径为http://192.168.30.8:8080/manage/computer/win_slave/jenkins-agent.jnlp,其实就是上面代理机启动命令中的 jnlpUrl 参数值。

jnlp文件内容如下:

<jnlp><application-desc><argument>e001b3fc14e3f3c1278b45fad750361b64d955841b795245adb1b61a013b749f</argument><argument>win_slave</argument><argument>-workDir</argument><argument>D:\jenkins</argument><argument>-internalDir</argument><argument>remoting</argument><argument>-url</argument><argument>http://192.168.30.8:8080/</argument></application-desc></jnlp>

因此,可以通过解析jnlp文件来获取秘钥值。使用curl命令获取:

$ curl -L -s -u admin:11108c1d093a24fcebe11e945de3bcece4 -X GET http://192.168.30.8:8080/manage/computer/win_slave/jenkins-agent.jnlp | sed "s/.*<application-desc><argument>\([a-z0-9]*\).*/\1/"
e001b3fc14e3f3c1278b45fad750361b64d955841b795245adb1b61a013b749f

创建项目

除了手动在jenkins页面创建项目外,也可以使用jenkins API直接创建jenkins项目(job),下面演示pipeline项目的创建步骤。

创建项目的curl命令格式如下:

curl -X POST --USER {username}:{api token} {jenkins URL}/createItem?name={jobName} --header "Content-Type:text/xml" --data-binary @config.xml
  • username:用户名
  • api token:用户API TOKEN
  • jenkins URL:jenkins地址
  • jobName为项目名

1. 项目配置文件

config.xml配置文件就是pipeline项目配置文件,配置文件可通过如下方式获取:

  1. 手动在jenkins创建一个pipeline项目,例如我创建并配置了一个名为pipeline_demo的job。
  2. 访问192.168.30.8:8080/job/pipeline_demo/config.xml,这个就是pipeline_demo的配置文件,保存到本地,然后修改对应内容即可。

配置文件内容如下:

<?xml version='1.1' encoding='UTF-8'?>
<flow-definition plugin="workflow-job@1232.v5a_4c994312f1"><actions><org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobAction plugin="pipeline-model-definition@2.2114.v2654ca_721309"/><org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobPropertyTrackerAction plugin="pipeline-model-definition@2.2114.v2654ca_721309"><jobProperties/><triggers/><parameters/><options/></org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobPropertyTrackerAction></actions><description>a pipeline demo</description><keepDependencies>false</keepDependencies><properties><hudson.plugins.jira.JiraProjectProperty plugin="jira@3.8"/><org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty><triggers><hudson.triggers.TimerTrigger><spec>30 22 * * *</spec></hudson.triggers.TimerTrigger></triggers></org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty></properties><definition class="org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition" plugin="workflow-cps@2759.v87459c4eea_ca_"><script>pipeline {agent anystages {stage(&apos;begin&apos;) {steps {echo &apos;Hello pipeline&apos;}}}post {always {echo &apos;say goodbay&apos;}}
}</script><sandbox>true</sandbox></definition><triggers/><disabled>false</disabled>
</flow-definition>

2. 创建项目

执行如下命令:

$ curl -X POST --USER admin:11108c1d093a24fcebe11e945de3bcece4 http://192.168.30.8:8080/createItem?name=pipeline_demo2 --header "Content-Type:text/xml" --data-binary @pipeline_demo_config.xml
# 或者
$ curl -X POST http://admin:11108c1d093a24fcebe11e945de3bcece4@192.168.30.8:8080/createItem?name=pipeline_demo2 --header "Content-Type:text/xml" --data-binary @pipeline_demo_config.xml

执行完成后访问jenkins可发现创建了一个名为pipeline_demo2的job,配置和配置文件相同:

更新项目

jenkins API能创建job,当然也能更新job,命令如下:

$ curl -X POST --USER admin:11108c1d093a24fcebe11e945de3bcece4  http://192.168.30.8:8080/job/pipeline_demo2/config.xml --header "Content-Type:text/xml" --data-binary @pipeline_demo_config_new.xml

pipeline_demo_config_new.xml为更新之后的配置文件。

--THE END--

其实若真正有才华,运气并不是那么重要。——东野圭吾《解忧杂货店》


系列文章

1. 持续集成:通过Jenkins API创建项目和节点
2. 持续集成:Jenkins API使用方法详细介绍
3. 持续集成:Jenkins API简单使用


持续集成:通过Jenkins API创建项目和节点相关推荐

  1. DevOps-2:持续集成工具Jenkins构建.Net项目

    本文介绍,如何使用Jenkins构建.Net项目. 环境配置 安装MsBuild编译工具 1.下载工具 下载地址:https://visualstudio.microsoft.com/zh-hans/ ...

  2. Jenkins——持续集成及Jenkins介绍和安装配置(插件,用户权限,凭据,Maven安装打包,配置tomcat用户权限)

    持续集成及Jenkins介绍和安装配置 持续集成及Jenkins介绍 软件开发生命周期 持续集成 持续集成的组成要素 持续集成的好处 Jenkins介绍 Jenkins安装和持续集成环境配置 Gitl ...

  3. python 持续集成工具_持续集成工具: Jenkins学习

    持续集成工具: Jenkins学习 -- 部分内容收集自网络,如有侵权,请联系作者删除 一. 概念 在过去的开发整体流程中,是所有人写好代码之后统一进行合并(svn,git),然后进行测试,确保准发布 ...

  4. 老李分享:持续集成学好jenkins之Git和Maven配置

    老李分享:持续集成学好jenkins之Git和Maven配置 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请 ...

  5. 微服务容器部署与持续集成(Jenkins)

    微服务容器部署与持续集成(Jenkins) 一.微服务容器部署 1.Dockerfile 1.1 Dockerfile简介 1.2 使用脚本创建镜像 2.Docker私有仓库 2.1 私有仓库搭建与配 ...

  6. 持续集成:Jenkins邮件通知配置方法介绍

    Jenkins的邮件提醒功能主要通过Email Extension插件来实现,它是对Mailer Plugin的扩展,我在持续集成平台Jenkins配置方法介绍中简要介绍了Jenkins的邮件配置方法 ...

  7. 持续集成平台Jenkins配置方法介绍

    持续集成(Continuous integration,CI)是软件开发和发布流程中最重要的组成部分,有利于加快开发进度.Jenkins是常用的持续集成管理工具,本文将简要介绍Jenkins持续集成工 ...

  8. 【云原生 • DevOps】一文掌握持续集成工具 Jenkins

    目录 一.持续集成工具 Jenkins 介绍 1. 什么是持续集成 2. Jenkins 介绍 二.Jenkins 的安装与部署 1. 安装 Jenkins 2. 本地访问 Jenkins 3. 插件 ...

  9. 持续集成工具Jenkins学习4 Idea集成Jenkins插件

    持续集成工具Jenkins学习4 Idea集成Jenkins插件 一.功能简介 二.安装Idea插件 1. 搜索安装 2. 设置 三.Jenkins开启CSRF 四.使用 一.功能简介 Idea可以方 ...

最新文章

  1. C语言做一个通讯录程序(在console里面运行)
  2. 【勉强采用】反欺诈四大手段一秒get
  3. mysql dba系统学习(20)mysql存储引擎MyISAM
  4. 页游开发_小花仙即将出手游,敬童年一起玩过的7K7K和4399
  5. ubuntu20配置阿里源简单粗暴的方法
  6. 分布式消息系统Kafka初步
  7. 线上BUG定位神器(阿尔萨斯)-Arthas2019-0801
  8. SaaS CRM系统存在的五大安全漏洞
  9. ArcSDE工作机制
  10. c语言常用单词表格,C语言常用单词
  11. elasticsearch实现搜索拼音然后高亮内容
  12. windows10启动项修复||an operating system wasn't found解决办法
  13. android绘制一个圆,点哪画哪,走哪动哪
  14. Google确认Chrome存在严重漏洞,向20亿用户发出警告:你们需立即更新浏览器
  15. win10系统编辑服务器在哪里设置密码,技术编辑处置win10系统忘记登录密码的设置技巧...
  16. setEnable和setClickable区别
  17. 一句话理解:谐振腔工作原理
  18. Huawei EROFS 初探
  19. 在C语言程序中 当调用函数时,c语言程序设计第2版) 教学课件 作者 梅创社试题库 期末试卷一.docx...
  20. 关于matlab求含有nan矩阵的均值

热门文章

  1. 使用NanoHttpd在Android上实现HttpServer
  2. NanoHttpd Demo是个好东西
  3. ubuntu14.04 iso硬盘安装
  4. Day 24 - 设定开发帐号 HBuilder X - DCloud 注册
  5. python中list的运算_使用Python列表实现向量运算
  6. Elasticsearch:理解 Master,Elections,Quorum 及 脑裂
  7. c/c++: window下安装mingw-w64
  8. CSS Display与Visibility区别和用法
  9. 弹出表情气泡仿魔兽的技能冷效果却实现
  10. java面向对象实验结论及心得_20162305 实验二 Java面向对象程序设计 实验报告