85 lines
2.9 KiB
YAML
85 lines
2.9 KiB
YAML
parameters:
|
|
- name: vsixName
|
|
type: string
|
|
default: ''
|
|
- name: srcDir
|
|
type: string
|
|
default: ''
|
|
- name: signType
|
|
type: string
|
|
default: 'real'
|
|
|
|
jobs:
|
|
- job: package
|
|
displayName: Build ${{ parameters.vsixName }}.vsix
|
|
timeoutInMinutes: 30
|
|
cancelTimeoutInMinutes: 1
|
|
templateContext:
|
|
mb: # Enable the MicroBuild Signing toolset
|
|
signing:
|
|
enabled: true
|
|
signType: ${{ parameters.signType }}
|
|
zipSources: false
|
|
${{ if eq(parameters.signType, 'real') }}:
|
|
signWithProd: true
|
|
featureFlags:
|
|
autoBaseline: false
|
|
outputs:
|
|
- output: pipelineArtifact
|
|
displayName: '${{ parameters.vsixName }}.vsix'
|
|
targetPath: $(Build.ArtifactStagingDirectory)\vsix
|
|
artifactName: vsix
|
|
|
|
steps:
|
|
- checkout: self
|
|
|
|
- task: UseNode@1
|
|
displayName: Use Node 22.x
|
|
inputs:
|
|
version: 22.x
|
|
|
|
- script: IF EXIST %SYSTEMDRIVE%\Users\%USERNAME%\.npmrc del %SYSTEMDRIVE%\Users\%USERNAME%\.npmrc
|
|
displayName: Delete .npmrc if it exists
|
|
|
|
- task: Bash@3
|
|
displayName: Build files
|
|
inputs:
|
|
targetType: 'inline'
|
|
script: |
|
|
export SRC_DIR=$(echo $BUILD_SOURCESDIRECTORY | sed 's|\\|/|g')
|
|
cd "$SRC_DIR/${{ parameters.srcDir }}"
|
|
npm install
|
|
if [ $? -ne 0 ]; then
|
|
echo "npm install failed, sleeping for 30s before retrying..."
|
|
sleep 30
|
|
exit 1
|
|
fi
|
|
retryCountOnTaskFailure: 3
|
|
|
|
- script: mkdir $(Build.ArtifactStagingDirectory)\vsix
|
|
displayName: Create Staging Directory
|
|
|
|
- script: |
|
|
cd $(Build.SourcesDirectory)\${{ parameters.srcDir }}
|
|
npx @vscode/[email protected] package -o $(Build.ArtifactStagingDirectory)\vsix\${{ parameters.vsixName }}.vsix
|
|
displayName: Run VSCE to package vsix
|
|
|
|
# sign the vsix
|
|
- script: npx @vscode/[email protected] generate-manifest -i $(Build.ArtifactStagingDirectory)\vsix\${{ parameters.vsixName }}.vsix -o $(Build.ArtifactStagingDirectory)\vsix\${{ parameters.vsixName }}.manifest
|
|
displayName: generate manifest
|
|
workingDirectory: $(Build.SourcesDirectory)\${{ parameters.srcDir }}
|
|
- script: copy $(Build.ArtifactStagingDirectory)\vsix\${{ parameters.vsixName }}.manifest $(Build.ArtifactStagingDirectory)\vsix\${{ parameters.vsixName }}.signature.p7s
|
|
displayName: prepare manifest for signing
|
|
workingDirectory: $(Build.SourcesDirectory)\${{ parameters.srcDir }}
|
|
- task: NuGetToolInstaller@1
|
|
displayName: Install NuGet
|
|
- task: NuGetAuthenticate@1
|
|
displayName: Authenticate NuGet
|
|
- script: nuget restore $(Build.SourcesDirectory)\Build\signing\SignVsix.proj -PackagesDirectory $(Build.SourcesDirectory)\Build\signing\packages -ConfigFile $(Build.SourcesDirectory)\Build\signing\NuGet.config
|
|
displayName: Restore MicroBuild Core
|
|
- task: MSBuild@1
|
|
displayName: Sign the vsix
|
|
inputs:
|
|
solution: $(Build.SourcesDirectory)\Build\signing\SignVsix.proj
|
|
msbuildArguments: /p:SignType=${{ parameters.signType }}
|