云部署Jdcloud-codedeploy文件介绍

Jdcloud-codedeploy文件

在“新建部署”时,若“部署操作命令”选择“使用代码根目录的cloud-codedeploy.yml”,那么,云部署将执行cloud-codedeploy.yml的全部内容。这里需要注意的是,cloud-codedeploy.yml文件所在目录必须为代码根目录,文件名称为cloud-codedeploy.yml(大小写敏感)。

模板

files:-source:config/sql.txtdestination:/home/config/sql-source:file1destination:/home/confighooks:AfterInstall:-command:/opt/Control/Test1.shtimeout:100runas:root-command:/opt/Control/Test2.shtimeout:100permissions:-object:/home/config/softpattern:""except:[function.php]owner:admingroup:adminmode:777type:-fileenv:php_path:/home/config/soft/php/bin

关键字说明

1)files(必须)

source:

  • 支持文件和目录,若为文件,那么将复制(mv)指定文件;若为目录,那么将复制(mv)目录内的文件(不包括本目录);若为一个单斜杠(/),则将复制(mv)所有文件。
  • 相对路径:从代码包的根目录开始

destination:

  • 复制(mv)source中的内容到此位置
  • 绝对路径

支持多对source和destination。

示例

前提:在待部署程序包中,有如下文件:

file1.txtfile2.txtfolder1/file3.txt

下面将举例说明

示例1:

#files如下-source:./file1.txtdestination:/home#执行结果如下:/home/file1.txt

示例2:

#files如下-source:./file1.txtdestination:/home-source:./file2.txtdestination:/home#执行结果如下:/home/file1.txt/home/file2.txt

示例3:

#files如下-source:/destination:/home#执行结果如下:/home/file1.txt/home/file2.txt/home/folder1/file3.txt

示例4:

#files如下-source:./folder1destination:/home/test01#执行结果如下:/home/test01/file3.txt

2)hooks(非必须)

command:

  • 命令或脚本的位置,为绝对路径
  • 必须

timeout:

  • 脚本的超时时间,单位为s
  • 非必须,默认为10s

runas:

  • 执行脚本的用户
  • 非必须,默认为root

工作流中的关键字对hooks的支持情况

关键字解释是否支持hooksDownloadBundle下载程序包否BeforeBlockTraffic取消负载均衡注册的前置脚本是BlockTraffic在负载均衡中取消注册否AfterBlockTraffic取消负载均衡注册的后置脚本是ApplicationStop停止脚本是BeforeInstall部署前置脚本是Install部署否AfterInstall部署后置脚本是ApplicationStart启动脚本是ValidateService检查脚本是BeforeAllowTraffic负载均衡注册的前置脚本是AllowTraffic在负载均衡中注册否AfterAllowTraffic负载均衡注册的后置脚本是

在hooks的脚本中可支持如下环境变量:

环境变量解释JDCLOUD_CODEDEPLOY_APP_ID应用ID,可在部署应用页面查看JDCLOUD_CODEDEPLOY_APP_NAME应用名称,可在部署应用页面查看JDCLOUD_CODEDEPLOY_GROUP_ID部署组ID,可在应用详情页查看JDCLOUD_CODEDEPLOY_GROUP_NAME部署组名称,可在应用详情页查看JDCLOUD_CODEDEPLOY_DEPLOY_ID部署任务ID,可在部署历史页查看JDCLOUD_CODEDEPLOY_LIFECYCLE_EVENT当前生命周期事件,如beforeInstallJDCLOUD_CODEDEPLOY_OPERATION表示当前在执行任务类型上线(UPDATE)/回滚(ROLLBACK)

示例

hooks:AfterInstall:-command:/home/bin/stop.shtimeout:100runas:hadoop-command:/home/bin/stop2.shtimeout:100runas:rootApplicationStart:-command:/home/bin/start.shtimeout:100runas:rootBeforeInstall:-command:/home/bin/config.shtimeout:10将在部署过程中,将在工作流中的对应如下操作:

  • 执行部署前置脚本:以root用户执行/home/bin/config.sh,超时时间为10s
  • 执行启动脚本:以root用户执行/home/bin/start.sh,超时时间为100s
  • 执行部署后置脚本:以hadoop用户执行/home/bin/stop.sh,超时时间为100s,接下来以root用户执行/home/bin/stop2.sh,超时时间为100s。两个command间由上至下顺序执行

建议在hooks脚本中,设置set-e

3)permissions(非必须)

object:

  • 待修改权限的目录或文件
  • 必须

pattern:

  • 若使用"",则权限将应用于所有匹配的目录或文件
  • 非必须

except:

  • 例外的目录或文件
  • 非必须

owner:

  • 指定目录或文件的属主
  • 非必须

group:

  • 指定目录或文件的属组
  • 非必须

mode:

  • 指定目录或文件的mode
  • 非必须

type:

  • 直接目录或文件。若为目录,那么权限将应用于object中除except外的所有目录(不包含object本身);若为文件,那么权限将应用于object中除except外的所有文件(不包含object本身)。目录为directory,文件为file
  • 非必须

示例

permissions:-object:/opt/softpattern:"bin"except:[sbin/start]owner:adminmode:777type:-directory

将在部署过程中,将在工作流中的对应如下操作:

在复制目录或文件到指定路径后,将执行permissions中对应操作:对于/opt/soft目录下,名字可匹配bin,且非sbin/start的目录,执行修改权限操作,权限修改为owner=admin,mode=777

4)env(非必须)

在工作流中执行hooks里的相关脚本时的环境变量

以key:value的方式,指明环境变量

示例

env:php_path:/home/config/soft/php/bin