-
Notifications
You must be signed in to change notification settings - Fork 0
/
azure-pipelines.yml
170 lines (154 loc) · 4.51 KB
/
azure-pipelines.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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# Trigger CI automatically whenever main branch is changed
name: FSMS Angular Inventions CI Pipeline
pool:
vmImage: "ubuntu-latest"
strategy:
matrix:
node_14_x:
node_version: 14.x
# node_14_x:
# node_version: 14.x
variables:
AUTH_NPMTOKEN: $(NPM_TOKEN) # NPM auth token to publish package to npm registry
IS_PULLREQUEST: $[eq(variables['Build.Reason'], 'PullRequest')]
NPM_CACHE_DIR: $(PIPELINE_CACHE_DIR) # $(Build.SourcesDirectory)/node_modules
CAN_SKIP_NX_CACHE: $[eq(variables['CAN_SKIP_NX_CACHE'], 'True')]
trigger:
- master
steps:
- task: NodeTool@0
inputs:
versionSpec: $(node_version)
- task: Cache@2 # Cache Node packages on build agent
displayName: "Cache npm Dependencies"
inputs:
key: "**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json"
path: $(NPM_CACHE_DIR)
cacheHitVar: CacheRestored
# Runing NPM CI only install node packages if package-lock.json changed
- task: Npm@1
displayName: 'NPM CI'
inputs:
command: ci
verbose: false
condition: ne(variables['CacheRestored'], 'true')
# Creating Nx COMMANDS
- powershell: |
Write-Host "##vso[task.setvariable variable=COMMANDS]$(node ./tools/scripts/generate-nx-commands.js $(IS_PULLREQUEST) $(CAN_SKIP_NX_CACHE))"
displayName: Creating Nx Commands
# Displaying Nx Commands
- script: echo $(COMMANDS)
name: echoCommands
displayName: Displaying Nx Commands
# Linting Projects
- script: node ./tools/scripts/run-nx-commands.js '$(COMMANDS)' lint
enabled: false
displayName: Linting Projects
condition: |
and(
succeeded(),
not(contains(
variables['COMMANDS'],
'"lint":[]'
))
)
# Testing Projects
- script: node ./tools/scripts/run-nx-commands.js '$(COMMANDS)' test
enabled: true
displayName: Testing Projects
condition: |
and(
succeeded(),
not(contains(
variables['COMMANDS'],
'"test":[]'
))
)
# Publish Test Results
- task: PublishTestResults@2
enabled: false
displayName: Publish Test Results
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '**/test_results/jest-junit.xml'
mergeTestResults: true
condition: |
and(
succeeded(),
not(contains(
variables['COMMANDS'],
'"test":[]'
))
)
# Publish Code Coverage Results
- task: PublishCodeCoverageResults@1
enabled: false
displayName: Publish Code Coverage
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: '$(Build.SourcesDirectory)/coverage/merged/merged-cobertura-coverage.xml'
condition: |
and(
succeeded(),
not(contains(
variables['COMMANDS'],
'"test":[]'
))
)
# Building Projects
- script: node ./tools/scripts/run-nx-commands.js '$(COMMANDS)' build
enabled: true
displayName: Building Projects
condition: |
and(
succeeded(),
not(contains(
variables['COMMANDS'],
'"build":[]'
))
)
# Update the Patch version of npm package before publishing
- script: |
export newVersion=$(node ./tools/scripts/update-npm-version.js '$(COMMANDS)' '$(Build.BuildId)')
echo "##vso[task.setvariable variable=newVersion]$newVersion"
enabled: true
displayName: Updating NPM Version
condition: |
and(
succeeded(),
not(contains(
variables['COMMANDS'],
'"publish":[]'
)),
ne(variables['IS_PULLREQUEST'], 'true')
)
# Update Pipeline Build Number
- script: |
echo "Using npm package version to update pipeline build number"
echo "##vso[build.updatebuildnumber]$(newVersion)-$(Build.SourceBranchName)"
enabled: true
displayName: Update Build Number
condition: |
and(
succeeded(),
not(contains(
variables['COMMANDS'],
'"publish":[]'
)),
ne(variables['IS_PULLREQUEST'], 'true')
)
# If Not Pull Request Then Publish Apps to NPM with new Patch Version
- script: |
echo "publishing to npm repository"
node ./tools/scripts/publish-npm.js '$(COMMANDS)' '$(AUTH_NPMTOKEN)'
enabled: true
displayName: Publish NPM
condition: |
and(
succeeded(),
not(contains(
variables['COMMANDS'],
'"publish":[]'
)),
ne(variables['IS_PULLREQUEST'], 'true')
)