Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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