en-US/about_PSDeploy.help.txt

TOPIC
    about_PSDeploy

SHORT DESCRIPTION
    PSDeploy is a module to simplify deployments

LONG DESCRIPTION
    PSDeploy is a module to simplify deployments, targeted at
    continuous integration and delivery scenarios.

DETAILED DESCRIPTION
    PSDeploy is a module to simplify deployments, targeted at
    continuous integration and delivery scenarios.

    Terminology and concepts
    ========================
    There are three primary concepts:

        *.PSDeploy.ps1 Script: Scripts that tell PSDeploy what you want to deploy
                                These are an alternative to Deployment yaml files.

        Deployment Type: These define how to actually deploy something.
                                Each type is associated with a script.
                                The default types are FileSystem and FileSystemRemote. This is extensible.

        Deployment Script: These are scripts associated to a particular deployment type.
                                They tell PSDeploy how to deploy a DeploymentType.
                                All should accept a 'Deployment' parameter.
                                For example, the FileSystem script uses robocopy or copy-item to deploy folders and files, respectively.

    Conventions
    ===========

    These could change.

    The current path is assumed to be relative to source files. For example:
        If the current path is C:\Whatever,
        and a source points to 'Modules\MyModules',
        this would mean C:\Whatever\Modules\MyModules.
        You can override this with the DeploymentRoot parameter
        on Invoke-PSDeploy and Get-PSDeployment

    Example use (*.PSDeploy.ps1)
    ===========

    I want to deploy C:\Git\MyModuleRepo\MyModule to \\Server\Modules\MyModule

        C:\Git\MyModuleRepo\My.PSDeploy.ps1 looks like this:

            Deploy MyDeploymentName {

                By FileSystem 'OptionalName' {

                    FromSource 'MyModule'
                    To '\\Server\Modules\MyModule'
                    Tagged Prod, Module
                    WithOptions @{
                        Mirror = $True
                    }
                }
            }

        # Invoke a deployment:
        cd C:\Git\MyModuleRepo
        Invoke-PSDeploy

        # Alternatively:
        Invoke-PSDeploy -Path C:\Git\MyModuleRepo

    See about_PSDeploy_Definitions for more information

    Extending PSDeploy
    ==================
    PSDeploy is somewhat extensible. To add a new deployment type:

        Update PSDeploy.yml in the PSDeploy root.

            The deployment name is the root node.
            The script node defines what script to run for these deployment types
            The description is... not really used. But feel free to write one!

            For example, I might add support for SCP:
              SCP:
                Script: SCP.ps1
                Description: Deploys artifacts using SCP. Requires Posh-SSH

        Create the associated script in PSDeploy\PSDeployScripts

            For example, I would create \\Path\To\PSDeploy\PSDeployScripts\SCP.ps1

        Include a 'Deployment' parameter.

            See \\Path\To\PSDeploy\PSDeployScripts\FilesystemRemote.ps1 for an example

            Here's how I implement this:
                [ValidateScript({ $_.PSObject.TypeNames[0] -eq 'PSDeploy.Deployment' })]
                [psobject[]]$Deployment

                # Further down, I remove deployment From PSBoundParameters, and splat that as needed.
                # $Deployment would still be available, just not listed in bound params.
                $PSBoundParameters.Remove('Deployment')

        Update yml schema as needed.

            Get-PSDeployment converts the YAML and processes it into a number of 'Deployment' objects.
            If you need other data included, you can extend the YML and reference the
            'Raw' property on the deployment objects: this contains the raw converted YAML.

SEE ALSO
    about_PSDeploy_Definitions
    https://github.com/RamblingCookieMonster/PSDeploy