name: Branch Build Using Docker on: push: branches: - feature-2.0.0/* - hotfix-2.0.0/* - release-2.0.0/* - development-2.0.0 env: # solution path doesn't need slashes unless there it is multiple folders deep # solution name does not include extension. .sln is assumed SOLUTION_PATH: . SOLUTION_FILE: PepperDash.Essentials # Do not edit this, we're just creating it here VERSION: 0.0.0-buildtype-buildnumber # Defaults to debug for build type BUILD_TYPE: Debug # Defaults to main as the release branch. Change as necessary RELEASE_BRANCH: main jobs: Build_Project_4-Series: runs-on: windows-latest steps: - uses: actions/checkout@v3 - name: Set Version Number id: setVersion shell: powershell run: | $latestVersion = [version]"2.0.0" $newVersion = [version]$latestVersion $phase = "" $newVersionString = "" switch -regex ($Env:GITHUB_REF) { '^refs\/pull\/*.' { $phase = 'beta'; $newVersionString = "{0}-{1}-{2}" -f $newVersion, $phase, $Env:GITHUB_RUN_NUMBER } '^refs\/heads\/hotfix-2.0.0\/*.' { $phase = 'hotfix' $newVersionString = "{0}-{1}-{2}" -f $newVersion, $phase, $Env:GITHUB_RUN_NUMBER } '^refs\/heads\/release-2.0.0\/*.' { $splitRef = $Env:GITHUB_REF -split "/" $version = [version]($splitRef[-1] -replace "v", "") $phase = 'rc' $newVersionString = "{0}-{1}-{2}" -f $version, $phase, $Env:GITHUB_RUN_NUMBER } '^refs\/heads\/feature-2.0.0\/*.' { $phase = 'alpha' $newVersionString = "{0}-{1}-{2}" -f $newVersion, $phase, $Env:GITHUB_RUN_NUMBER } 'development-2.0.0' { $phase = 'beta' $newVersionString = "{0}-{1}-{2}" -f $newVersion, $phase, $Env:GITHUB_RUN_NUMBER } } echo "version=$newVersionString" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append - name: Setup MS Build uses: microsoft/setup-msbuild@v1.1 - name: restore Nuget Packages run: nuget restore .\$($Env:SOLUTION_FILE).sln # Build the solutions in the docker image - name: Build Solution run: msbuild .\$($Env:SOLUTION_FILE).sln /p:Platform="Any CPU" /p:Configuration="Debug" /p:Version="${{ steps.setVersion.outputs.version }}" -m - name: Debug CPZ Files shell: powershell run: | Write-Host "Checking for CPZ files..." # First, let's find out the actual directory structure Write-Host "Current directory: $(Get-Location)" Write-Host "Directory structure:" Get-ChildItem -Path . -Directory -Recurse -Depth 2 | ForEach-Object { Write-Host $_.FullName } # Look for all CPZ files in the repository Write-Host "Searching for all CPZ files in the repository:" $cpzFiles = Get-ChildItem -Path . -Recurse -Filter "*.cpz" if ($cpzFiles.Count -eq 0) { Write-Host "No CPZ files found in the repository." } else { Write-Host "Found $($cpzFiles.Count) CPZ files:" foreach ($file in $cpzFiles) { Write-Host " $($file.FullName)" } # Create output directory if it doesn't exist $outputDir = ".\output\build" if (-not (Test-Path $outputDir)) { New-Item -ItemType Directory -Path $outputDir -Force Write-Host "Created output directory: $outputDir" } # Copy all CPZ files to the output directory foreach ($file in $cpzFiles) { $destPath = Join-Path $outputDir $file.Name Write-Host "Copying $($file.FullName) to $destPath" Copy-Item -Path $file.FullName -Destination $destPath -Force } } - name: Pack Solution run: | dotnet pack .\$($Env:SOLUTION_FILE).sln --configuration $env:BUILD_TYPE --output ./output /p:Version="${{ steps.setVersion.outputs.version }}" # Ensure CPZ files are included in the package $cpzFiles = Get-ChildItem -Path . -Recurse | Where-Object { $_.Extension -eq ".cpz" } if ($cpzFiles.Count -eq 0) { Write-Host "WARNING: No CPZ files found!" } else { Write-Host "Found $($cpzFiles.Count) CPZ files" foreach ($file in $cpzFiles) { Write-Host "CPZ file: $($file.FullName)" } } - name: Create tag for non-rc builds if: contains(steps.setVersion.outputs.version, 'alpha') run: | git tag ${{ steps.setVersion.outputs.version }} git push --tags origin # Create the release on the source repo - name: Create Release id: create_release uses: ncipollo/release-action@v1 with: artifacts: 'output\**\*.*(cpz|cplz)' generateReleaseNotes: true prerelease: ${{contains('debug', env.BUILD_TYPE)}} tag: ${{ steps.setVersion.outputs.version }} - name: Setup Nuget run: | nuget sources add -name github -source https://nuget.pkg.github.com/pepperdash/index.json -username pepperdash -password ${{ secrets.GITHUB_TOKEN }} nuget setApiKey ${{ secrets.GITHUB_TOKEN }} -Source github nuget setApiKey ${{ secrets.NUGET_API_KEY }} -Source https://api.nuget.org/v3/index.json - name: Publish to Nuget run: nuget push .\output\*.nupkg -Source https://api.nuget.org/v3/index.json - name: Publish to Github Nuget run: nuget push .\output\*.nupkg -Source github