|
6 | 6 | pull_request: |
7 | 7 | branches: [ master, main ] |
8 | 8 | workflow_dispatch: |
| 9 | + inputs: |
| 10 | + publishNuget: |
| 11 | + description: "Publish NuGet package and dotnet tool" |
| 12 | + required: false |
| 13 | + type: boolean |
| 14 | + default: false |
| 15 | + deployWebFunc: |
| 16 | + description: "Deploy web/func artifacts" |
| 17 | + required: false |
| 18 | + type: boolean |
| 19 | + default: false |
| 20 | + createRelease: |
| 21 | + description: "Create GitHub release" |
| 22 | + required: false |
| 23 | + type: boolean |
| 24 | + default: false |
| 25 | + nugetApiKey: |
| 26 | + description: "NuGet API key (required if Publish NuGet is checked)" |
| 27 | + required: false |
| 28 | + type: string |
9 | 29 |
|
10 | 30 | env: |
11 | 31 | BuildVersion: '10.0.0' |
@@ -93,33 +113,59 @@ jobs: |
93 | 113 | - name: Checkout 🛎️ |
94 | 114 | uses: actions/checkout@v4 |
95 | 115 |
|
96 | | - - name: Download Artifacts 🔻 # The built project is downloaded into the 'site' folder. |
| 116 | + - name: Download web artifact 🔻 # The built project is downloaded into the 'site' folder. |
| 117 | + if: ${{ inputs.deployWebFunc }} |
97 | 118 | uses: actions/download-artifact@v4 |
98 | 119 | with: |
99 | 120 | name: ICSharpCode.CodeConverter.Web.${{ env.BuildVersion }}.zip |
100 | 121 | path: site |
101 | 122 |
|
102 | | - - name: Download all release artifacts |
| 123 | + - name: Download release artifacts |
| 124 | + if: ${{ inputs.createRelease || inputs.publishNuget }} |
103 | 125 | uses: actions/download-artifact@v4 |
104 | 126 | with: |
| 127 | + pattern: ICSharpCode.CodeConverter.* |
105 | 128 | path: release-artifacts |
| 129 | + merge-multiple: true |
106 | 130 |
|
107 | 131 | - name: Extract latest changelog section |
108 | 132 | id: changelog |
109 | 133 | shell: pwsh |
| 134 | + if: ${{ inputs.createRelease }} |
110 | 135 | run: | |
111 | 136 | ./Get-LatestChangelog.ps1 -Path CHANGELOG.md | Tee-Object -FilePath release-notes.md |
112 | 137 | "notes<<EOF" >> $env:GITHUB_OUTPUT |
113 | 138 | Get-Content release-notes.md >> $env:GITHUB_OUTPUT |
114 | 139 | "EOF" >> $env:GITHUB_OUTPUT |
115 | 140 | |
116 | 141 | - name: Deploy 🚀 |
| 142 | + if: ${{ inputs.deployWebFunc }} |
117 | 143 | uses: JamesIves/github-pages-deploy-action@v4 |
118 | 144 | with: |
119 | 145 | branch: 'autoupdated/gh-pages' |
120 | 146 | folder: 'site/wwwroot' |
121 | 147 |
|
| 148 | + - name: Publish NuGet packages |
| 149 | + if: ${{ inputs.publishNuget }} |
| 150 | + shell: pwsh |
| 151 | + env: |
| 152 | + NUGET_API_KEY: ${{ inputs.nugetApiKey }} |
| 153 | + run: | |
| 154 | + if (-not $env:NUGET_API_KEY) { throw "nugetApiKey input is required when Publish NuGet is checked." } |
| 155 | + Write-Output "::add-mask::$env:NUGET_API_KEY" |
| 156 | + $source = "https://api.nuget.org/v3/index.json" |
| 157 | + $packages = @( |
| 158 | + "release-artifacts/ICSharpCode.CodeConverter.*.nupkg", |
| 159 | + "release-artifacts/ICSharpCode.CodeConverter.CodeConv.*.nupkg" |
| 160 | + ) |
| 161 | + foreach ($pattern in $packages) { |
| 162 | + Get-ChildItem -Path $pattern -File | ForEach-Object { |
| 163 | + dotnet nuget push $_.FullName -k $env:NUGET_API_KEY -s $source --skip-duplicate |
| 164 | + } |
| 165 | + } |
| 166 | +
|
122 | 167 | - name: Create GitHub release |
| 168 | + if: ${{ inputs.createRelease }} |
123 | 169 | uses: softprops/action-gh-release@v2 |
124 | 170 | with: |
125 | 171 | tag_name: v${{ env.BuildVersion }}.${{ github.run_number }} |
|
0 commit comments