@@ -27,12 +27,19 @@ variables:
27
27
BuildAgent : ${{ parameters.BuildAgent }}
28
28
GitUserEmail : " GraphTooling@service.microsoft.com"
29
29
GitUserName : " Microsoft Graph DevX Tooling"
30
+ REGISTRY : ' msgraphprodregistry.azurecr.io'
31
+ IMAGE_NAME : ' public/microsoftgraph/powershell'
32
+ PREVIEW_BRANCH : ' refs/heads/main' # Updated to target your branch
30
33
31
34
trigger :
32
35
branches :
33
36
include :
34
37
- main
35
38
- dev
39
+ tags :
40
+ include :
41
+ - v*
42
+
36
43
pr :
37
44
branches :
38
45
include :
@@ -156,7 +163,79 @@ extends:
156
163
nuGetFeedType : external
157
164
publishFeedCredentials : ' microsoftgraph PowerShell Gallery connection'
158
165
166
+ - stage : PushDockerImageToRegistry
167
+ condition : and(or(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'), eq(variables['Build.SourceBranch'], variables['PREVIEW_BRANCH'])), not(contains(variables['Build.SourceBranch'], '-preview')))
168
+ dependsOn : []
169
+ displayName : ' Push docker image'
170
+ jobs :
171
+ - job : PushDockerImage
172
+ displayName : ' Push docker image'
173
+ pool :
174
+ name : Azure-Pipelines-1ESPT-ExDShared
175
+ image : ubuntu-latest
176
+ os : linux
177
+ steps :
178
+ - checkout : self
179
+
180
+ # Display the contents of the Build.SourcesDirectory
181
+ - bash : |
182
+ echo "Build.SourcesDirectory: $(Build.SourcesDirectory)"
183
+ ls -la $(Build.SourcesDirectory)
184
+ displayName: 'List contents of Build.SourcesDirectory'
159
185
186
+ - task : AzureCLI@2
187
+ displayName : " Log in to Azure Container Registry"
188
+ inputs :
189
+ azureSubscription : ' ACR Images Push Service Connection' # service connection
190
+ scriptType : ' bash'
191
+ scriptLocation : ' inlineScript'
192
+ 'inlineScript' : |
193
+ az acr login --name $(REGISTRY)
194
+ - powershell : |
195
+ $date = Get-Date -Format "yyyyMMdd"
196
+ Write-Host "##vso[task.setvariable variable=currentDate]$date"
197
+
198
+ - script : |
199
+ docker run --privileged --rm tonistiigi/binfmt --install all
200
+ displayName: 'Enable multi-platform builds'
201
+
202
+ - script : |
203
+ docker buildx create --use --name mybuilder
204
+ displayName: 'Set up Docker BuildX'
205
+
206
+ - powershell : |
207
+ $version = $Env:BUILD_SOURCEBRANCH.replace("refs/tags/", "")
208
+ Write-Output "##vso[task.setvariable variable=version]$version"
209
+ displayName: 'Get truncated run number'
210
+
211
+ - bash : |
212
+ echo "Build Number: $(Build.BuildNumber)"
213
+ # Extract the last 3 characters for the run number
214
+ runnumber=$(echo "$(Build.BuildNumber)" | grep -o '[0-9]\+$')
215
+ echo "Extracted Run Number: $runnumber"
216
+
217
+ # If extraction fails, set a default
218
+ if [ -z "$runnumber" ]; then
219
+ echo "Extraction failed, using default value"
220
+ runnumber=$(date +"%S%N" | cut -c1-3)
221
+ echo "Generated fallback run number: $runnumber"
222
+ fi
223
+
224
+ # Set the variable for later steps
225
+ echo "##vso[task.setvariable variable=RUNNUMBER]$runnumber"
226
+ echo "##vso[task.setvariable variable=RUNNUMBER;isOutput=true]$runnumber"
227
+ displayName: 'Get truncated run number'
228
+ name: getrunnumber
229
+
230
+ - bash : |
231
+ echo "Building docker images"
232
+ # Format the date to be compatible with Docker tags
233
+ formatted_date=$(date +"%Y%m%d%H%M%S")
234
+ docker buildx build \
235
+ --platform linux/amd64 \
236
+ --push \
237
+ -t "$(REGISTRY)/$(IMAGE_NAME):latest" \
238
+ -t "$(REGISTRY)/$(IMAGE_NAME):$formatted_date.$RUNNUMBER" \
239
+ "$(Build.SourcesDirectory)"
240
+ displayName: 'Build and push docker images'
160
241
161
-
162
-
0 commit comments