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
      - [email protected] #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