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