Skip to content

Build new images

Build new images #706

name: Build new images
on:
workflow_dispatch:
inputs:
PushToProd:
description: Push to production (Y/N)
type: boolean
permissions:
contents: read
id-token: write
defaults:
run:
shell: PowerShell
jobs:
AnalyzeImages:
runs-on: [ windows-latest ]
outputs:
genericTag: ${{ steps.Analyze.outputs.genericTag }}
buildImagesJson: ${{ steps.Analyze.outputs.buildImagesJson }}
digestsJson: ${{ steps.Analyze.outputs.digestsJson }}
steps:
- uses: actions/checkout@v4
- name: Analyze
id: Analyze
env:
RUNNUMBEROFFSET: ${{ vars.RUNNUMBEROFFSET }}
PushToProd: ${{ github.event.inputs.PushToProd }}
run: |
$pushToProd = $true
if ($env:GITHUB_EVENT_NAME -eq "workflow_dispatch") {
$pushToProd = $env:PushToProd -eq 'True'
}
[int] $revisionNumber = ([int]($ENV:GITHUB_RUN_NUMBER) - [int]($ENV:RUNNUMBEROFFSET))
. ${{ github.workspace }}/build/analyzeimages.ps1 `
-RevisionNumber $revisionNumber `
-PushToProd:$pushToProd
BuildImages:
runs-on: [ Windows-2025 ]
needs: [ AnalyzeImages ]
strategy:
matrix:
tag: ${{ fromJson(needs.AnalyzeImages.outputs.buildImagesJson) }}
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v4
- name: 'Az CLI login'
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
enable-AzPSSession: true
- name: Build Image
env:
Tag: ${{ matrix.tag }}
PushToProd: ${{ github.event.inputs.PushToProd }}
GenericTag: ${{ needs.AnalyzeImages.outputs.genericTag }}
run: |
$filesonly = ($env:Tag -like '*-filesonly|*')
$only24 = ($env:Tag -like '*-24|*' -or $env:Tag -like '*-24-filesonly|*')
$baseImage = $env:Tag.split('|')[1]
$ltscTag = $env:Tag.split('|')[2]
$pushToProd = $true
if ($env:GITHUB_EVENT_NAME -eq "workflow_dispatch") {
$pushToProd = $env:PushToProd -eq 'True'
}
. ${{ github.workspace }}/build/build.ps1 `
-BaseImage $baseImage `
-LtscTag $ltscTag `
-FilesOnly $filesonly `
-Only24 $only24 `
-GenericTag $env:GenericTag `
-PushToDev `
-PushToProd:$pushToProd
MarkOldImagesStale:
runs-on: [ Windows-Latest ]
needs: [ AnalyzeImages, BuildImages ]
if: github.ref == 'refs/heads/main'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: 'Az CLI login'
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
enable-AzPSSession: true
- name: MarkStale
env:
digestsJson: ${{ needs.AnalyzeImages.outputs.digestsJson }}
shell: pwsh
run: |
$erroractionpreference = "STOP"
$digests = $env:digestsJson | ConvertFrom-Json
. ${{ github.workspace }}/build/markstale.ps1 -Digests $digests