116 lines
5 KiB
YAML
116 lines
5 KiB
YAML
|
name: Build NuGet Package
|
||
|
on:
|
||
|
push:
|
||
|
tags: [ '[0-9]+.[0-9]+.[0-9]+' ]
|
||
|
workflow_dispatch:
|
||
|
inputs:
|
||
|
version:
|
||
|
description: 'The optional semantic version number. If not supplied the branch/tag will be used.'
|
||
|
type: string
|
||
|
no_publish:
|
||
|
description: 'Prevent publishing the NuGet package. Just build it and then upload it as an artifact.'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
|
||
|
jobs:
|
||
|
package-windows-latest:
|
||
|
runs-on: windows-latest
|
||
|
steps:
|
||
|
- name: Set version based on input
|
||
|
if: ${{ inputs.version }}
|
||
|
run: echo "RELEASE_VERSION=${{ inputs.version }}" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
|
||
|
- name: Set version based on ref
|
||
|
if: ${{ !inputs.version }}
|
||
|
run: echo "RELEASE_VERSION=$($env:GITHUB_REF -replace 'refs/.*/', '')" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
|
||
|
- name: Print Version
|
||
|
run: echo "NuGet version will be '${{ env.RELEASE_VERSION }}'"
|
||
|
- name: Checkout
|
||
|
uses: actions/checkout@v3
|
||
|
with:
|
||
|
submodules: true
|
||
|
- name: Setup NuGet.exe
|
||
|
uses: nuget/setup-nuget@v1
|
||
|
- name: "[Release_x86] Build & Install"
|
||
|
env:
|
||
|
CMAKE_GENERATOR: "Visual Studio 17 2022"
|
||
|
uses: ashutoshvarma/action-cmake-build@master
|
||
|
with:
|
||
|
build-dir: ${{github.workspace}}/build
|
||
|
source-dir: ${{github.workspace}}
|
||
|
build-type: Release
|
||
|
target: ALL_BUILD
|
||
|
run-test: false
|
||
|
configure-options: -DBUILD_SHARED_LIBS=ON -DCURL_ZLIB=OFF -A Win32
|
||
|
install-build: true
|
||
|
install-options: --prefix ${{github.workspace}}\install --config Release
|
||
|
- name: "[Release_x86] Copy install files for Release_x86"
|
||
|
run: xcopy /e /i /y ${{github.workspace}}\install ${{github.workspace}}\nuget\build\native\x86\Release && xcopy /e /i /y ${{github.workspace}}\install ${{github.workspace}}\nuget\build\native\Win32\Release
|
||
|
- name: "[Release_x86] Clean build"
|
||
|
run: rm -r -fo ${{github.workspace}}/build
|
||
|
- name: "[Debug_x86] Build & Install"
|
||
|
env:
|
||
|
CMAKE_GENERATOR: "Visual Studio 17 2022"
|
||
|
uses: ashutoshvarma/action-cmake-build@master
|
||
|
with:
|
||
|
build-dir: ${{github.workspace}}/build
|
||
|
source-dir: ${{github.workspace}}
|
||
|
build-type: Debug
|
||
|
target: ALL_BUILD
|
||
|
run-test: false
|
||
|
configure-options: -DBUILD_SHARED_LIBS=ON -DCURL_ZLIB=OFF -A Win32
|
||
|
install-build: true
|
||
|
install-options: --prefix ${{github.workspace}}\install --config Debug
|
||
|
- name: "[Debug_x86] Copy install files for Debug_x86"
|
||
|
run: xcopy /e /i /y ${{github.workspace}}\install ${{github.workspace}}\nuget\build\native\x86\Debug && xcopy /e /i /y ${{github.workspace}}\install ${{github.workspace}}\nuget\build\native\Win32\Debug
|
||
|
- name: "[Debug_x86] Clean build"
|
||
|
run: rm -r -fo ${{github.workspace}}/build
|
||
|
- name: "[Release_x64] Build & Install"
|
||
|
env:
|
||
|
CMAKE_GENERATOR: "Visual Studio 17 2022"
|
||
|
uses: ashutoshvarma/action-cmake-build@master
|
||
|
with:
|
||
|
build-dir: ${{github.workspace}}/build
|
||
|
source-dir: ${{github.workspace}}
|
||
|
build-type: Release
|
||
|
target: ALL_BUILD
|
||
|
run-test: false
|
||
|
configure-options: -DBUILD_SHARED_LIBS=ON -DCURL_ZLIB=OFF -A x64
|
||
|
install-build: true
|
||
|
install-options: --prefix ${{github.workspace}}\install --config Release
|
||
|
- name: "[Release_x64] Copy install files for Release_x64"
|
||
|
run: xcopy /e /i /y ${{github.workspace}}\install ${{github.workspace}}\nuget\build\native\x64\Release
|
||
|
- name: "[Release_x64] Clean build"
|
||
|
run: rm -r -fo ${{github.workspace}}/build
|
||
|
- name: "[Debug_x64] Build & Install"
|
||
|
env:
|
||
|
CMAKE_GENERATOR: "Visual Studio 17 2022"
|
||
|
uses: ashutoshvarma/action-cmake-build@master
|
||
|
with:
|
||
|
build-dir: ${{github.workspace}}/build
|
||
|
source-dir: ${{github.workspace}}
|
||
|
build-type: Debug
|
||
|
target: ALL_BUILD
|
||
|
run-test: false
|
||
|
configure-options: -DBUILD_SHARED_LIBS=ON -DCURL_ZLIB=OFF -A x64
|
||
|
install-build: true
|
||
|
install-options: --prefix ${{github.workspace}}\install --config Debug
|
||
|
- name: "[Debug_x64] Copy install files for Debug_x64"
|
||
|
run: xcopy /e /i /y ${{github.workspace}}\install ${{github.workspace}}\nuget\build\native\x64\Debug
|
||
|
- name: "Copy Readme.md"
|
||
|
run: xcopy /y ${{github.workspace}}\README.md ${{github.workspace}}\nuget
|
||
|
- name: "Create NuGet package"
|
||
|
env:
|
||
|
VERSION: ${{ env.RELEASE_VERSION }}
|
||
|
COMMIT_HASH: ${{ github.sha }}
|
||
|
run: nuget pack ${{github.workspace}}\nuget\libcpr.nuspec -OutputDirectory ${{github.workspace}} -Properties "VERSION=$ENV:VERSION;COMMIT_HASH=$ENV:COMMIT_HASH"
|
||
|
- name: "Upload artifact"
|
||
|
uses: actions/upload-artifact@v3
|
||
|
with:
|
||
|
name: artifact-nuget
|
||
|
path: ${{github.workspace}}\*.nupkg
|
||
|
- name: "Publish package to NuGet.org"
|
||
|
if: ${{ !inputs.no_publish }}
|
||
|
env:
|
||
|
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
|
||
|
run: nuget push ${{github.workspace}}\*.nupkg $ENV:NUGET_API_KEY -Source https://api.nuget.org/v3/index.json
|