Build fast, deploy faster

Codefresh is the first continuous delivery platform built for Kubernetes.

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!

Request Demo