Просто подробно остановимся на iftimie-tudor ответ. Я хочу минимизировать вызовы внешних инструментов, таких как Jenkins или Bamboo, в нашем случае, поэтому мы включили сценарии сборки в сценарий сборки и общий сценарий. Я не буду взвешивать, следует ли вам использовать Groovy или PowerShell, так как это зависит от команды и вас. При необходимости вы можете разбить его на несколько сценариев и использовать как groovy, так и powershell. Вот как это будет выглядеть в powershell:
MyBuildScript.ps1
[Parameter(Mandatory=$false,Position=1)]
[string] $CommonTools = '.\tools\jenkins\Common.ps1',
[Parameter(Mandatory=$false, Position=2)]
[switch] $WhatIf
# LOAD MY COMMON FUNCTIONS
. $CommonTools
# BUILD
## i.e MSBuild
# TEST
## i.e NUnit
# PACK
## i.e. OctoPack
# PUSH
if($WhatIf) {
} else {
## i.e push to Octopus
}
Может быть полезно сделать скрипт сборки тестируемым локально.
MyBuildScript.Tests.ps1
Import-Module .\lib\pester.x.x.x\tools\Pester.psm1 -Force
Describe "Test the Build Script" {
It "Builds everything" {
}
}
Полезно также сделать тестируемые локальные инструменты обычными.
Common.Tests.ps1
Import-Module .\lib\pester.x.x.x\tools\Pester.psm1 -Force
Describe "Test the Build Function" {
It "Works" {
}
}
В идеале сценарии контролируются исходным кодом, поэтому вы можете отслеживать изменения при преобразовании каждой части сборки в filip-malczak , упомянутый в комментариях. Если кто-то нарушает сборку, он исправляет сборку. Они добавляют функцию, а она не собирается, исправьте скрипт сборки. Цикл обратной связи максимально быстро выстраивается с тестовой пирамидой . Если нужны тесты, добавьте их.