This documentation outlines the procedures and scripts utilized in the Continuous Integration and Continuous Deployment (CI/CD) processes for the stevedunn/vogen project. The steps, configurations, and code snippets provided herein will aid expert developers in understanding and implementing CI/CD for their environments based on the existing project’s structure.

Overview

Currently, the stevedunn/vogen project does not have a CI/CD pipeline fully configured. In order to establish a CI/CD process, the following next steps are recommended:

  1. Set Up a CI/CD Platform: Consider using platforms such as GitHub Actions, Azure Pipelines, or Jenkins to automate builds, tests, and deployments.

  2. Create Configuration Files: Establish YAML files for pipeline configurations or other necessary files based on the chosen platform.

  3. Implement Tests and Builds: Ensure existing scripts for builds and tests are integrated into the CI/CD pipeline.

  4. Monitor and Optimize: Continuously review and optimize CI/CD processes for efficiency and reliability.

File Structures and Relevant Scripts

Dockerfile

The Dockerfile defined in the project ensures that the build environment is set up correctly. It pulls the .NET SDK image and defines the entry point to run the Build.ps1 script.

FROM mcr.microsoft.com/dotnet/sdk:7.0

COPY . .

ENTRYPOINT [ "powershell.exe", "./Build.ps1" ]

This configuration allows for a consistent build environment across different setups.

Build.ps1

The Build.ps1 PowerShell script orchestrates the build and testing process for the project. Here are some relevant sections of the script that facilitate CI/CD:

  • Cleaning and Restoring the Project:
if(Test-Path $artifacts) { Remove-Item $artifacts -Force -Recurse }
New-Item -Path $artifacts -ItemType Directory

WriteStage("Cleaning, restoring, and building release version of Vogen...")

exec { & dotnet clean Vogen.sln -c Release --verbosity $verbosity }
exec { & dotnet restore Vogen.sln --no-cache --verbosity $verbosity }
  • Building and Testing:
exec { & dotnet build Vogen.sln -c Release -p Thorough=true --no-restore --verbosity $verbosity }
exec { & dotnet test tests/AnalyzerTests/AnalyzerTests.csproj -c Release --no-build -l trx -l "GitHubActions;report-warnings=false" --verbosity $verbosity }

These commands are essential for ensuring that every CI/CD run has a clean slate, effectively restoring dependencies, building the project, and running tests.

Test Automation Commands

The test.ps1 script is used to restore packages and build tests. It is essential to have these commands integrated into the CI/CD pipeline to automate the testing phase effectively.

dotnet restore ./Samples/Vogen.Examples -p UseLocallyBuiltPackage=true --force --no-cache --packages $localPackages --configfile: ./nuget.private.config
dotnet build ./tests/ConsumerTests -c Debug --no-restore
dotnet test ./tests/ConsumerTests -c Debug --no-build --no-restore

Error Handling

When running scripts in PowerShell, certain executions may be blocked due to execution policies. The inclusion of the following command can help bypass these limitations during CI/CD execution:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Conclusion

The stevedunn/vogen project has foundational components suitable for establishing a CI/CD pipeline, notably through the use of Docker and PowerShell scripts for building and testing. By following the outlined next steps and leveraging the provided code snippets, developers can create a robust CI/CD pipeline that enhances the project’s development workflow.

For further integration and enhancement, it is advisable to consult programming documentation specific to the CI/CD platform chosen for implementation.