Package: octopose
OctoposeOctoposeis a manifest / state driven deployment framework forOctopus Deploy. Octopose allows you to create a manifest file based on your releases or deployments that are in Octopus Deploy.Why Octopose?Installationpip install octoposeConfigurationRunning Octopose requires various configuration variables which can be found inconfig.master.yaml:OCTOPUS_URI: ""
OCTOPUS_HEADERS:
  "x-octopus-apikey": ""
PROJECTS:
  - ""
STAGING: "~\\StagingLocation"
PACKAGE_SOURCES:
  - ""Create a copy of this file calledconfig.yamlwith your desired variables and copy it to~\.octopose\config.yamlUsageCreating a Manifest FileCreate a manifest file from theprojectsinconfig.yaml:octopose generateThis will output to stdout a manifest based on those projects and the packages within them:{
    'Projects':
    {
        'Huddle.ABC':
            {
                'Packages': ['Huddle.ABC']
            },
        'Huddle.XYZ':
            {
                'Packages': ['Huddle.XYZ1', 'Huddle.XYZ2']
            }
    },
    'StagingLocation': 'D:\\dev\\huddle\\StagingLocation'
}Generate a manifest based on packages in a given environmentoctopose generate -e ukliveThis will add the specific versions of the releases that are currently deployed into that environment:{
    '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'
}Generate a manifest to only deploy certain packagesoctopose generate -p Huddle.ABC Huddle.XYZThis will only add the specified projects to the manifest:{
    'Projects':
    {
        'Huddle.ABC':
            {
                'Packages': ['Huddle.ABC'],
                'Version': '1.0.0'
            },
        'Huddle.XYZ':
            {
                'Packages': ['Huddle.XYZ1', 'Huddle.XYZ2']
            }
    },
    'StagingLocation': 'D:\\dev\\huddle\\StagingLocation'
}Generate a manifest and ignore certain packagesoctopose generate -i Tasks Publishing
octopose generate --ignore TasksThis will remove projects from the manfest.Save manifest to a fileoctopose generate > manifest.jsonDeploy to local environmentDeploying to a local environment helps set up developers with the latest code or reproduce a given environment for debugging on your developer workstation.It reads in the manifest file supplied that describes the state of the local environment.octopose deploy .\manifest.jsonOrcat .\manifest.json | octopose deploy .\octopose.pyThis will pull down releases (or given versions) from the NuGet package sources specified inconfig.yaml. The run through thePreDeploy.ps1,Deploy.ps1, andPostDeploy.ps1executing them for the given release.The commands can also be piped together:octopose generate | octopose deployDeploy to a known Octopus Deploy environmentOctopose can also be used to deployed to remote environments such as staging and production using the releases and versions specified in themanifest.jsonfile.The following command will deploy the state described in the suppliedmanifest.jsonto the environmentuklive.octopose deploy -e uklive .\manifest.json--forceflag will ensure the package is re-downloaded even if it is already deployed into the target environment.--waitflag will causeoctoposeto continually poll the Octopus Deploy Tasks till they are complete.--verbose(or-v) flag will causeoctoposeto output all logs from the*Deploy.ps1files. Otherwise there will only be logs from a script if a non-zero exit code is returned.octopose deploy -e staging --wait --force --verbose