Skip to content

Commit

Permalink
feat: add dependency check step to build pipeline (Azure#16265)
Browse files Browse the repository at this point in the history
* feat: add dependency check step to build pipeline

* fix: move depency check from build-test to analyze

* fix: remove all -x flag in go build to show clear error log

* fix: change param path and simplify implementation

* fix: remove unnecessary ignore package

* fix: use retract info to judge whether a package is deprecated

* fix: change path compare to more simple way

* fix: some script refine
  • Loading branch information
tadelesh authored and jhendrixMSFT committed Jan 12, 2022
1 parent ea85d02 commit 7c6f483
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 4 deletions.
10 changes: 10 additions & 0 deletions eng/pipelines/templates/steps/analyze.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,16 @@ parameters:

steps:

- task: Powershell@2
displayName: 'Dependency Check'
env:
GO111MODULE: 'on'
inputs:
targetType: filePath
pwsh: true
filePath: eng/scripts/Invoke-DependencyCheck.ps1
arguments: 'sdk/${{ parameters.ServiceDirectory }}'

- script: |
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin ${{parameters.LintVersion}}
golangci-lint --version
Expand Down
78 changes: 78 additions & 0 deletions eng/scripts/Invoke-DependencyCheck.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
Param(
[string] $PackageDirectory
)

. (Join-Path $PSScriptRoot .. common scripts common.ps1)

$sdks = Get-AllPackageInfoFromRepo

## Create depcheck module
$workingPath = Join-Path $RepoRoot "sdk" "depcheck"
if (Test-Path -Path $workingPath)
{
Remove-Item -Path $workingPath -Recurse -Force
}
New-Item -ItemType Directory -Force -Path $workingPath

## Init go mod
Set-Location $workingPath
Write-Host "##[command]Executing go mod init in " $workingPath
go mod init github.com/Azure/azure-sdk-for-go/sdk/depcheck
if ($LASTEXITCODE) { exit $LASTEXITCODE }

# Find whether latest version is in the `retract` section in `go.mod` to judge whether the package is temporarily deprecated.
function IsPackageDeprecated($sdk)
{
$RETRACT_SECTION_REGEX = "retract\s*((?<retract>(.|\s)*))"
$modContent = Get-Content (Join-Path $sdk.DirectoryPath 'go.mod') -Raw
if ($modContent -match $RETRACT_SECTION_REGEX) {
return $($matches["retract"]).Indexof($sdk.Version) -ne -1
}
return $false
}

# Get all existed packages
$packagesImport = ""
foreach ($sdk in $sdks)
{
if ($sdk.Name -like "*internal*" -or (IsPackageDeprecated $sdk))
{
continue
}
if ($sdk.Name -eq $PackageDirectory)
{
## Add replace for new package
$modPath = Join-Path $RepoRoot "sdk" "depcheck" "go.mod"
Add-Content $modPath "`nreplace github.com/Azure/azure-sdk-for-go/$($sdk.Name) => ../../$($sdk.Name)`n"
}
$packagesImport = $packagesImport + "`t_ `"github.com/Azure/azure-sdk-for-go/$($sdk.Name)`"`n"
}

## Add main.go
$mainPath = Join-Path $RepoRoot "sdk" "depcheck" "main.go"
New-Item -Path $mainPath -ItemType File -Value '' -Force
Add-Content $mainPath "package main
import (
$packagesImport
)
func main() {
}
"

## Run go mod tidy
Write-Host "##[command]Executing go mod tidy in " $workingPath
go mod tidy
if ($LASTEXITCODE) { exit $LASTEXITCODE }

## Run go build and go vet
Write-Host "##[command]Executing go build -v ./... in " $workingPath
go build -v ./...
if ($LASTEXITCODE) { exit $LASTEXITCODE }

Write-Host "##[command]Executing go vet ./... in " $workingPath
go vet ./...
if ($LASTEXITCODE) { exit $LASTEXITCODE }

Write-Host "Checking dependency has completed. All packages are compatible."
4 changes: 2 additions & 2 deletions eng/scripts/Invoke-MgmtTestgen.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ function Invoke-MgmtTestgen ()

if (!$skipBuild)
{
Write-Host "##[command]Executing go build -x -v ./... in " $currentDirectory
go build -x -v ./...
Write-Host "##[command]Executing go build -v ./... in " $currentDirectory
go build -v ./...
Write-Host "##[command]Build Complete!"
if ($LASTEXITCODE) { exit $LASTEXITCODE }
}
Expand Down
4 changes: 2 additions & 2 deletions eng/scripts/build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@ function Process-Sdk ()

if (!$skipBuild)
{
Write-Host "##[command]Executing go build -x -v ./... in " $currentDirectory
go build -x -v ./...
Write-Host "##[command]Executing go build -v ./... in " $currentDirectory
go build -v ./...
Write-Host "##[command]Build Complete!"
if ($LASTEXITCODE) { exit $LASTEXITCODE }
}
Expand Down

0 comments on commit 7c6f483

Please sign in to comment.