Skip to content

Add "Renderer Backends" documentation and integrate ESC/POS backend d… #61

Add "Renderer Backends" documentation and integrate ESC/POS backend d…

Add "Renderer Backends" documentation and integrate ESC/POS backend d… #61

Workflow file for this run

name: Publish NuGet packages
on:
push:
tags:
- "v*.*.*"
permissions:
contents: read
id-token: write
env:
DOTNET_VERSION: 10.0.x
CONFIGURATION: Release
SOLUTION_FILE: X39.Solutions.PdfTemplate.sln
PACKAGE_OUTPUT_DIRECTORY: artifacts/packages
NUGET_SOURCE: https://api.nuget.org/v3/index.json
jobs:
publish:
name: Build, pack, and publish
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Derive package version
shell: bash
run: |
package_version="${GITHUB_REF_NAME#v}"
if [ "$package_version" = "$GITHUB_REF_NAME" ]; then
echo "Release tags must start with 'v'." >&2
exit 1
fi
semver_pattern='^[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?(\+[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?$'
if [[ ! "$package_version" =~ $semver_pattern ]]; then
echo "Tag '$GITHUB_REF_NAME' does not contain a valid SemVer package version." >&2
exit 1
fi
echo "PACKAGE_VERSION=$package_version" >> "$GITHUB_ENV"
- name: Restore dependencies
run: dotnet restore "$SOLUTION_FILE"
- name: Build
run: dotnet build "$SOLUTION_FILE" --configuration "$CONFIGURATION" --no-restore /p:ContinuousIntegrationBuild=true
- name: Pack source projects
shell: bash
run: |
mkdir -p "$PACKAGE_OUTPUT_DIRECTORY"
mapfile -t projects < <(find source -mindepth 2 -maxdepth 2 -name "*.csproj" | sort)
if [ "${#projects[@]}" -eq 0 ]; then
echo "No source projects found to pack." >&2
exit 1
fi
for project in "${projects[@]}"; do
dotnet pack "$project" \
--configuration "$CONFIGURATION" \
--no-build \
--output "$PACKAGE_OUTPUT_DIRECTORY" \
/p:PackageVersion="$PACKAGE_VERSION" \
/p:ContinuousIntegrationBuild=true
done
- name: Upload package artifacts
uses: actions/upload-artifact@v4
with:
name: nuget-packages-${{ github.ref_name }}
path: |
${{ env.PACKAGE_OUTPUT_DIRECTORY }}/*.nupkg
${{ env.PACKAGE_OUTPUT_DIRECTORY }}/*.snupkg
if-no-files-found: error
- name: NuGet login
id: nuget_login
uses: NuGet/login@v1
with:
user: ${{ secrets.NUGET_USER }}
- name: Publish X39.Solutions.Papercraft.Core
run: dotnet nuget push "$PACKAGE_OUTPUT_DIRECTORY"/X39.Solutions.Papercraft.Core.[0-9]*.nupkg --source "$NUGET_SOURCE" --api-key "${{ steps.nuget_login.outputs.NUGET_API_KEY }}" --skip-duplicate
- name: Publish X39.Solutions.Papercraft.Rendering.SkiaSharp
run: dotnet nuget push "$PACKAGE_OUTPUT_DIRECTORY"/X39.Solutions.Papercraft.Rendering.SkiaSharp.[0-9]*.nupkg --source "$NUGET_SOURCE" --api-key "${{ steps.nuget_login.outputs.NUGET_API_KEY }}" --skip-duplicate
- name: Publish X39.Solutions.Papercraft.Controls.QrCode
run: dotnet nuget push "$PACKAGE_OUTPUT_DIRECTORY"/X39.Solutions.Papercraft.Controls.QrCode.[0-9]*.nupkg --source "$NUGET_SOURCE" --api-key "${{ steps.nuget_login.outputs.NUGET_API_KEY }}" --skip-duplicate
- name: Publish X39.Solutions.Papercraft.Controls.ZXing
run: dotnet nuget push "$PACKAGE_OUTPUT_DIRECTORY"/X39.Solutions.Papercraft.Controls.ZXing.[0-9]*.nupkg --source "$NUGET_SOURCE" --api-key "${{ steps.nuget_login.outputs.NUGET_API_KEY }}" --skip-duplicate
- name: Publish X39.Solutions.Papercraft
run: dotnet nuget push "$PACKAGE_OUTPUT_DIRECTORY"/X39.Solutions.Papercraft.[0-9]*.nupkg --source "$NUGET_SOURCE" --api-key "${{ steps.nuget_login.outputs.NUGET_API_KEY }}" --skip-duplicate
- name: Publish X39.Solutions.PdfTemplate
run: dotnet nuget push "$PACKAGE_OUTPUT_DIRECTORY"/X39.Solutions.PdfTemplate.[0-9]*.nupkg --source "$NUGET_SOURCE" --api-key "${{ steps.nuget_login.outputs.NUGET_API_KEY }}" --skip-duplicate