Examples/Complete-Build-Workflow.ps1
|
# Complete Build Workflow Example # Demonstrates how to use BuildTools module for a complete build and release process # Import the module Import-Module BuildTools -Force # Configuration $ProjectPath = "C:\MyProject" $ProjectFile = "MyProject.csproj" $Repository = "myuser/myapp" $Version = "1.2.3.4" Write-Host "=== Complete Build Workflow Example ===" -ForegroundColor Cyan Write-Host "Project: $ProjectPath" -ForegroundColor Gray Write-Host "Repository: $Repository" -ForegroundColor Gray Write-Host "Version: $Version" -ForegroundColor Gray Write-Host "" # Step 1: Version Management Write-Section "Version Management" Write-Host "Setting version to $Version..." -ForegroundColor Green $versionResult = Set-Version -Files @("$ProjectPath\AssemblyInfo.cs") -Pattern 'AssemblyVersion\("([^"]+)"\)' -NewVersion $Version if ($versionResult) { Write-Success "Version set successfully" } else { Write-Failure "Failed to set version" exit 1 } # Step 2: Clean Build Artifacts Write-Section "Clean Build Artifacts" Write-Host "Cleaning build artifacts..." -ForegroundColor Green Clear-BuildArtifacts -ProjectPath $ProjectPath -OutputPath "$ProjectPath\bin" -KillProcesses # Step 3: .NET Build Write-Section ".NET Build" Write-Host "Building .NET project..." -ForegroundColor Green $buildResult = Dotnet-Build -ProjectPath "$ProjectPath\$ProjectFile" -Configuration "Release" -Architecture "win-x64" -Clean -Verbose if ($buildResult) { Write-Success "Build completed successfully" } else { Write-Failure "Build failed" exit 1 } # Step 4: .NET Publish Write-Section ".NET Publish" Write-Host "Publishing .NET project..." -ForegroundColor Green $publishResult = Dotnet-Publish -ProjectPath "$ProjectPath\$ProjectFile" -Configuration "Release" -Architecture "win-x64" -SelfContained -SingleFile -Trimmed if ($publishResult) { Write-Success "Publish completed successfully" } else { Write-Failure "Publish failed" exit 1 } # Step 5: Git Operations Write-Section "Git Operations" Write-Host "Committing changes..." -ForegroundColor Green $commitResult = Git-CommitRepository -Path $ProjectPath -Message "Release v$Version" -AutoMessage if ($commitResult) { Write-Success "Changes committed successfully" } else { Write-Failure "Failed to commit changes" exit 1 } Write-Host "Pushing changes..." -ForegroundColor Green $pushResult = Git-PushRepository -Path $ProjectPath -Force -SetUpstream if ($pushResult) { Write-Success "Changes pushed successfully" } else { Write-Failure "Failed to push changes" exit 1 } # Step 6: GitHub Release Write-Section "GitHub Release" Write-Host "Creating GitHub release..." -ForegroundColor Green $releaseResult = GitHub-CreateRelease -Repository $Repository -Tag "v$Version" -Title "Release v$Version" -Notes "Automated release for version $Version" -Assets @("$ProjectPath\bin\MyProject.exe") if ($releaseResult) { Write-Success "GitHub release created successfully" } else { Write-Failure "Failed to create GitHub release" exit 1 } # Step 7: Docker Operations (Optional) Write-Section "Docker Operations" Write-Host "Checking Docker availability..." -ForegroundColor Green if (Docker-StartIfNeeded) { Write-Host "Building Docker image..." -ForegroundColor Green $dockerResult = Docker-Build -ProjectPath $ProjectPath -Tag "myapp:$Version" -NoCache if ($dockerResult) { Write-Success "Docker image built successfully" Write-Host "Publishing Docker image..." -ForegroundColor Green $dockerPublishResult = Docker-Publish -ImageName "myapp" -Registry "dockerhub" -Username "myuser" -Tags @($Version, "latest") if ($dockerPublishResult) { Write-Success "Docker image published successfully" } else { Write-Failure "Failed to publish Docker image" } } else { Write-Failure "Docker build failed" } } else { Write-Warning "Docker not available, skipping Docker operations" } # Summary Write-Host "" Write-Host "=== Build Workflow Complete ===" -ForegroundColor Green Write-Host "Version: $Version" -ForegroundColor Cyan Write-Host "Repository: $Repository" -ForegroundColor Cyan Write-Host "Release: https://github.com/$Repository/releases/tag/v$Version" -ForegroundColor Cyan Write-Host "" |