云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

域名注册_斗破苍穹漫画百度云_超低折扣

小七 141 0

上云_如何选_物联网应用场景

Jenkins工作流-使用全局库实现一个可重用的函数来调用一个安全的HTTP端点这篇博客文章将演示如何使用HTTP访问外部系统,该系统受到基于会话的登录的保护。这种类型的集成通常需要检索要在工作流中使用的信息,或者触发现有外部系统(如部署框架)上的事件。这些类型的系统通常具有某种形式的身份验证机制-它可能是基于基本身份验证的,云服务器免,或者使用某种形式的基于会话的安全机制。这篇博客文章将展示如何使用以下内容特点:Jenkins工作流基于pluginGit的工作流全局库repositorycurl cookie handlingGetting StartedRequirementsJDK 1.7+Jenkins 1.609+使用基于会话的身份验证保护的外部系统-(在本示例中,我使用启用了安全性的Jenkins服务器作为示例)不建议您这样做,因为Jenkins有更好的基于令牌的api可供使用)安装下载并安装JDK 1.7或更高版本下载并安装jenkinstart jenkinsetup JenkinsUpdate plugins-通过转到Manage Jenkins->Manage plugins->Updates并选择任何与工作流相关的更新。更新完成后重新启动Jenkins。在撰写本文时,最新版本是1.8Global libraries repo-Jenkins公开了一个Git存储库,用于托管在主服务器上管理的多个CD管道中重用的全局库。我们将设置此存储库,以便您可以在此基础上创建自己的自定义库。如果这是一个新的Jenkins安装,而您还没有设置这个git存储库,请按照以下说明进行设置。重要-在继续下一步之前,请确保您的Jenkins实例正在运行有关如何设置共享库的详细信息,请参阅工作流全局库-请注意,如果启用了安全性,ssh格式有效最好。如果使用ssh确保您的公钥已在中配置詹金斯。去初始化git r时代:git克隆ssh://@:/workflowLibs.gitWhereUSER是可以验证的有效用户Jenkins_HOST是要在其上运行工作流的Jenkins服务器的DNS名称。如果运行在CloudBees-Jenkins平台上,数据中国,这是相关的客户机主机,而不是Jenkins操作中心node.SSH_端口在Jenkins conf中定义了ssh端口吗图:注意存储库最初是空的。到克隆完成后,开始使用:git checkout-现在你可以正常添加和提交文件了。第一次推到詹金斯的时候,你需要建立一个跟踪系统分支:git push--设置上游原点母盘之后,它应该足够了运行:git pushCreating访问jenkins的共享函数在工作流中创建groovy脚本库:cd workflowLibsmkdir-p src/net/harniman/workflow/jenkins卷曲-O\https://gist.githubusercontent.com/harniman/8f1418af794d26035171/raw/941c86041adf3e9c9bfcf9e650e3365b9ee55/Client.groovygit添加*git提交git pushThis将生成以下脚本net.harniman.workflow.詹金斯,客户可以用于使用以下语法的工作流脚本:def jc=newnet.harniman.workflow.詹金斯,客户()和使用:def response访问的方法=jc.测试(,,,)注意:我们必须不要为脚本定义封闭类,因为我们要调用诸如sh-see之类的步骤函数https://github.com/jenkinsci/workflow-plugin/tree/master/cps-global-lib关于这个的更多细节限制.scripts遵循通常的Groovy包命名格式,因此需要在适当的目录结构中访问这个Jenkins实例是不必要的-它可以通过Jenkins模型从Groovy访问,这是为了展示如何构建基于窗体的访问的客户端下面的脚本是用来访问Jenkins的一个示例,它演示了客户端.groovy:包装net.harniman.workflow詹金斯字符串测试(主机、用户、通过、命令){节点("共享"){init="curl-s-c.cookies${host}"userAttr="j_用户名=${user}"passAttr="j_password=${pass}"jsonAttr="json=%7B%22j_用户名%22%3A+%22${user}%22%2C+%22j_密码%22%3A+%22${通过}%22%2C+%22记住{22%3A+错误%2C+%22%3A+%22%2F%22%7D"login="curl-i-s-b.cookies-c.cookies-d$userAttr-d$passAttr-d'from=%2F'-d$jsonAttr-d'Submit=log+in'$host/j_acegi_安全检查"cmd="curl-L-s-b.cookies-c.cookies$host/$cmd"echo"初始化HTTP连接"sh"${init}>.init 2>&1"echo"正在执行登录"sh"${login}>.login 2>&1"def loginresponse=readFile'.login'如果(loginresponse=~/位置:。*登录错误/){echo"登录错误"错误"无法登录。响应=$loginresponse"  }echo"调用命令"sh"${cmd}>.output 2>&1"def output=readFile'.output'sh"rm.init.login.output"返回输出  } }创建工作流创建工作流定义为的新工作流作业以下内容:def jc=新的net.harniman.workflow.詹金斯,客户()def响应=jc.测试("http://localhost:8080英寸"安妮。管理员","密码",大数据课程,"哇哦")echo"======================="回声响应确保用实际值代替:您可以用所需的cmd替换查询-例如,它可以是/配置.xml检索工作的配置运行检查一切正常的工作时间,所以去吧,触发构建。如果它成功地工作了您应该可以看到控制台中打印的响应的原始正文记录。进一步改进如果您仔细观察,您可以在这个例子中看到,用户名和密码被输出到控制台。不建议这样做,您可以通过与凭据集成并让工作流传递要使用的凭据ID来避免这种情况。有关使用curl的sh步骤的语法的详细信息,请参阅本文。结论工作流全局库提供了跨多个工作流作业共享公共库(groovy脚本)的功能,以帮助保持工作流的干燥。在本文的原始版本中,淘客助手下载,我们使用了groovy内置的HTTP库来进行HTTP调用。在对失败场景的进一步调查和测试中,我们发现当主机重新启动时,通信云,这种情况很脆弱,这种行为的根本原因是,所有工作流逻辑都在主机的进程空间中运行,这包括在node(){}内操作的任何逻辑阻止。到确保在主重新启动期间执行的工作流的可生存性,有必要在工作流步骤中执行大部分工作。它们被设计成传递给一个单独的执行器执行,而不是在主进程空间中执行。因此,我们将运行可能需要大量时间的HTTP调用移动到使用curl的sh步骤中,我们仍然启用了将其打包到共享库模块中的功能,从而简化了工作流脚本并促进了重用。必须确保后续的curl请求共享cookiejar。如果您想利用groovy的功能来执行这样的调用,应该通过从sh或bat调用单独的groovy脚本来完成步骤参考詹金斯工作流-由Udaypal Aarkoti Nigel Harniman高级解决方案架构师CloudBees开始