name: Release NuGet Packages on: release: types: [published] workflow_dispatch: env: DOTNET_NOLOGO: true DOTNET_CLI_TELEMETRY_OPTOUT: true DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true NUGET_SOURCE_URL: https://nuget.sabp.ir/v3/index.json NUGET_PUSH_PARALLELISM: 4 PACKAGE_OUTPUT: ./artifacts/nuget PACKAGE_PROJECTS: src/SufiChain.SufiBlazor/SufiChain.SufiBlazor.csproj # TODO: Add demo packages here when they are ready for release. RELEASE_TAG: ${{ gitea.event.release.tag_name }} REF_NAME: ${{ gitea.ref_name }} REPOSITORY: ${{ gitea.repository }} jobs: pack-and-push: runs-on: ubuntu-latest container: image: mcr-mirror.liara.ir/dotnet/sdk:10.0.202 steps: - name: Checkout shell: bash run: | set -euo pipefail git clone --depth 1 https://git.sabp.ir/sufi-chain/sufi-blazor.git . - name: Set package version shell: bash run: | set -euo pipefail if [ -n "${RELEASE_TAG:-}" ]; then version="$RELEASE_TAG" else version="0.0.0-dev.$(date +%Y%m%d%H%M%S)" fi version="${version#v}" echo "VERSION=$version" >> "$GITHUB_ENV" echo "Package version: $version" - name: Restore selected projects shell: bash run: | set -euo pipefail for project in $PACKAGE_PROJECTS; do dotnet restore "$project" \ --verbosity minimal \ -p:NuGetAudit=false done - name: Build and pack selected projects shell: bash run: | set -euo pipefail mkdir -p "$PACKAGE_OUTPUT" for project in $PACKAGE_PROJECTS; do dotnet build "$project" \ --configuration Release \ --no-restore \ --verbosity minimal \ -m \ -p:PackageVersion="$VERSION" \ -p:ContinuousIntegrationBuild=true \ -p:BuildInParallel=true \ -p:PackageOutputPath="$PWD/$PACKAGE_OUTPUT" \ -p:GeneratePackageOnBuild=true done - name: Push packages to BaGet shell: bash env: NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} run: | set -euo pipefail if [ -z "${NUGET_API_KEY:-}" ]; then echo "NUGET_API_KEY secret is required." exit 1 fi mapfile -t packages < <(find "$PACKAGE_OUTPUT" -type f -name '*.nupkg' ! -name '*.symbols.nupkg' | sort) if [ ${#packages[@]} -eq 0 ]; then echo "No NuGet packages were produced." exit 1 fi printf '%s\0' "${packages[@]}" | xargs -0 -n 1 -P "$NUGET_PUSH_PARALLELISM" sh -c ' dotnet nuget push "$1" \ --source "$NUGET_SOURCE_URL" \ --api-key "$NUGET_API_KEY" \ --skip-duplicate ' sh