云客户?
免费开始>
在MyJFrog中升级>
云的新功能>







概述

LinuxVMDeploy原生步骤上传文件到虚拟机VmCluster资源,并在虚拟机上运行命令。如果所有部署都成功,则部署构件的副本将存储在${回家}/ $ {step_name} /回滚在每个虚拟机上。该文件可在文件规范BuildInfoReleaseBundle

页面内容


YAML模式

LinuxVMDeploy native步骤的YAML模式如下:

LinuxVMDeploy
- name:  steps: - name: myLinuxVMDeployStep类型:LinuxVMDeploy配置:environmentVariables: dry_run:  # optional deploy_targets_override:  # optional targetDirectory:  # optional rolloutDelaySecs:  # optional fastFail:  # optional sshUser:  # required vmEnvironmentVariables:  # optional strategy: <"rollingUpdate"|"blueGreen"> # optional;默认“rollingUpdate”inputResourc2022世界杯阿根廷预选赛赛程es: - name:  # 1所需(确切1,确切2为blueGreen策略)。- name:  # required(完全1). scripts: - name:  # required context: <"buildNode"|"targetCluster"|"currentCluster"> # required, "currentCluster"仅支持blueGreen。命令: # optional

标签

名字

一个字母数字标识步骤的字符串(允许使用下划线)。

类型

必须LinuxVMDeploy对于这一步,输入:

配置

指定步骤执行环境的所有配置选择。此步骤继承Bash/PowerShell步骤配置标签,包括这些相关的标签:

标签

使用说明

必需的/可选

集成 必须指定VmCluster资源。 要求
input2022世界杯阿根廷预选赛赛程Resources

必须指定一个文件规范BuildInfoReleaseBundle包含要上传的文件的资源。必须只指定一个。

要求


此外,可以定义这些标签来支持步骤的本机操作:

标签

使用说明

必需的/可选
sshUser 用于连接目标虚拟机的ssh用户。 要求
targetDirectory

将上传部署构件的目录路径。如果该目录不存在,将创建该目录。

默认目录为< sshUser $ HOME > / step_name / run_id美元

可选

vmEnvironmentVariables

这些变量将在目标虚拟机上导出。 可选
rolloutDelaySecs

部署之间的等待时间(以秒为单位)。

可选
fastFail

如果真正的第一次失败后,该步骤将不会部署到其他虚拟机。

默认是真正的

可选
策略

要使用的发布策略。两者都可以rollingUpdateblueGreen

  • rollingUpdate:依次部署到同一集群的虚拟机上。
  • blueGreen:部署到两个中的一个VmCluster2022世界杯阿根廷预选赛赛程资源,每次运行LinuxVMDeploy步骤时交换集群。
可选
脚本

在给定上下文上运行的用户定义命令。

  • 名字命令的名称。
  • 上下文脚本应该运行的位置。buildNode在构建节点上运行。targetCluster在提供的vmCluster上运行。


要求


环境变量

以下环境变量可用于在LinuxVMDeploy步骤中编写的用户定义脚本。

名字 使用说明
target_cluster
部署到的虚拟机集群名称。
current_cluster

最后部署到的虚拟机集群的名称。

支持blueGreen策略。

current_command 退出步骤时正在运行的命令的名称。如果没有运行用户定义的命令,该值应为空。


执行

声明要在执行前和执行后阶段执行的shell命令序列的集合:

标签 使用说明 必需的/可选
onStart 在本机操作之前执行的命令 可选
调用onSuccess 成功完成时执行的命令 可选
onFailure 完成失败时执行的命令 可选
onComplete 在任何补全时执行的命令 可选

执行的操作onExecute阶段是此步骤类型所固有的,并且不能被覆盖。


例子

下面的示例展示了配置LinuxVMDeploy步骤的几种方法。

将FileSpec资源中的应用上传至虚拟机并运行

LinuxVMDeploy的最基本形式。使用所有默认值。该步骤将上传文件到默认值targetDirectory然后运行一个deploy命令。

LinuxVMDeploy
2022世界杯阿根廷预选赛赛程资源:-名称:myApplication类型:FileSpec配置:sourceArtifactory: myArtifactory模式:"示例-repo-local/myApp" -名称:myVM类型:VmCluster配置:sshKey: mySSHKey目标:- 0.0.0.0 - 1.1.1.1管道:-名称:linuxVMDeployPipeline步骤:-名称:linuxVMDeploy类型:linuxVMDeploy配置:inputResources: -名称:myVM -名称:myApplication脚本:-名称:deployCommand上下文:targetCluster命令:- "./myApp"

上传BuildInfo资源中的应用到虚拟机、执行postDeploy命令、回退处理。

上传BuildInfo资源并尝试运行deployCommandpostDeploy命令。如果deployCommand成功,则postDeploy将运行。虚拟机故障(在命令或postDeploy没有成功),然后rollbackCommand将在任何成功部署的VM上运行。

LinuxVMDeploy
2022世界杯阿根廷预选赛赛程资源:—名称:myApplication类型:BuildInfo配置:sourceArtifactory: myArtifactory buildName: myBuild buildNumber: 1—名称:myVM类型:VmCluster配置:sshKey: mySSHKey targets:—0.0.0.0—1.1.1.1管道:—名称:linuxVMDeploy类型:linuxVMDeploy配置:inputResources:—名称:myVM—名称:myApplication sshUser: myUser脚本:—名称:deployCommand上下文:targetCluster命令:—”。/myApp" onFailure: - 'if ["$current_command" == "deployCommand"];then ./ dorrollback .sh fi'

覆盖VmCluster目标

在这个例子中,aVmCluster资源在旁边提供deploy_targets_override环境变量。构件将被部署到中指定的目标deploy_targets_override。来自VmCluster资源的ssh密钥仍将被使用。

LinuxVMDeploy
2022世界杯阿根廷预选赛赛程资源:-名称:myApplication类型:FileSpec配置:sourceArtifactory: myArtifactory模式:"示例-repo-local/myApp" -名称:myVM类型:VmCluster配置:sshKey: s_VM_DEPLOY_SSHKEY目标:- 0.0.0.0 - 1.1.1.1管道:-名称:linuxVMDeployPipeline步骤:-名称:linuxVMDeploy类型:linuxVMDeploy配置:environmentVariables: deploy_targets_override: "123.456.78.90,127.0.0.1" inputResources: -名称:myVM -名称:myApplication sshUser: myUser脚本:-名称:myVM -名称:myApplicationdeployCommand上下文:targetCluster命令:- "./myApp"

向虚拟机命令传递环境变量

在这个例子中,aVmCluster资源提供了vmEnvironmentVariables。上运行的用户定义命令可以使用这些变量targetCluster

LinuxVMDeploy
2022世界杯阿根廷预选赛赛程资源:-名称:myApplication类型:FileSpec配置:sourceArtifactory: myArtifactory模式:"example-repo-local/myApp" -名称:myVM类型:VmCluster配置:sshKey: s_VM_DEPLOY_SSHKEY目标:- 0.0.0.0 - 1.1.1.1管道:-名称:linuxVMDeployPipeline步骤:-名称:linuxVMDeploy类型:linuxVMDeploy配置:vmEnvironmentVariables: - "LOG_LEVEL=DEBUG" inputResources: -名称:myVM -名称:myApplication sshUser: myUser脚本:-名称:deployCommand上下文:targetCluster命令:- "。/ myApp LOG_LEVEL美元”

建立blueGreen部署策略

在这个例子中,是两个VmCluster2022世界杯阿根廷预选赛赛程资源供应和战略blueGreen都是确定的。每运行一次,targetClustercurrentCluster在两个提供的VmCluster资源之间进行交换。2022世界杯阿根廷预选赛赛程

LinuxVMDeploy
2022世界杯阿根廷预选赛赛程资源:-名称:myApplication类型:FileSpec配置:sourceArtifactory: myArtifactory模式:"example-repo-local/myApp" -名称:myVM类型:VmCluster配置:sshKey: s_VM_DEPLOY_SSHKEY目标:- 0.0.0.0 - 1.1.1.1管道:-名称:linuxVMDeployPipeline步骤:-名称:linuxVMDeploy类型:linuxVMDeploy配置:vmEnvironmentVariables: - "LOG_LEVEL=DEBUG" inputResources: -名称:myBlueCluster -名称:myGreenCluster -名称:myApplication sshUser: myUser策略:blueGreen脚本:—名称:deployCommand上下文:targetCluster命令:—”。/ myApp LOG_LEVEL美元”- name: cleanupCommand context: currentCluster commands: - "./stopApp" - name: swapCluster context: buildNode commands: - "./swapLoadBalancer $target_cluster"

它是如何工作的

当你使用LinuxVMDeploy它是管道中的原生步骤,在后台执行以下功能:

  • jfrog rt download(从FileSpec, BuildInfo或ReleaseBundle下载文件)
  • tar(压缩所有要上传到虚拟机的文件)
  • scp(上传压缩后的工件到虚拟机)
  • ssh"mkdir -p"(如果targetDirectory不存在,则创建该目录)
  • 脚本命令通过ssh在目标虚拟机上运行,如果上下文为“buildNode”,则在构建节点本身上运行。
    • 命令按照它们在yaml中写入的顺序运行。
    • 在目标集群上运行的命令可以访问vmEnvironmentVariables中定义的变量。
    • 在targetCluster上创建回滚归档(仅在整个步骤成功时发生)
      • 回退目录位置:“/home/$ssh_user/LinuxVMDeploy/ Rollback”
      • Mkdir -p(如果回滚目录不存在,创建回滚目录)。
      • rm -rf $rollbackDirectory/*(删除旧的回滚工件)
      • cp -r $targetDirectory/* $rollbackDirectory(将所有上传的工件复制到回滚存档)
  • 没有标签
版权所有©2023 JFrog Ltd.