11

在 Jenkins “通过 Ssh 发布”插件中,我如何使用标签(高级选项)又名参数化发布功能。如何使用标签字段。我在标签字段中输入了什么。我是否需要放置一个具有 Machine Name 的变量名称(我可以从构建参数中读取)。我尝试了同样的方法这是我所做的:

我有一个机器名称 QA_1 并且我有一个变量 jenkins build $MC_NAME 指向 XXX 。我在标签字段中输入了 $MC_NAME。但令我惊讶的是,无论 $MC_NAME 变量的值如何,Jenkins 都会发布到 QA_1 机器。

有人可以告诉我通过使用 Jenkins 的“Publish over Ssh”插件中提交的 LABEL 来控制哪台机器发布/运行脚本的确切步骤吗

4

2 回答 2

16

回答您的问题以及我如何配置我的流程:

1.配置Jenkins

  1. 安装 Publish over SSH 插件
  2. 配置 Jenkins => 系统配置
  3. 通过 SSH 发布部分

    • 密钥 => -----BEGIN RSA PRIVATE KEY----- ...这是您的密钥 ... -----END RSA PRIVATE KEY----- 1.2.1.2 SSH 服务器 =>
    • 名称:Server_1(它只是配置的名称)
    • 主机名:example_server_1.com(您的服务器的网址)
    • 用户名:ec2-user(亚马逊)

    • 单击添加服务器按钮

    • 名称:Server_2(它只是配置的名称)
    • 主机名:example_server_2.com(您的服务器的网址)
    • 用户名:ec2-user(亚马逊)

2.作业配置

  1. 打开作业 => 配置
  2. 检查此项目是否已参数化
  3. 添加选择参数

    • 名称:服务器
    • 选择:

       server_1
       server_2
      
  4. 选择通过 SSH 发送文件或执行命令=> SSH 服务器部分
    • 名称:选择您的第一台服务器
    • 输入传输集数据(源文件和/或 Exec_command)
    • 单击高级
    • 标签:server_1(这是您选择参数的首选)
    • 单击添加服务器
    • 名称:选择您的第二台服务器
    • 输入传输集数据(源文件和/或 Exec_command)
    • 单击高级
    • 标签:server_2(这是您选择参数的第二个选择)
    • 在按钮Add Server前面,单击Advanced
    • 检查参数化发布
    • 参数名称:服务器(这是您选择的参数的名称)

3.作业运行

运行作业并选择例如 Server => server_2。

您将在日志中看到:

SSH: Skipping [server_1] - Label server_1 does not match expression server_2
SSH: Publishing to [server_2] - Label server_2 matches expression server_2
SSH: Connecting from host [ip-10-0-0-37]
SSH: Connecting with configuration [server_2] ...

解释

该插件将名为“Server”的参数的值(您在作业开始之前选择)与您配置的标签进行比较。如果标签和参数匹配,则执行 SSH 命令。

希望对您有所帮助。因为我花了5个小时。

于 2014-10-21T07:49:57.497 回答
8

您应该启用“参数化发布”并通过单击构建配置中“添加构建后操作”按钮之前的最后一个“高级...”按钮来指定构建参数名称(例如,我使用构建后操作部分)。

例如“构建参数名称”= SSH_SERVER. 然后应该有SSH_SERVER带有正则表达式的构建参数来匹配 ssh 服务器标签。

在您的情况下,SSH_SERVER构建参数应该设置为 XXX,之后 SSH 发布应该只发生在 QA_1 服务器上。

于 2012-11-19T14:48:33.030 回答