@@ -473,4 +473,103 @@ jobs:
473
473
- name : Test Version Match
474
474
run : cf -v | grep -q "${VERSION_BUILD}"
475
475
476
+ update-windows :
477
+ name : Update Windows Chocolatey Package
478
+ runs-on : windows-2019
479
+ defaults :
480
+ run :
481
+ shell : pwsh
482
+ needs : setup
483
+ environment : ${{ needs.setup.outputs.secrets-environment }}
484
+ env :
485
+ CLAW_URL : ${{ needs.setup.outputs.claw-url }}
486
+ VERSION_BUILD : ${{ needs.setup.outputs.version-build }}
487
+ VERSION_MAJOR : ${{ needs.setup.outputs.version-major }}
488
+ steps :
489
+
490
+ - name : Setup
491
+ run : |
492
+ echo "VERSION_BUILD: ${VERSION_BUILD}"
493
+ echo "Environment: ${ENVIRONMENT}"
494
+
495
+ - name : Checkout
496
+ uses : actions/checkout@v4
497
+
498
+ - name : Calculate Checksums
499
+ run : |
500
+ foreach ($bit in @('32', '64')) {
501
+ $file="cf-cli_win${bit}.zip"
502
+ Invoke-WebRequest "${env:CLAW_URL}/stable?release=windows${bit}-exe&version=${env:VERSION_BUILD}&source=github-rel" `
503
+ -OutFile $file
504
+
505
+ if (-not (Test-Path -Path $file)) {
506
+ Write-Error "Failed to download $file" -ErrorAction Stop
507
+ }
508
+
509
+ $hash = (Get-FileHash $file).Hash
510
+ Add-Content -Path "$env:GITHUB_ENV" -Value "CLI_WIN${bit}_SHA256=$hash"
511
+ }
512
+
513
+ - name : Render Chocolatey Templates
514
+ run : |
515
+ # Ensure current directory is accurate for WriteAllLines
516
+ [System.Environment]::CurrentDirectory = (Get-Location).Path
517
+
518
+ # Use WriteAllLines because it uses UTF8 without a BOM
519
+ $nuspec = (Get-Content -Encoding utf8 -Raw ./.github/win/choco/cloudfoundry-cli.nuspec.tmpl).
520
+ Replace('${version}', $env:VERSION_BUILD)
521
+ [System.IO.File]::WriteAllLines('./cloudfoundry-cli.nuspec', $nuspec)
522
+
523
+ New-Item -Path ./tools -ItemType Directory -Force | Out-Null
524
+ (Get-Content -Encoding utf8 -Raw ./.github/win/choco/chocolateyinstall.ps1.tmpl).
525
+ Replace('${version}', $env:VERSION_BUILD). `
526
+ Replace('${checksum}', $env:CLI_WIN32_SHA256). `
527
+ Replace('${checksum64}', $env:CLI_WIN64_SHA256). `
528
+ Replace('${claw_url}', $env:CLAW_URL) | `
529
+ Set-Content ./tools/chocolateyinstall.ps1 -Encoding utf8
530
+
531
+ - name : Create Chocolatey Package
532
+ run : |
533
+ choco pack ./cloudfoundry-cli.nuspec
534
+
535
+ - name : Push Chocolatey Package
536
+ env :
537
+ CHOCO_API_KEY : ${{ secrets.CHOCO_API_KEY }}
538
+ run : |
539
+ choco config set --name=defaultPushSource --value=https://push.chocolatey.org/
540
+ choco setapikey --key $env:CHOCO_API_KEY --source https://push.chocolatey.org/
541
+ choco push "cloudfoundry-cli.$env:VERSION_BUILD.nupkg"
542
+
543
+ test-windows :
544
+ name : Test Windows Chocolatey Package
545
+ runs-on : windows-2019
546
+ defaults :
547
+ run :
548
+ shell : pwsh
549
+ needs :
550
+ - setup
551
+ - update-windows
552
+ environment : ${{ needs.setup.outputs.secrets-environment }}
553
+ env :
554
+ VERSION_BUILD : ${{ needs.setup.outputs.version-build }}
555
+ VERSION_MAJOR : ${{ needs.setup.outputs.version-major }}
556
+ steps :
557
+
558
+ - name : Install cf cli package
559
+ run : choco install cloudfoundry-cli --version $env:VERSION_BUILD
560
+
561
+ - name : Print Chocolatey CF CLI Versions
562
+ run : |
563
+ cd 'C:/ProgramData/chocolatey/lib/cloudfoundry-cli/tools'
564
+ ./cf -v
565
+ Invoke-Expression "./cf$env:VERSION_MAJOR -v"
566
+
567
+ - name : Test Chocolatey Version Match
568
+ run : |
569
+ cd 'C:/ProgramData/chocolatey/lib/cloudfoundry-cli/tools'
570
+ $found = (./cf -v | Select-String "$env:VERSION_BUILD")
571
+ if ($null -eq $found) {
572
+ Write-Error "CF CLI version $env:VERSION_BUILD was not found" -ErrorAction Stop
573
+ }
574
+
476
575
# vim: set sw=2 ts=2 sts=2 et tw=78 foldlevel=2 fdm=indent nospell:
0 commit comments