Windows Containers Support Overview

Using Docker on Windows in Codefresh

Codefresh pipelines have the option to support Windows based containers.

If you have projects in your organization based on the .NET Framework or are in transition from Windows to Linux based projects and still need to have CI/CD pipelines for Windows containers, you’ll now be able to achieve this by using Codefresh.

Note: To enable Windows builds on your Codefresh account please contact sales

Once approved, you will get access to a new runtime environment on a dedicated Windows Server version 1709 VM. This means that you will be able to run both Windows and Linux/x86 builds from the same Codefresh account by choosing the appropriate pipeline settings.

Note: For .NET Core projects you can use a standard Linux based Codefresh account. See our example

Codefresh Windows pipelines support the following Codefresh steps: Clone, Build, Push, Composition, Deploy and Freestyle. Please refer to our steps documentation to learn more about each of them.

Example

In this example we’ll perform the following steps:

  • Clone our git repository and build a .NET Framework image.

  • Run our dotnet unit tests and according to the results annotate the image accordingly.

  • Push to Dockerhub if our tests have passed.

version: '1.0'
steps:
  
  BuildingDockerImage:
    title: Building Docker Image
    type: build
    image_name: codefresh/dotnetapp
    working_directory: ./samples/dotnetapp
    tag: '${{CF_BRANCH_TAG_NORMALIZED}}'
    dockerfile: Dockerfile
 
  RunningUnitTests:
    title: Running Unit Tests
    image: '${{BuildingDockerImage}}'
    command: dotnet test
    on_success:
      metadata:
        set:
          - '${{BuildingDockerImage.imageId}}':
              - CF_QUALITY: true
              - repo_owner: '${{CF_REPO_OWNER}}'
              - repo_name: '${{CF_REPO_NAME}}'
              - branch_name: '${{CF_BRANCH}}'
              - commit_author: '${{CF_COMMIT_AUTHOR}}'
              - commit_url: '${{CF_COMMIT_URL}}'
              - commit_message: '${{CF_COMMIT_MESSAGE}}'
    on_fail:
      metadata:
        set:
          - '${{BuildingDockerImage.imageId}}':
              - CF_QUALITY: false
  
  PushingToDockerRegistry:
    title: Pushing to Docker Registry
    type: push
    candidate: '${{BuildingDockerImage}}'
    tag: '${{CF_BRANCH_TAG_NORMALIZED}}'
    registry: dockerhub