shell命令或脚本 调用远程jenkins并运行job

这篇具有很好参考价值的文章主要介绍了shell命令或脚本 调用远程jenkins并运行job。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、低版本Jenkins,或者不需要传递参数的job

        可以使用job中的token,shell命令调用执行。

jenkins 远程执行shell,运维,Jenkins,Linux,jenkins,运维,linux,shell,devops

 文章来源地址https://www.toymoban.com/news/detail-619930.html

shell命令:curl --url "JENKINS_URL/job/JOB_NAME/build?token={上述token}" --user username:password
curl --url "http://114.114.144.114:81/jenkins/job/c-serv/build?token=123321" --user admin:au0BESKNEg

二、高版本Jenkins,crsf认证机制

shell调用jenkins进行构建时,报错:

Error 403 No valid crumb was included in the request

HTTP Status 403 – Forbidden

The server understood the request but refuses to authorize it

解决办法:

1、关闭crsf认证机制

在Jenkins启动命令中,添加crsf关闭配置。

添加启动参数:-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_

CSRF_PROTECTION=true

jenkins 远程执行shell,运维,Jenkins,Linux,jenkins,运维,linux,shell,devops

然后重启Jenkins服务,相应的任务即可远程shell调用执行。

传递普通字符串参数,调用job,举例:

curl -X POST http://10.10.10.10:8082/view/test/job/zgkx/job/zgkx-local/build --user admin:123321 --data-urlencode json='{"parameter": [{"name":"Status", "value":"Deploy"}]}'

 2、构造Crumb请求头,通过crsf认证

a)、Jenkins管理员账号登录:系统管理--管理用户--“选择用户”--设置--“API Token”添加新的token,复制新生成的token。

jenkins 远程执行shell,运维,Jenkins,Linux,jenkins,运维,linux,shell,devops

b)、调用接口获取Jenkins-Crumb

此处需要用到上步骤中的API Token。去请求Jenkins,返回得到Jenkins-Crumb

[root@localhost ~]# curl 'http://admin:11eef15513d7240e55@114.114.114.114:81/jenkins/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,%22:%22,//crumb)'
Jenkins-Crumb:dca55d24fce77f48cc308b4c394a5dc1     #返回值,过段时间会刷新

jenkins 远程执行shell,运维,Jenkins,Linux,jenkins,运维,linux,shell,devops

 c)、编写shell脚本,实时调用认证接口获取请求头

#!/bin/sh

#当前账号及对应的token
token="admin:11eef15513d7240e55"

#构建参数
param1="Deploy"
param2="xx"

#获取Jenkins-Crumb
crumb=$(curl "http://$token@114.114.114.114:81/jenkins/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,%22:%22,//crumb)")

### jenkins地址,调用含字符串参数job
jenkins_url1="http://$token@114.114.114.114:81/jenkins/job/test_pipeline/buildWithParameters?Parameters1=${param1}"
curl -H "$crumb" -X POST ${jenkins_url1}

### jenkins地址,调用含文件参数job
jenkins_url2="http://$token@114.114.114.114:81/jenkins/job/serv/build?"
curl -H "$crumb" -X POST ${jenkins_url2} --form file0=@/var/lib/jenkins/workspace/serv/target/serv.jar --form json='{"parame
ter": [{"name":"target/serv.jar", "file":"file0"}]}'
官方API中调用示例:
curl -H "$crumb" -X POST JENKINS_URL/job/JOB_NAME/build \
--user USER:PASSWORD \
--form file0=@PATH_TO_FILE \
--form json='{"parameter": [{"name":"FILE_LOCATION_AS_SET_IN_JENKINS", "file":"file0"}]}'
# FILE_LOCATION_AS_SET_IN_JENKINS 是Jenkins的job中文件参数的名字。
# Please note, in this example, the symbol '@' is important to mention. Also, the path to the file is absolute path
curl -X POST http://JENKINS_URL/job/JOB_NAME/build  --form file0=@/home/user/Desktop/sample.xml --form json='{"parameter": [{"name":"harness/Task.xml", "file":"file0"}]}'

jenkins 远程执行shell,运维,Jenkins,Linux,jenkins,运维,linux,shell,devops

 

到了这里,关于shell命令或脚本 调用远程jenkins并运行job的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • shell脚本ssh远程执行命令给变量赋值的问题

    从A机器通过SSH方式到B机器,并执行相关的命令。命令中包含变量及变量的赋值。 代码如下,意思是,ssh到192.111.111.27这台机器,cd到 / 根目录下,并执行ls命令,如果ls出来的结果不为空,则执行echo命令。可以肯定的是 / 根目录下是有内容的。 可以看到当执行到 echo 命令的时

    2024年02月12日
    浏览(48)
  • jenkins shell脚本问题

    问题描述: mac电脑配置了jenkins,同样的脚本,mac 电脑终端执行没有问题,复制到jenkins时,jenkins shell命令识别不了 -n指令。 解决方案: jenkins 系统配置中,找到shell 模块,配置上本地的路径即可。 如何查找本地的shell路径: 在终台输入which bash,回车即可得到。    

    2024年02月11日
    浏览(34)
  • Shell:脚本中调用另一个脚本不同方法

            在主shell脚本中调用子shell脚本有三种不同方法(fork, exec, source)。 fork是最普通的, 就是直接在脚本里面用/directory/script.sh来调用script.sh这个脚本. 运行的时候开一个sub-shell执行调用的脚本,sub-shell执行的时候, parent-shell还在。 sub-shell执行完毕后返回parent-shell. sub-shell从

    2024年01月24日
    浏览(41)
  • 在 SHELL 脚本中调用另一个 SHELL 脚本(报错: go: not found)

    在Linux平台上开发,经常会在console(控制台)上执行另外一个脚本文件,经常用的方法有:./my.sh 或 source my.sh 或 . my.sh;这三种方法有什么不同呢? 问题: A 脚本调 B脚本,如下:sudo ./build.sh 报错 B脚本中的 ./build.sh: 5: go: not found。 但是单独运行B脚本没有问题。 问题分析: 这

    2024年02月13日
    浏览(51)
  • Jenkins CI/CD 持续集成专题三 Jenkins 使用shell脚本打包组件配置流程

    第六步 查看编译状态和产物 到这里,jenkins 配置shell脚本打包组件的完整配置流程就已经完成

    2024年04月29日
    浏览(58)
  • shell脚本查询脚本否在运行

    可以使用 ps 命令来查询脚本是否正在运行。例如,要查询名为 script.sh 的脚本是否正在运行,可以使用以下命令: 如果脚本正在运行,则 grep 命令会输出包含脚本名称的行;如果脚本没有运行,则不会有输出。 注意:如果有多个脚本正在运行,且脚本名称中包含了 script.sh

    2024年02月06日
    浏览(44)
  • k8s服务部署核心流程:以Jenkins为核心,从Gitee拉取代码,然后进行maven构建,之后使用docker命令打镜像,并推送镜像到harbor仓库,之后远程调用k8s命令创建服务

    前提是我们在自己电脑上模拟整个流程。 假设我们需要搭建一主一从的k8s集群,那就需要安装VMvare和Centos7(点击我查看安装文档), 然后就可以在这两个虚拟机上搭建k8s集群了(点击我查看安装文档), 一个最简单的devops流程已经在标题中写明了, 其中可以搭建gitlab(点

    2024年02月02日
    浏览(60)
  • 容器部署Jenkins,执行构建任务后,需要执行宿主机上的shell脚本

    遇到的问题:使用docker 部署了一个Jenkins ,Jenkins里执行构建,构建后需要执行宿主机上的shell脚本,这种该如何操作呢。怎么可以退出到宿主机执行shell,最开始挂载了Jenkins_home目录,可以找到shell脚本,但是shell脚本比如cp目录都是对应的宿主机的,在容器里是找不到 步骤一

    2024年02月15日
    浏览(41)
  • Jenkins执行shell脚本报错:docker: command not found

    搭建完Jenkins之后,着手开始创建构建服务的任务,点击构建,但是一直构建失败,控制台日志一直报错 截图 尝试了了很多解决办法,比如在shell脚本前加上两行代码 但对于我的情况还是不起作用。 最后才发现,是我的Jenkins没有配置全局的PATH环境变量,配置方法如下 1、首

    2024年02月13日
    浏览(42)
  • jenkins使用shell脚本自动部署java项目,nohup启动不成功

    百度搜索了很长时间,很多种说法,但是都没说太明白,整合了很长时间,测出来了解决方法,仅测试了自由风格项目和流水线项目,其他的选项未测试,jenkins版本2.400。   以下为正文: 执行脚本时,因为jenkins会在构建结束时,将shell运行期间产生的进程全部关闭,所以n

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包