V:1.50 Release #25
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Publish to NuGet | |
| on: | |
| workflow_dispatch: # Manuel tetikleme için | |
| push: | |
| branches: | |
| - 'main' # Main'e kod atıldığında test etsin | |
| pull_request: | |
| branches: | |
| - '*' # PR geldiğinde test etsin | |
| release: | |
| types: | |
| - published # SADECE yeni bir Release yayınlandığında NuGet'e göndersin | |
| env: | |
| DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 | |
| DOTNET_NOLOGO: true | |
| NuGetDirectory: ${{ github.workspace}}/nuget | |
| defaults: | |
| run: | |
| shell: pwsh | |
| jobs: | |
| create_nuget: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 # Versiyonlama için tüm geçmişi çek | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| - name: Build project | |
| run: dotnet build SaferPay.csproj --configuration Release | |
| # Paketi oluşturur | |
| - name: Pack Nuget | |
| run: dotnet pack SaferPay.csproj --configuration Release --output ${{ env.NuGetDirectory }} | |
| # Paketi diğer aşamalar için saklar | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: nuget | |
| if-no-files-found: error | |
| retention-days: 7 | |
| path: ${{ env.NuGetDirectory }}/*.nupkg | |
| validate_nuget: | |
| runs-on: ubuntu-latest | |
| needs: [ create_nuget ] | |
| steps: | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: nuget | |
| path: ${{ env.NuGetDirectory }} | |
| - name: Install nuget validator | |
| run: dotnet tool update Meziantou.Framework.NuGetPackageValidation.Tool --global | |
| # Paketin kurallara uygunluğunu denetler | |
| - name: Validate package | |
| run: meziantou.validate-nuget-package (Get-ChildItem "${{ env.NuGetDirectory }}/*.nupkg") | |
| run_test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| - name: Run tests | |
| run: dotnet test --configuration Release | |
| deploy: | |
| # Sadece Release yayınlandıysa çalışır | |
| if: github.event_name == 'release' | |
| runs-on: ubuntu-latest | |
| needs: [ validate_nuget, run_test ] # Test ve doğrulama bitmeden yayınlamaz | |
| steps: | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: nuget | |
| path: ${{ env.NuGetDirectory }} | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| # NuGet.org'a yükleme işlemi | |
| - name: Publish NuGet package | |
| run: | | |
| foreach($file in (Get-ChildItem "${{ env.NuGetDirectory }}" -Recurse -Include *.nupkg)) { | |
| dotnet nuget push $file --api-key "${{ secrets.NUGET_APIKEY }}" --source https://api.nuget.org/v3/index.json --skip-duplicate | |
| } |