From 772f1afa05854375b7b83810dc4bea32478640f2 Mon Sep 17 00:00:00 2001 From: Deyner lopez Date: Wed, 13 May 2026 09:44:41 -0500 Subject: [PATCH] https://mobileaws.atlassian.net/browse/CLOUD-2745 --- .github/workflows/publish.yml | 90 +++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..f627ac7 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,90 @@ +name: Release C# SDK + +on: + push: + tags: + - "release/v*" + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: dotnet-release-${{ github.ref }} + cancel-in-progress: false + +jobs: + release: + name: Build and publish to NuGet + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: "8.0.x" + + - name: Restore dependencies + run: | + set -euo pipefail + dotnet restore + + - name: Build + run: | + set -euo pipefail + dotnet build --configuration Release --no-restore + + - name: Pack + run: | + set -euo pipefail + + rm -rf ./artifacts + mkdir -p ./artifacts + + VERSION="${GITHUB_REF_NAME#release/v}" + + echo "Packing version: $VERSION" + + dotnet pack \ + --configuration Release \ + --no-build \ + -o ./artifacts \ + /p:PackageVersion="$VERSION" \ + /p:ContinuousIntegrationBuild=true + + if [ -z "$(ls -A ./artifacts/*.nupkg 2>/dev/null)" ]; then + echo "Error: No .nupkg files generated" + exit 1 + fi + + ls -lh ./artifacts/*.nupkg + + - name: Validate NuGet secret + env: + NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} + run: | + set -euo pipefail + + if [ -z "${NUGET_API_KEY:-}" ]; then + echo "Error: NUGET_API_KEY secret not configured" + exit 1 + fi + + - name: Publish to NuGet + env: + NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} + run: | + set -euo pipefail + + for nupkg in ./artifacts/*.nupkg; do + echo "Publishing $nupkg..." + + dotnet nuget push "$nupkg" \ + --api-key "$NUGET_API_KEY" \ + --source "https://api.nuget.org/v3/index.json" \ + --skip-duplicate + done + + echo "Successfully published package(s) to NuGet" \ No newline at end of file