Build new images #706
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |