en-US/about_PSDeploy_Definitions.help.txt

TOPIC
    about_PSDeploy_Definitions

SHORT DESCRIPTION
    PSDeploy has several configuration definitions to work with

LONG DESCRIPTION
    PSDeploy has several configuration definitions to work with:

        Deployment configurations: *.PSDeploy.ps1 script files (*.*Deploy.ps1 or *PSDeploy.ps1)
        DeploymentType configurations: Map DeploymentTypes to scripts that run their deployments

    Please see about_PSDeploy for clarification on terminology or other general PSDeploy help

DETAILED DESCRIPTION

    Deployment Configurations: *.PSDeploy.ps1
    =========================================

        These are dynamic PowerShell scripts that tell PSDeploy what to deploy.

        We use the following attributes:

            DeploymentName: Name for a particular deployment. Must be unique.
            DeploymentType: The type of deployment. Tells PSDeploy how to deploy (FileSystem, ARM, etc.)
            DeploymentOptions: One or more options to pass along to the DeploymentType script
            Tags: One or more tags associated with this deployment
            Source: One or more source items to deploy
            Targets: One or more targets to deploy to
            Dependencies: One or more DeploymentNames that this deployment depends on
            WithPreScript: One or more scripts to invoke before this deployment
            WithPostScript: One or more scripts to invoke after this deploymeny

        A *.PSDeploy.ps1 file will have one or more deployment blocks like this:

        Deploy UniqueDeploymentName # Deployment name.
            By FileSystem { # Deployment type.
                FromSource RelativeSourceFolder, # One or more sources to deploy. These are specific to your DeploymentType
                           Subfolder\RelativeSource.File,
                           \\Absolute\Source$\FolderOrFile
                To \\Some\Target$\Folder, # One or more destinations to target for deployment. These are specific to a DeploymentType
                   \\Another\Target$\Folder
                Tagged Prod, Module # One or more tags for this deployment. Optional
                WithOptions @{ # Deployment options hash table to pass as parameters to DeploymentType script. Optional.
                    Mirror = $True
                }
                DependingOn SomeOtherDeployment # Run this deployment only after SomeOtherDeployment has run
                WithPreScript { # Run this script before deploying anything
                    "Set something up"
                }
                WithPostScript { # Run this script after deploying things
                    "Tear something down"
                }
            }

        These are each PowerShell functions (only useful in a PSDeploy.ps1 file), so you can run get help to find out more information:

        Get-Help Deploy -Full
        Get-Help By -Full
        Get-Help FromSource -Full
        Get-Help To -Full
        Get-Help Tagged -Full
        Get-Help WithOptions -Full
        Get-Help DependingOn -Full
        Get-Help WithPostScript -Full
        Get-Help WithPreScript -Full

        Keep in mind that this is a PowerShell script. You can use the language to make your deployments more flexible.

    DeploymentType map: PSDeploy.yml
    ================================

    This is a file that tells PSDeploy what script to use for each DeploymentType. By default, it sits in your PSDeploy module folder.

    There are two scenarios you would generally work with this:

      - You want to extend PSDeploy to add more DeploymentTypes
      - You want to move the PSDeploy.yml to a central location that multiple systems could point to

    There are three attributes to each DeploymentType in this file:

        DeploymentType Name: The name of this DeploymentType
        Script: The name of the script to process these DeploymentTypes
                              This looks in the PSDeploy module path, under PSDeployScripts
                              You can theoretically specify an absolute path
        Description: Description for this DeploymentType. Provided to a user when they run Get-PSDeploymentType.

    The PSDeploy.yml file will have one or more DeploymentType blocks like this:

        Filesystem:
          Script: Filesystem.ps1
          Description: Uses the current session and Robocopy or Copy-Item for folder and file deployments, respectively.

    See about_PSDeploy for more information