用于使用清单管理本地和远程octopus部署的命令行工具。
octopose的Python项目详细描述
八体式
octopose是Octopus Deploy的清单/状态驱动部署框架。Octopose允许您基于Octopus Deploy中的发布或部署创建清单文件。
为什么是八字形?
安装
pip install octopose
配置
运行octopose需要各种配置变量,可以在config.master.yaml
:
OCTOPUS_URI: ""
OCTOPUS_HEADERS:
"x-octopus-apikey": ""
PROJECTS:
- ""
STAGING: "~\\StagingLocation"
PACKAGE_SOURCES:
- ""
使用所需变量创建名为config.yaml
的文件副本,并将其复制到~\.octopose\config.yaml
用法
创建清单文件
从config.yaml
中的projects
创建清单文件:
octopose generate
这将基于这些项目和其中的包输出到标准输出清单:
{
'Projects':
{
'Huddle.ABC':
{
'Packages': ['Huddle.ABC']
},
'Huddle.XYZ':
{
'Packages': ['Huddle.XYZ1', 'Huddle.XYZ2']
}
},
'StagingLocation': 'D:\\dev\\huddle\\StagingLocation'
}
基于给定环境中的包生成清单
octopose generate -e uklive
这将添加当前部署到该环境中的版本的特定版本:
{
'Projects':
{
'Huddle.ABC':
{
'Packages': ['Huddle.ABC'],
'Version': '1.0.0'
},
'Huddle.XYZ':
{
'Packages': ['Huddle.XYZ1', 'Huddle.XYZ2'],
'Version': '2.3.0'
}
},
'StagingLocation': 'D:\\dev\\huddle\\StagingLocation'
}
生成清单以仅部署某些包
octopose generate -p Huddle.ABC Huddle.XYZ
这只会将指定的项目添加到清单:
{
'Projects':
{
'Huddle.ABC':
{
'Packages': ['Huddle.ABC'],
'Version': '1.0.0'
},
'Huddle.XYZ':
{
'Packages': ['Huddle.XYZ1', 'Huddle.XYZ2']
}
},
'StagingLocation': 'D:\\dev\\huddle\\StagingLocation'
}
生成清单并忽略某些包
octopose generate -i Tasks Publishing
octopose generate --ignore Tasks
这将从manfest中删除项目。
将清单保存到文件
octopose generate > manifest.json
部署到本地环境
部署到本地环境有助于使用最新的代码设置开发人员,或复制给定的环境以在开发人员工作站上进行调试。
它读取提供的描述本地环境状态的清单文件。
octopose deploy .\manifest.json
或
cat .\manifest.json | octopose deploy .\octopose.py
这将从config.yaml
中指定的nuget包源中下拉版本(或给定版本)。在给定的版本中运行PreDeploy.ps1
、Deploy.ps1
和PostDeploy.ps1
执行它们。
命令也可以通过管道连接在一起:
octopose generate | octopose deploy
部署到已知的八达通部署环境
octopose还可用于使用manifest.json
文件中指定的版本和版本部署到远程环境,如登台和生产环境。
下面的命令将把提供的manifest.json
中描述的状态部署到环境uklive
。
octopose deploy -e uklive .\manifest.json
--force
标志将确保包被重新下载,即使它已经部署到目标环境中。
--wait
标志将导致octopose持续轮询octopus部署任务,直到它们完成。
--verbose
(或-v
)标志将导致octopose从*Deploy.ps1
文件输出所有日志。否则,如果返回非零退出代码,将只从脚本中产生日志。
octopose deploy -e staging --wait --force --verbose