|
5 | 5 | branches: [ master, main ] |
6 | 6 | pull_request: |
7 | 7 | branches: [ master, main ] |
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 |
29 | 8 |
|
30 | 9 | env: |
31 | 10 | BuildVersion: '10.0.0' |
@@ -95,81 +74,10 @@ jobs: |
95 | 74 | uses: actions/upload-artifact@v4 |
96 | 75 | with: |
97 | 76 | name: ICSharpCode.CodeConverter.Web.${{ env.BuildVersion }}.zip |
98 | | - path: web/dist/ |
| 77 | + path: Web/dist/ |
99 | 78 | - name: Upload Function |
100 | 79 | uses: actions/upload-artifact@v4 |
101 | 80 | with: |
102 | 81 | name: ICSharpCode.CodeConverter.Func.${{ env.BuildVersion }}.zip |
103 | 82 | path: Func/bin/${{ env.BuildTarget }}/publish/ |
104 | | - |
105 | | - deploy: |
106 | | - if: ${{ github.event_name == 'workflow_dispatch' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main') }} |
107 | | - concurrency: ci-${{ github.ref }} |
108 | | - needs: [build] # The second job must depend on the first one to complete before running and uses ubuntu-latest instead of windows. |
109 | | - runs-on: ubuntu-latest |
110 | | - permissions: |
111 | | - contents: write |
112 | | - steps: |
113 | | - - name: Checkout 🛎️ |
114 | | - uses: actions/checkout@v4 |
115 | | - |
116 | | - - name: Download web artifact 🔻 # The built project is downloaded into the 'site' folder. |
117 | | - if: ${{ inputs.deployWebFunc }} |
118 | | - uses: actions/download-artifact@v4 |
119 | | - with: |
120 | | - name: ICSharpCode.CodeConverter.Web.${{ env.BuildVersion }}.zip |
121 | | - path: site |
122 | | - |
123 | | - - name: Download release artifacts |
124 | | - if: ${{ inputs.createRelease || inputs.publishNuget }} |
125 | | - uses: actions/download-artifact@v4 |
126 | | - with: |
127 | | - pattern: ICSharpCode.CodeConverter.* |
128 | | - path: release-artifacts |
129 | | - merge-multiple: true |
130 | | - |
131 | | - - name: Extract latest changelog section |
132 | | - id: changelog |
133 | | - shell: pwsh |
134 | | - if: ${{ inputs.createRelease }} |
135 | | - run: | |
136 | | - ./Get-LatestChangelog.ps1 -Path CHANGELOG.md | Tee-Object -FilePath release-notes.md |
137 | | - "notes<<EOF" >> $env:GITHUB_OUTPUT |
138 | | - Get-Content release-notes.md >> $env:GITHUB_OUTPUT |
139 | | - "EOF" >> $env:GITHUB_OUTPUT |
140 | | - |
141 | | - - name: Deploy 🚀 |
142 | | - if: ${{ inputs.deployWebFunc }} |
143 | | - uses: JamesIves/github-pages-deploy-action@v4 |
144 | | - with: |
145 | | - branch: 'autoupdated/gh-pages' |
146 | | - folder: 'site/wwwroot' |
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 | | -
|
167 | | - - name: Create GitHub release |
168 | | - if: ${{ inputs.createRelease }} |
169 | | - uses: softprops/action-gh-release@v2 |
170 | | - with: |
171 | | - tag_name: v${{ env.BuildVersion }}.${{ github.run_number }} |
172 | | - name: v${{ env.BuildVersion }}.${{ github.run_number }} |
173 | | - body: ${{ steps.changelog.outputs.notes }} |
174 | | - files: release-artifacts/** |
175 | 83 |
|
0 commit comments