@@ -305,6 +305,8 @@ jobs:
305305 $Parameters.UserName = ${env:UserName}
306306 $Parameters.TagVersionFormat = ${env:TagVersionFormat}
307307 $Parameters.ReleaseNameFormat = ${env:ReleaseNameFormat}
308+ $Parameters.ReleaseAsset = ${env:ReleaseAsset}
309+ $Parameters.ReleaseAsset = $parameters.ReleaseAsset -split ';' -replace '^[''"]' -replace '[''"]$'
308310 foreach ($k in @($parameters.Keys)) {
309311 if ([String]::IsNullOrEmpty($parameters[$k])) {
310312 $parameters.Remove($k)
@@ -330,7 +332,11 @@ jobs:
330332
331333 # The release name format (default value: '$($imported.Name) $($imported.Version)')
332334 [string]
333- $ReleaseNameFormat = '$($imported.Name) $($imported.Version)'
335+ $ReleaseNameFormat = '$($imported.Name) $($imported.Version)',
336+
337+ # Any assets to attach to the release. Can be a wildcard or file name.
338+ [string[]]
339+ $ReleaseAsset
334340 )
335341
336342
@@ -376,32 +382,80 @@ jobs:
376382
377383 if ($releaseExists) {
378384 "::warning::Release '$($releaseExists.Name )' Already Exists" | Out-Host
379- return
385+ $releasedIt = $releaseExists
386+ } else {
387+ $releasedIt = Invoke-RestMethod -Uri $releasesURL -Method Post -Body (
388+ [Ordered]@{
389+ owner = '${{github.owner}}'
390+ repo = '${{github.repository}}'
391+ tag_name = $targetVersion
392+ name = $ExecutionContext.InvokeCommand.ExpandString($ReleaseNameFormat)
393+ body =
394+ if ($env:RELEASENOTES) {
395+ $env:RELEASENOTES
396+ } elseif ($imported.PrivateData.PSData.ReleaseNotes) {
397+ $imported.PrivateData.PSData.ReleaseNotes
398+ } else {
399+ "$($imported.Name) $targetVersion"
400+ }
401+ draft = if ($env:RELEASEISDRAFT) { [bool]::Parse($env:RELEASEISDRAFT) } else { $false }
402+ prerelease = if ($env:PRERELEASE) { [bool]::Parse($env:PRERELEASE) } else { $false }
403+ } | ConvertTo-Json
404+ ) -Headers @{
405+ "Accept" = "application/vnd.github.v3+json"
406+ "Content-type" = "application/json"
407+ "Authorization" = 'Bearer ${{ secrets.GITHUB_TOKEN }}'
408+ }
409+ }
410+
411+
412+
413+
414+
415+ if (-not $releasedIt) {
416+ throw "Release failed"
417+ } else {
418+ $releasedIt | Out-Host
380419 }
381420
421+ $releaseUploadUrl = $releasedIt.upload_url -replace '\{.+$'
382422
383- Invoke-RestMethod -Uri $releasesURL -Method Post -Body (
384- [Ordered]@{
385- owner = '${{github.owner}}'
386- repo = '${{github.repository}}'
387- tag_name = $targetVersion
388- name = $ExecutionContext.InvokeCommand.ExpandString($ReleaseNameFormat)
389- body =
390- if ($env:RELEASENOTES) {
391- $env:RELEASENOTES
392- } elseif ($imported.PrivateData.PSData.ReleaseNotes) {
393- $imported.PrivateData.PSData.ReleaseNotes
394- } else {
395- "$($imported.Name) $targetVersion"
423+ if ($ReleaseAsset) {
424+ $fileList = Get-ChildItem -Recurse
425+ $filesToRelease =
426+ @(:nextFile foreach ($file in $fileList) {
427+ foreach ($relAsset in $ReleaseAsset) {
428+ if ($relAsset -match '[\*\?]') {
429+ if ($file.Name -like $relAsset) {
430+ $file; continue nextFile
431+ }
432+ } elseif ($file.Name -eq $relAsset -or $file.FullName -eq $relAsset) {
433+ $file; continue nextFile
434+ }
396435 }
397- draft = if ($env:RELEASEISDRAFT) { [bool]::Parse($env:RELEASEISDRAFT) } else { $false }
398- prerelease = if ($env:PRERELEASE) { [bool]::Parse($env:PRERELEASE) } else { $false }
399- } | ConvertTo-Json
400- ) -Headers @{
401- "Accept" = "application/vnd.github.v3+json"
402- "Content-type" = "application/json"
403- "Authorization" = 'Bearer ${{ secrets.GITHUB_TOKEN }}'
436+ })
437+
438+ $releasedFiles = @{}
439+ foreach ($file in $filesToRelease) {
440+ if ($releasedFiles[$file.Name]) {
441+ Write-Warning "Already attached file $($file.Name)"
442+ continue
443+ } else {
444+ $fileBytes = [IO.File]::ReadAllBytes($file.FullName)
445+ $releasedFiles[$file.Name] =
446+ Invoke-RestMethod -Uri "${releaseUploadUrl}?name=$($file.Name)" -Headers @{
447+ "Accept" = "application/vnd.github+json"
448+ "Authorization" = 'Bearer ${{ secrets.GITHUB_TOKEN }}'
449+ } -Body $fileBytes -ContentType Application/octet-stream
450+ $releasedFiles[$file.Name]
451+ }
452+ }
453+
454+ "Attached $($releasedFiles.Count) file(s) to release" | Out-Host
404455 }
456+
457+
458+
405459 } @Parameters
406460 - name : PublishPowerShellGallery
407461 id : PublishPowerShellGallery
@@ -515,18 +569,21 @@ jobs:
515569 }
516570 }
517571 } @Parameters
518- BuildModule :
572+ BuildEZOut :
519573 runs-on : ubuntu-latest
520574 if : ${{ success() }}
521575 steps :
522576 - name : Check out repository
523577 uses : actions/checkout@v2
578+ - name : Use PSSVG Action
579+ uses : StartAutomating/PSSVG@main
580+ id : PSSVG
581+ - name : UsePiecemeal
582+ uses : StartAutomating/Piecemeal@main
524583 - name : BuildPipeScript
525584 uses : StartAutomating/PipeScript@main
526585 - name : UseEZOut
527586 uses : StartAutomating/EZOut@master
528- - name : UsePiecemeal
529- uses : StartAutomating/Piecemeal@main
530587 - name : UseHelpOut
531588 uses : StartAutomating/HelpOut@master
532589
0 commit comments