en-us/about_AutomatedLab_cicd.help.txt
TOPIC
about_automatedlab_cicd SHORT DESCRIPTION Generic help about the Role 'cicd' in AutomatedLab LONG DESCRIPTION CI/CD Pipeline AutomatedLab now also lets you create release pipelines inside your lab by making use of AutomatedLab.Common's new TFS cmdlets. THE LAB Your lab should include at least one TFS 2017 server and a suitable SQL 2016 server. You can use the sample provided at DSC with release pipeline . Add-LabMachineDefinition -Roles Tfs2017 Add-LabMachineDefinition -Roles TfsBuildWorker # Optional, directly adds build workers to your TFS agent pools THE PIPELINE Before starting you should have an understanding of what a release pipeline is. There are plenty of resources out there. Especially for DSC, you could have a look here . To add a new pipeline in AutomatedLab, here are the two cmdlets. GET-LABBUILDSTEP This cmdlet lists all available build steps that you can configure since there is not much documentation available. The output of `Get-LabBuildStep` can be copied and pasted with the correct formatting to use with `New-LabReleasePipeline`. NEW-LABRELEASEPIPELINE This cmdlet goes through the necessary steps to create a new CI/CD pipeline. A project will be created, if specified a git repository will be forked and pushed to the new team project's repository and the build definition will be created. The build definition is the only thing that requires some though. Since a build definition consists of multiple build steps you will need to select for yourself which steps might make sense. $buildSteps = @( @{ "enabled" = $true "continueOnError" = $false "alwaysRun" = $false "displayName" = "Execute Build.ps1" "task" = @{ "id" = "e213ff0f-5d5c-4791-802d-52ea3e7be1f1" "versionSpec" = "*" } "inputs" = @{ scriptType = "filePath" scriptName = ".Build.ps1" arguments = "-resolveDependency" failOnStandardError = $false } } ) ## Clone the DSCInfraSample code and push the code to TFS while creating a new Project and the necessary build definitions New-LabReleasePipeline -ProjectName 'ALSampleProject' -SourceRepository https://github.com/gaelcolas/DSCInfraSample -BuildSteps $buildSteps The `ID` you can see in the little code sample refers to the build step `ID`. This is part of the output of `Get-LabBuildStep`: @{ enabled = True continueOnError = False alwaysRun = False displayName = 'YOUR OWN DISPLAY NAME HERE' # e.g. Archive files $(message) or Archive Files task = @{ id = 'd8b84976-e99a-4b86-b885-4849694435b0' versionSpec = '*' } inputs = @{ rootFolder = 'VALUE' # Type: filePath, Default: $(Build.BinariesDirectory), Mandatory: True includeRootFolder = 'VALUE' # Type: boolean, Default: true, Mandatory: True archiveType = 'VALUE' # Type: pickList, Default: default, Mandatory: True tarCompression = 'VALUE' # Type: pickList, Default: gz, Mandatory: False archiveFile = 'VALUE' # Type: filePath, Default: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip, Mandatory: True replaceExistingArchive = 'VALUE' # Type: boolean, Default: true, Mandatory: True } } |