Overview

This documentation outlines the process for setting up a CI/CD workflow for the kubernetes-client/csharp project. As of now, CI/CD is not yet established for this project. However, the following steps will guide you through creating an efficient CI/CD pipeline using popular tools like GitHub Actions or Azure DevOps.

Next Steps for CI/CD Setup

  1. Choose a CI/CD Tool: Select a CI/CD platform such as GitHub Actions, Azure DevOps, Jenkins, or GitLab CI.

  2. Set Up Repository: Ensure your project is versioned in a Git repository, which will serve as the source for your CI/CD pipeline.

  3. Define Workflow Files: Create configuration files that describe your build, test, and deployment steps.

Sample GitHub Actions Configuration

You can create a .github/workflows/ci.yml file in your project to implement CI using GitHub Actions. Below is an example showing how to set up the CI pipeline to build your C# application, run tests, and ensure code quality.

name: CI

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Setup .NET
      uses: actions/setup-dotnet@v1
      with:
        dotnet-version: '8.0.x'

    - name: Restore dependencies
      run: dotnet restore csharp

    - name: Run tests
      run: dotnet test csharp/tests --no-build --verbosity normal
    
    - name: Build the project
      run: dotnet build csharp --configuration Release

Sample Azure DevOps Configuration

If using Azure DevOps, create a azure-pipelines.yml at the root of your repository to define your CI pipeline. The following example illustrates basic build and test steps.

trigger:
- main

pool:
  vmImage: 'windows-latest'

steps:
- checkout: self

- task: DotNetCoreCLI@2
  displayName: 'Restore dependencies'
  inputs:
    command: 'restore'
    projects: '**/*.csproj'

- task: DotNetCoreCLI@2
  displayName: 'Run tests'
  inputs:
    command: 'test'
    projects: '**/*.csproj'
    arguments: '--configuration Release'
    publishJUnitResults: true

- task: DotNetCoreCLI@2
  displayName: 'Build project'
  inputs:
    command: 'build'
    projects: '**/*.csproj'
    arguments: '--configuration Release'

Running Tests Locally

To ensure that your CI configurations are valid, it’s beneficial to run tests locally before pushing changes. The example command is as follows:

cd csharp/tests
dotnet restore
dotnet test

Conclusion

Establishing a CI/CD workflow will enhance the development lifecycle of the kubernetes-client/csharp project by ensuring code is continuously integrated and tested. Follow the outlined steps to set up your CI/CD environment using your preferred tools.

References

  • The project uses XUnit as unit testing framework.
    To run the tests:

    cd csharp\tests
    dotnet restore
    dotnet test
    
  • For detailed instructions on cloning and running example projects:

    git clone 
    cd csharp\examples\simple
    dotnet run