mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-21 00:59:03 +01:00
132 lines
6.2 KiB
YAML
132 lines
6.2 KiB
YAML
parameters:
|
|
- name: VSCODE_QUALITY
|
|
type: string
|
|
- name: VSCODE_CLI_TARGET
|
|
type: string
|
|
- name: VSCODE_CLI_ARTIFACT
|
|
type: string
|
|
- name: VSCODE_CLI_ENV
|
|
type: object
|
|
default: {}
|
|
- name: VSCODE_CHECK_ONLY
|
|
type: boolean
|
|
default: false
|
|
|
|
steps:
|
|
- ${{ if contains(parameters.VSCODE_CLI_TARGET, '-windows-') }}:
|
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
|
- pwsh: Write-Host "##vso[task.setvariable variable=VSCODE_CLI_PRODUCT_JSON]$(Build.SourcesDirectory)/product.json"
|
|
displayName: Set product.json path
|
|
- ${{ else }}:
|
|
- pwsh: Write-Host "##vso[task.setvariable variable=VSCODE_CLI_PRODUCT_JSON]$(Build.SourcesDirectory)/.build/distro/mixin/${{ parameters.VSCODE_QUALITY }}/product.json"
|
|
displayName: Set product.json path
|
|
- ${{ else }}:
|
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
|
- script: echo "##vso[task.setvariable variable=VSCODE_CLI_PRODUCT_JSON]$(Build.SourcesDirectory)/product.json"
|
|
displayName: Set product.json path
|
|
- ${{ else }}:
|
|
- script: echo "##vso[task.setvariable variable=VSCODE_CLI_PRODUCT_JSON]$(Build.SourcesDirectory)/.build/distro/mixin/${{ parameters.VSCODE_QUALITY }}/product.json"
|
|
displayName: Set product.json path
|
|
|
|
- ${{ if parameters.VSCODE_CHECK_ONLY }}:
|
|
- script: rustup component add clippy && cargo clippy --target ${{ parameters.VSCODE_CLI_TARGET }} --bin=code
|
|
displayName: Lint ${{ parameters.VSCODE_CLI_TARGET }}
|
|
workingDirectory: $(Build.SourcesDirectory)/cli
|
|
env:
|
|
CARGO_NET_GIT_FETCH_WITH_CLI: true
|
|
${{ each pair in parameters.VSCODE_CLI_ENV }}:
|
|
${{ pair.key }}: ${{ pair.value }}
|
|
|
|
- ${{ else }}:
|
|
- script: cargo build --release --target ${{ parameters.VSCODE_CLI_TARGET }} --bin=code
|
|
displayName: Compile ${{ parameters.VSCODE_CLI_TARGET }}
|
|
workingDirectory: $(Build.SourcesDirectory)/cli
|
|
env:
|
|
CARGO_NET_GIT_FETCH_WITH_CLI: true
|
|
VSCODE_CLI_COMMIT: $(Build.SourceVersion)
|
|
${{ each pair in parameters.VSCODE_CLI_ENV }}:
|
|
${{ pair.key }}: ${{ pair.value }}
|
|
|
|
- ${{ if contains(parameters.VSCODE_CLI_TARGET, '-windows-') }}:
|
|
- powershell: |
|
|
. build/azure-pipelines/win32/exec.ps1
|
|
$ErrorActionPreference = "Stop"
|
|
$AppProductJson = Get-Content -Raw -Path "$env:VSCODE_CLI_PRODUCT_JSON" | ConvertFrom-Json
|
|
$env:VSCODE_CLI_APPLICATION_NAME = $AppProductJson.applicationName
|
|
|
|
Write-Host "##vso[task.setvariable variable=VSCODE_CLI_APPLICATION_NAME]$env:VSCODE_CLI_APPLICATION_NAME"
|
|
|
|
Move-Item -Path $(Build.SourcesDirectory)/cli/target/${{ parameters.VSCODE_CLI_TARGET }}/release/code.exe -Destination "$(Build.ArtifactStagingDirectory)/${env:VSCODE_CLI_APPLICATION_NAME}.exe"
|
|
displayName: Stage CLI
|
|
|
|
- task: ArchiveFiles@2
|
|
displayName: Archive CLI
|
|
inputs:
|
|
rootFolderOrFile: $(Build.ArtifactStagingDirectory)/$(VSCODE_CLI_APPLICATION_NAME).exe
|
|
includeRootFolder: false
|
|
archiveType: zip
|
|
archiveFile: $(Build.ArtifactStagingDirectory)/${{ parameters.VSCODE_CLI_ARTIFACT }}.zip
|
|
|
|
- publish: $(Build.ArtifactStagingDirectory)/${{ parameters.VSCODE_CLI_ARTIFACT }}.zip
|
|
artifact: ${{ parameters.VSCODE_CLI_ARTIFACT }}
|
|
displayName: Publish ${{ parameters.VSCODE_CLI_ARTIFACT }} artifact
|
|
|
|
- ${{ else }}:
|
|
- script: |
|
|
set -e
|
|
VSCODE_CLI_APPLICATION_NAME=$(node -p "require(\"$VSCODE_CLI_PRODUCT_JSON\").applicationName")
|
|
echo "##vso[task.setvariable variable=VSCODE_CLI_APPLICATION_NAME]$VSCODE_CLI_APPLICATION_NAME"
|
|
|
|
mv $(Build.SourcesDirectory)/cli/target/${{ parameters.VSCODE_CLI_TARGET }}/release/code $(Build.ArtifactStagingDirectory)/$VSCODE_CLI_APPLICATION_NAME
|
|
displayName: Stage CLI
|
|
|
|
- ${{ if contains(parameters.VSCODE_CLI_TARGET, '-darwin') }}:
|
|
- task: ArchiveFiles@2
|
|
displayName: Archive CLI
|
|
inputs:
|
|
rootFolderOrFile: $(Build.ArtifactStagingDirectory)/$(VSCODE_CLI_APPLICATION_NAME)
|
|
includeRootFolder: false
|
|
archiveType: zip
|
|
archiveFile: $(Build.ArtifactStagingDirectory)/${{ parameters.VSCODE_CLI_ARTIFACT }}.zip
|
|
|
|
- publish: $(Build.ArtifactStagingDirectory)/${{ parameters.VSCODE_CLI_ARTIFACT }}.zip
|
|
artifact: ${{ parameters.VSCODE_CLI_ARTIFACT }}
|
|
displayName: Publish ${{ parameters.VSCODE_CLI_ARTIFACT }} artifact
|
|
|
|
- ${{ else }}:
|
|
- task: ArchiveFiles@2
|
|
displayName: Archive CLI
|
|
inputs:
|
|
rootFolderOrFile: $(Build.ArtifactStagingDirectory)/$(VSCODE_CLI_APPLICATION_NAME)
|
|
includeRootFolder: false
|
|
archiveType: tar
|
|
tarCompression: gz
|
|
archiveFile: $(Build.ArtifactStagingDirectory)/${{ parameters.VSCODE_CLI_ARTIFACT }}.tar.gz
|
|
|
|
- publish: $(Build.ArtifactStagingDirectory)/${{ parameters.VSCODE_CLI_ARTIFACT }}.tar.gz
|
|
artifact: ${{ parameters.VSCODE_CLI_ARTIFACT }}
|
|
displayName: Publish ${{ parameters.VSCODE_CLI_ARTIFACT }} artifact
|
|
|
|
# Make a folder for the SBOM for the specific artifact
|
|
- ${{ if contains(parameters.VSCODE_CLI_TARGET, '-windows-') }}:
|
|
- powershell: mkdir $(Build.ArtifactStagingDirectory)/sbom_${{ parameters.VSCODE_CLI_ARTIFACT }}
|
|
displayName: Make folder for SBOM (Windows)
|
|
|
|
- ${{ else }}:
|
|
- script: mkdir $(Build.ArtifactStagingDirectory)/sbom_${{ parameters.VSCODE_CLI_ARTIFACT }}
|
|
displayName: Make folder for SBOM (non-Windows)
|
|
|
|
# The if cases above are for different OSes,
|
|
# but we're still in the branch where the cli is being published in general.
|
|
# Generate and publish an SBOM.
|
|
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
|
|
displayName: Generate SBOM
|
|
inputs:
|
|
BuildComponentPath: $(Build.SourcesDirectory)/cli
|
|
BuildDropPath: $(Build.ArtifactStagingDirectory)/sbom_${{ parameters.VSCODE_CLI_ARTIFACT }}
|
|
PackageName: Visual Studio Code CLI
|
|
|
|
- publish: $(Build.ArtifactStagingDirectory)/sbom_${{ parameters.VSCODE_CLI_ARTIFACT }}/_manifest
|
|
displayName: Publish SBOM
|
|
artifact: sbom_${{ parameters.VSCODE_CLI_ARTIFACT }}
|