Build fast, deploy faster

Codefresh is the first continuous delivery platform built for Kubernetes.

Step 2.
Connect your code repository.

The DevOps platform for delivering containers.

Pipelines designed for, and powered with, Kubernetes

Kubernetes CI/CD Pipelines

Create powerful pipelines based on DinD as a service

Self-Service Test Environments

Automatically or manually self-serve Helm Charts into any connected Kubernetes cluster.

Release Management

Spin up, update, rollback and monitor your applications deployed to Kubernetes.

Docker & Helm Registry

Use Codefresh's built-in registry and Helm Repos, or connect your own.

A complete toolkit for delivering containers

We've designed Codefresh to be easy to start using without putting a limit on what's possible. We obsessively refine the pipeline to take advantage of containers and the native entities in Kubernetes. Because we eliminate needless complexity, you can setup a full deployment pipeline with Codefresh in just a couple of minutes.

              
  version: '1.0'
  steps:
    BuildingDockerImage: #Supports multi-stage Dockerfiles
      title: Building Docker Image
      type: build
      image_name: containers101/demochat
      working_directory: ./
      dockerfile: Dockerfile
      tag: '${{CF_BRANCH_TAG_NORMALIZED}}'
    RunningUnitTests:
      title: Running Unit Tests
      image: '${{BuildingDockerImage}}'
      working_directory: IMAGE_WORK_DIR
      entry_point:
        - /bin/sh
        - /codefresh/volume/cf-generated/unit_test_script
      create_file:
        path: /codefresh/volume/cf-generated
        name: unit_test_script
        content: npm test
      on_success:
        metadata:
          set:
            - '${{BuildingDockerImage.imageId}}': #Add image metadata for this quality check
                - CF_QUALITY: true #Supports boolean, strings, and percentages
      on_fail:
        metadata:
          set:
            - '${{BuildingDockerImage.imageId}}':
                - CF_QUALITY: false
    PromoteToArtifactory: #Standard step for pushing to an external registry. Codefresh supports any Docker registry and has a free one built-in.
       type: push
       title: Push image to artifactory
       description: So we can get scanning from xray
       candidate: ${{BuildingDockerImage}}
       tag: ${{CF_BRANCH_TAG_NORMALIZED}}
       image_name: containers101/demochat
       registry: docker-virtual2.ocpapps.ocpaws.jfrog.team
    DeployWithHelm:
      image: codefresh/plugin-helm:2.7.2 #Standard Codefresh plugin for deploying Helm packages to Kubernetes
      working_directory: ./
      environment:
        - CHART_NAME=./deploy/demochat/ #References chart in Git repo
        - RELEASE_NAME=demochat
        - KUBE_CONTEXT=helmdemo@jFrog-Helm #References a Kubernetes cluster already connected to Codefresh. All auth will be handled automatically.
        - NAMESPACE=demochat
        - custom_image_repository=docker-virtual2.ocpapps.ocpaws.jfrog.team/containers101/demochat #values with custom prefix overwrite chart values.
        - custom_imagePullSecret=codefresh-generated-docker-virtual2.ocpapps.ocpaws.jfrog.team-artifactory-docker-virtual-demochat #Secret previously created
        - custom_replicaCount=1
        - custom_image_tag=${{CF_BRANCH_TAG_NORMALIZED}}
        - custom_commit_sha=${{CF_SHORT_REVISION}}
    helm_package:
        image: devth/helm
        commands:
          - cf_export PACKAGE=$(helm package ./deploy/demochat | cut -d " " -f 8) #Creates the package and writes it to the pipeline volume
    pushHelmpackage:
      image: r.cfcr.io/jfrog-azure-demo/jfrogdev/jfrogcligo:master #Replace with your jfrogcli docker image.
      commands:
        - jfrog rt config helm-rt --url https://artifactory-artifactory-ha-nfs.ocpapps.ocpaws.jfrog.team/artifactory --user admin --password ${{artifactorypassword}}
        - jfrog rt u "$PACKAGE" helm-prod-local
              
            

Want to run Codefresh behind the firewall?

Let's talk!

Start POC