-
Notifications
You must be signed in to change notification settings - Fork 57
/
ci-template.yml
144 lines (118 loc) · 5.94 KB
/
ci-template.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
parameters:
installAutorest: false
installTypeSpec: false
installCadlRanch: false
folderName: ""
regenerate: false
checkChange: true
updateToLatestTypespec: false
unitTest: false
skipWarning: false
steps:
- checkout: self
- checkout: azure-sdk-tools
- template: eng/common/testproxy/test-proxy-tool.yml@azure-sdk-tools
parameters:
TestProxy: true
templateRoot: azure-sdk-tools
- task: NodeTool@0
displayName: "Install Node.js 18.x"
inputs:
versionSpec: "18.x"
- task: UsePythonVersion@0
displayName: "Use Python 3.11"
inputs:
versionSpec: 3.11
- script: npm install -g pnpm@9.5.0
displayName: Install pnpm 9.5.0
- script: npm install -g autorest
displayName: Install autorest
condition: and(succeeded(), ${{ parameters.installAutorest }})
- script: npm install -g @typespec/compiler
displayName: Install TypeSpec
condition: and(succeeded(), ${{ parameters.installTypeSpec }})
- script: npm install -g @azure-tools/cadl-ranch
displayName: Install Cadl Ranch
condition: and(succeeded(), ${{ parameters.installCadlRanch }})
- script: npx @azure-tools/typespec-bump-deps package.json packages/typespec-python/package.json
displayName: Update typespec packages to latest dev version
workingDirectory: $(Build.SourcesDirectory)/autorest.python/
condition: and(succeeded(), ${{ parameters.updateToLatestTypespec }})
- script: pnpm install --no-frozen-lockfile
displayName: Pnpm install no frozen lockfile
workingDirectory: $(Build.SourcesDirectory)/autorest.python/
condition: and(succeeded(), ${{ parameters.updateToLatestTypespec }})
- script: pnpm install
displayName: Pnpm install
workingDirectory: $(Build.SourcesDirectory)/autorest.python/
condition: and(succeeded(), eq(${{ parameters.updateToLatestTypespec }}, false))
- script: pnpm list
displayName: Pnpm list
workingDirectory: $(Build.SourcesDirectory)/autorest.python/packages/typespec-python
- script: pnpm run build
displayName: Build project
workingDirectory: $(Build.SourcesDirectory)/autorest.python/
- script: pip list
displayName: List installed packages
workingDirectory: $(Build.SourcesDirectory)/autorest.python/packages/${{parameters.folderName}}
- script: pip install -r dev_requirements.txt
displayName: Pip install dev requirements
workingDirectory: $(Build.SourcesDirectory)/autorest.python/packages/${{parameters.folderName}}
- script: pip list
displayName: List installed packages
workingDirectory: $(Build.SourcesDirectory)/autorest.python/packages/${{parameters.folderName}}
- script: pnpm run lint --command eslint --skipWarning ${{ parameters.skipWarning }}
displayName: Eslint
workingDirectory: $(Build.SourcesDirectory)/autorest.python/packages/${{parameters.folderName}}
- script: pnpm run lint --command pylint
displayName: Pylint
workingDirectory: $(Build.SourcesDirectory)/autorest.python/packages/${{parameters.folderName}}
- script: pnpm run lint --command mypy
displayName: Mypy
workingDirectory: $(Build.SourcesDirectory)/autorest.python/packages/${{parameters.folderName}}
- script: pnpm run lint --command pyright
displayName: Pyright
workingDirectory: $(Build.SourcesDirectory)/autorest.python/packages/${{parameters.folderName}}
- script: pnpm run format
displayName: Black
workingDirectory: $(Build.SourcesDirectory)/autorest.python/packages/${{parameters.folderName}}
- script: node ./eng/scripts/check-for-changed-files.js
displayName: Fail on black diff of root folder
workingDirectory: $(Build.SourcesDirectory)/autorest.python/
condition: and(succeeded(), ${{ parameters.checkChange }})
- script: |
cd test/unittests
tox run -e ci
displayName: Unit tests
workingDirectory: $(Build.SourcesDirectory)/autorest.python/packages/${{parameters.folderName}}/
condition: and(succeeded(), ${{ parameters.unitTest }})
- script: inv regenerate
displayName: "Regenerate Code(autorest)"
workingDirectory: $(Build.SourcesDirectory)/autorest.python/packages/${{parameters.folderName}}/
condition: and(succeeded(), ${{ parameters.regenerate }}, eq('${{parameters.folderName}}', 'autorest.python'))
- script: |
find test/azure/generated -type f ! -name '*apiview_mapping_python.json*' -delete
find test/unbranded/generated -type f ! -name '*apiview_mapping_python.json*' -delete
npm run regenerate
displayName: "Regenerate Code(typespec)"
workingDirectory: $(Build.SourcesDirectory)/autorest.python/packages/${{parameters.folderName}}/
condition: and(succeeded(), ${{ parameters.regenerate }}, eq('${{parameters.folderName}}', 'typespec-python'))
- script: node ../../../eng/scripts/check-for-changed-files.js
displayName: Fail on regeneration diff in Typespec
workingDirectory: $(Build.SourcesDirectory)/autorest.python/packages/typespec-python/test
condition: and(succeeded(), ${{ parameters.regenerate }}, ${{ parameters.checkChange }})
- script: node ../../../eng/scripts/check-for-changed-files.js
displayName: Fail on regeneration diff in Autorest
workingDirectory: $(Build.SourcesDirectory)/autorest.python/packages/autorest.python/test
condition: and(succeeded(), ${{ parameters.regenerate }}, ${{ parameters.checkChange }})
- task: UsePythonVersion@0
displayName: "Use Python $(PythonVersion)"
inputs:
versionSpec: $(PythonVersion)
- script: |
pnpm pack
AbsolutePkgPath=$(find "$(pwd)" -name "autorest-python-*" -maxdepth 1)
cd ../..
pnpm install $AbsolutePkgPath -w --verbose
displayName: Test tarball
workingDirectory: $(Build.SourcesDirectory)/autorest.python/packages/${{parameters.folderName}}/