Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/build/azure-pipelines/common/sanity-tests.yml
5334 views
1
parameters:
2
- name: name
3
type: string
4
- name: displayName
5
type: string
6
- name: poolName
7
type: string
8
- name: os
9
type: string
10
default: linux
11
- name: container
12
type: string
13
default: ""
14
- name: arch
15
type: string
16
default: amd64
17
- name: baseImage
18
type: string
19
default: ""
20
- name: pageSize
21
type: string
22
default: ""
23
- name: args
24
type: string
25
default: ""
26
27
jobs:
28
- job: ${{ parameters.name }}
29
displayName: ${{ parameters.displayName }}
30
pool:
31
name: ${{ parameters.poolName }}
32
os: ${{ parameters.os }}
33
timeoutInMinutes: 30
34
variables:
35
TEST_DIR: $(Build.SourcesDirectory)/test/sanity
36
LOG_FILE: $(TEST_DIR)/results.xml
37
DOCKER_CACHE_DIR: $(Pipeline.Workspace)/docker-cache
38
DOCKER_CACHE_FILE: $(DOCKER_CACHE_DIR)/${{ parameters.container }}.tar
39
steps:
40
- checkout: self
41
fetchDepth: 1
42
fetchTags: false
43
sparseCheckoutDirectories: test/sanity .nvmrc
44
displayName: Checkout test/sanity
45
46
- task: NodeTool@0
47
inputs:
48
versionSource: fromFile
49
versionFilePath: .nvmrc
50
displayName: Install Node.js
51
52
- script: npm config set registry "$(NPM_REGISTRY)" --location=project
53
workingDirectory: $(TEST_DIR)
54
displayName: Configure NPM Registry
55
56
- task: npmAuthenticate@0
57
inputs:
58
workingFile: $(TEST_DIR)/.npmrc
59
displayName: Authenticate with NPM Registry
60
61
- script: npm ci
62
workingDirectory: $(TEST_DIR)
63
displayName: Install NPM Dependencies
64
65
- script: npm run compile
66
workingDirectory: $(TEST_DIR)
67
displayName: Compile Sanity Tests
68
69
# Windows
70
- ${{ if eq(parameters.os, 'windows') }}:
71
- script: $(TEST_DIR)/scripts/run-win32.cmd -c $(BUILD_COMMIT) -q $(BUILD_QUALITY) -t $(LOG_FILE) -v ${{ parameters.args }}
72
workingDirectory: $(TEST_DIR)
73
displayName: Run Sanity Tests
74
75
# macOS
76
- ${{ if eq(parameters.os, 'macOS') }}:
77
- bash: $(TEST_DIR)/scripts/run-macOS.sh -c $(BUILD_COMMIT) -q $(BUILD_QUALITY) -t $(LOG_FILE) -v ${{ parameters.args }}
78
workingDirectory: $(TEST_DIR)
79
displayName: Run Sanity Tests
80
81
# Native Linux host
82
- ${{ if and(eq(parameters.container, ''), eq(parameters.os, 'linux')) }}:
83
- bash: $(TEST_DIR)/scripts/run-ubuntu.sh -c $(BUILD_COMMIT) -q $(BUILD_QUALITY) -t $(LOG_FILE) -v ${{ parameters.args }}
84
workingDirectory: $(TEST_DIR)
85
displayName: Run Sanity Tests
86
87
# Linux Docker container
88
- ${{ if ne(parameters.container, '') }}:
89
- task: Cache@2
90
inputs:
91
key: 'docker-v3 | "${{ parameters.container }}" | "${{ parameters.arch }}" | "${{ parameters.pageSize }}" | "$(Agent.OS)" | $(TEST_DIR)/containers/${{ parameters.container }}.dockerfile'
92
path: $(DOCKER_CACHE_DIR)
93
restoreKeys: docker-v3 | "${{ parameters.container }}" | "${{ parameters.arch }}" | "${{ parameters.pageSize }}" | "$(Agent.OS)"
94
cacheHitVar: DOCKER_CACHE_HIT
95
displayName: Download Docker Image
96
97
- bash: |
98
docker load -i "$(DOCKER_CACHE_FILE)"
99
rm -f "$(DOCKER_CACHE_FILE)"
100
condition: eq(variables.DOCKER_CACHE_HIT, 'true')
101
displayName: Load Docker Image
102
103
- bash: |
104
$(TEST_DIR)/scripts/run-docker.sh \
105
--container "${{ parameters.container }}" \
106
--arch "${{ parameters.arch }}" \
107
--base-image "${{ parameters.baseImage }}" \
108
--page-size "${{ parameters.pageSize }}" \
109
--quality "$(BUILD_QUALITY)" \
110
--commit "$(BUILD_COMMIT)" \
111
--test-results "/root/results.xml" \
112
--verbose \
113
${{ parameters.args }}
114
workingDirectory: $(TEST_DIR)
115
displayName: Run Sanity Tests
116
117
- bash: |
118
mkdir -p "$(DOCKER_CACHE_DIR)"
119
docker save -o "$(DOCKER_CACHE_FILE)" "${{ parameters.container }}"
120
condition: and(succeeded(), ne(variables.DOCKER_CACHE_HIT, 'true'))
121
displayName: Save Docker Image
122
123
- task: PublishTestResults@2
124
inputs:
125
testResultsFormat: JUnit
126
testResultsFiles: $(LOG_FILE)
127
testRunTitle: ${{ parameters.displayName }}
128
displayName: Publish Test Results
129
condition: succeededOrFailed()
130
131