Skip to content

Commit 2645da9

Browse files
committed
Do semver checking in a separate job
1 parent fd7a0c7 commit 2645da9

File tree

5 files changed

+81
-24
lines changed

5 files changed

+81
-24
lines changed

eng/cgmanifest.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"$schema": "https://json.schemastore.org/component-detection-manifest.json",
3+
"version": 1,
4+
"registrations": [
5+
{
6+
"component": {
7+
"type": "cargo",
8+
"cargo": { "name": "cargo-semver-checks", "version": "0.45.0" }
9+
},
10+
"developmentDependency": true
11+
}
12+
]
13+
}

eng/pipelines/templates/jobs/ci.tests.yml

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -58,26 +58,6 @@ jobs:
5858
ServiceDirectory: ${{ parameters.ServiceDirectory }}
5959
PackageInfoDirectory: $(Build.ArtifactStagingDirectory)/PackageInfo
6060

61-
- task: Cache@2
62-
displayName: Cache cargo bin directory
63-
inputs:
64-
key: '"cargo-bin" | eng/cgmanifest.json | "$(OSVmImage)" | "$(RustToolchainName)"'
65-
path: ~/.cargo/bin
66-
67-
- task: PowerShell@2
68-
displayName: Check SemVer compatibility
69-
condition: >-
70-
and(
71-
succeeded(),
72-
ne(variables['NoPackagesChanged'],'true'),
73-
eq(variables['RustToolchainName'], 'stable')
74-
)
75-
inputs:
76-
pwsh: true
77-
filePath: $(Build.SourcesDirectory)/eng/scripts/Test-Semver.ps1
78-
arguments: >
79-
-PackageInfoDirectory '$(Build.ArtifactStagingDirectory)/PackageInfo'
80-
8161
- ${{ if eq(parameters.TestProxy, true) }}:
8262
- template: /eng/common/testproxy/test-proxy-standalone-tool.yml
8363

eng/pipelines/templates/jobs/ci.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ jobs:
3232
Toolchain: stable
3333
TimeoutInMinutes: ${{ parameters.TestTimeoutInMinutes }}
3434

35+
- template: /eng/pipelines/templates/jobs/semver.yml
36+
parameters:
37+
ServiceDirectory: ${{ parameters.ServiceDirectory }}
38+
3539
- template: /eng/common/pipelines/templates/jobs/generate-job-matrix.yml
3640
parameters:
3741
JobTemplatePath: /eng/pipelines/templates/jobs/ci.tests.yml
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
parameters:
2+
- name: ServiceDirectory
3+
type: string
4+
5+
jobs:
6+
- job: Semver
7+
displayName: Semver Check
8+
condition: and(succeeded(), ne(variables['Skip.Semver'], 'true'))
9+
10+
pool:
11+
os: linux
12+
name: $(LINUXPOOL)
13+
image: $(LINUXVMIMAGE)
14+
15+
steps:
16+
- template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
17+
parameters:
18+
paths:
19+
- "/*"
20+
21+
- template: /eng/pipelines/templates/steps/use-rust.yml@self
22+
parameters:
23+
Toolchain: stable
24+
25+
- template: /eng/pipelines/templates/steps/vcpkg.yml
26+
27+
- template: /eng/common/pipelines/templates/steps/set-default-branch.yml@self
28+
29+
- template: /eng/common/pipelines/templates/steps/save-package-properties.yml@self
30+
parameters:
31+
ServiceDirectory: ${{ parameters.ServiceDirectory }}
32+
PackageInfoDirectory: $(Build.ArtifactStagingDirectory)/PackageInfo
33+
34+
- task: PowerShell@2
35+
displayName: Check SemVer compatibility
36+
condition: >-
37+
and(
38+
succeeded(),
39+
ne(variables['NoPackagesChanged'],'true'),
40+
eq(variables['RustToolchainName'], 'stable')
41+
)
42+
inputs:
43+
pwsh: true
44+
filePath: $(Build.SourcesDirectory)/eng/scripts/Test-Semver.ps1
45+
arguments: >
46+
-PackageInfoDirectory '$(Build.ArtifactStagingDirectory)/PackageInfo'

eng/scripts/Test-Semver.ps1

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ param(
66
[Parameter(ParameterSetName = 'Named')]
77
[string[]]$PackageNames,
88
[Parameter(ParameterSetName = 'PackageInfo')]
9-
[string]$PackageInfoDirectory
9+
[string]$PackageInfoDirectory,
10+
[switch]$IgnoreCgManfiestVersion
1011
)
1112

1213
. ([System.IO.Path]::Combine($PSScriptRoot, '..', 'common', 'scripts', 'common.ps1'))
@@ -44,9 +45,22 @@ function Get-OutputPackageNames($workspacePackages) {
4445
$packages = Get-CargoPackages
4546
$outputPackageNames = Get-OutputPackageNames $packages
4647

47-
LogGroupStart "cargo install cargo-semver-checks"
48-
Write-Host "cargo install cargo-semver-checks"
49-
cargo install cargo-semver-checks --locked
48+
# Read version from cgmanifest.json. If ignored the currently installed or
49+
# "latest" version is used.
50+
$versionParams = @()
51+
if (!$IgnoreCgManfiestVersion) {
52+
$versionParams += '--version'
53+
$cgManfiest = Get-Content ([System.IO.Path]::Combine($PSScriptRoot, '..', 'cgmanifest.json')) `
54+
| ConvertFrom-Json
55+
$versionParams += $cgManfiest.
56+
registrations.
57+
Where({ $_.component.type -eq 'cargo' -and $_.component.cargo.name -eq 'cargo-semver-checks' }).
58+
component.cargo.version
59+
}
60+
61+
LogGroupStart "cargo install cargo-semver-checks $($versionParams -join ' ')"
62+
Write-Host "cargo install cargo-semver-checks $($versionParams -join ' ')"
63+
cargo install cargo-semver-checks --locked @versionParams
5064
LogGroupEnd
5165

5266
$packageParams = @()

0 commit comments

Comments
 (0)