From 3295531d23cd2771d1bf33d350acba22f56dbc01 Mon Sep 17 00:00:00 2001 From: NimRegev Date: Tue, 27 Dec 2022 15:36:04 +0200 Subject: [PATCH 1/9] Add topics to getting started --- _docs/getting-started/cd-codefresh.md | 0 _docs/getting-started/ci-codefresh.md | 117 ++++++++++++++++++++++ _docs/getting-started/gitops-codefresh.md | 0 3 files changed, 117 insertions(+) create mode 100644 _docs/getting-started/cd-codefresh.md create mode 100644 _docs/getting-started/ci-codefresh.md create mode 100644 _docs/getting-started/gitops-codefresh.md diff --git a/_docs/getting-started/cd-codefresh.md b/_docs/getting-started/cd-codefresh.md new file mode 100644 index 000000000..e69de29bb diff --git a/_docs/getting-started/ci-codefresh.md b/_docs/getting-started/ci-codefresh.md new file mode 100644 index 000000000..b2f86366f --- /dev/null +++ b/_docs/getting-started/ci-codefresh.md @@ -0,0 +1,117 @@ +--- +title: "Using Codefresh for CI/CD" +description: "Continuous integration (CI) and continuous deployment (CD) with Codefresh pipelines" +group: getting-started +toc: true +--- + +TBD + +What's different in Codefresh when it comes to continuous integration (CI) and continuous delivery (CD)? +There is a long answer and a short one. + +Let's start with the short answer, that illustrates how Codefresh differs from and how it is superior to other CI/CD solutions. + +Codefresh: +* Is a complete CI/CD solution, and not just CI. +* Works with all major Git platforms and cloud providers. There is no lock-in with any particular vendor. +* Has several unique features such as a distributed Docker layer cache, an auto-mounted shared volume, a private Docker registry and a private Helm repository. +* Built-in Kubernetes dashboard +* Built-in Helm dashboard, Helm charts browser, and Helm environment board + +Distilled, Codefresh covers the full software lifecycle. You can see a release in the Kubernetes dashboard, click on it and go to the Docker image, click on the Docker image and go to the build that created it, all from a single interface. Codefresh is turbo-charged CI/CD. + Q. How is Codefresh different than Jenkins? +A. Codefresh is a superset of Jenkins. Jenkins is only CI. You need to write custom scripts or use another tool such as Ansible to deploy with Jenkins. See the comparison matrix and the detailed blog post. There is also a comparison with Jenkins X. + +Q. How is Codefresh different than my custom deployment scripts in bash/Ansible/Chef/Puppet/Python? +A. These scripts are custom made, complex to maintain and difficult to read. One of the reasons that developers and operators have difficulties in communication is the in-house nature of deployment scripts. Codefresh allows you to create standard declarative pipelines where each step is a reusable Docker image. + +Everything for CI/CD in Codefresh starts and ends with pipelines. In Codefresh, a pipeline can do pretty much anyhting, only CI, only CD, both CI and CD. + +Your CI pipeline can compile and package code, build and push Docker images. The CD pipeline can deploy applications/artifacts to VMs, Kubernetes clusters, FTP sites, S3 buckets, and more. And yet another pipeline combines both integration and deployment for full CI/CD. +Other pipelines can run unit tests, integration tests, acceptance tests etc. CI/CD pipeline to create and deploy your applications, or a pipeline run any custom action, such as tests. + +Completely programmatic approach +Unlike other CI/CD platforms which can be tightly coupled to a single Git provider, or a specific vendor or set of tools, Codefresh supports a fully programmtic implementation. create pipelines and define the pipeline’s steps, triggers, and variables. + +Everything in the pipeline is defined as code and applied with the command line. Storing the definitions in a code repo ensures consistenct. Upscaling or expanind Doing so means we can create all of our pipelines in a consistent way and store those definitions in a code repository. Taking this one step step deeper, we could then create a bootstrap pipeline in Codefresh that generates pipelines when new definitions are added to this repo. See our previous post Programmatic Creation of Codefresh Pipelines (part 2) for more on this. + + +The Docker registry integrations and all cluster integrations are automatically available to all pipelines. You don’t need docker login commands or kubectl commands to set up a Kube context inside your pipeline. + + + +Pipelines for +Everything in the CI/CD in Codefresh starts and ends with pipelines. In Codefresh, a ppieplene can do pretty much anyhting. + +It can be a set of definitions on how to implement the CI/CD for your applications, or it can run any custom action, such as unit, acceptance tests. +A CI pipeline would then fcompile and package code, build Docker images and push them Docjer images,. A CD pipeline woulddeploying applications/artifacts to VMs, Kubernetes clusters, FTP sites, S3 buckets and more. And a CI/CD pipeline does all of the above. +Pipelines can Run unit tests, integration tests, acceptance tests etc. + + + + + +Pipeline extras +We support all Git providers: Both on-premises and cloud +provides a rich set of triggers: Trigger pipelines on a schedule, from a push to a docker registry or from a push to a helm registry or from actions that happened in Git. +Has a rich, modern API With Codefresh, you can trigger a pipeline + +Since Codefresh is decoupled from any single pipeline source, we provide a programmatic way to + + +## CI/CD pipelines + +As mentioned earlier, everything in Codefresh CI/CD starts and ends with pipelines. +A Codefresh pipeline has two distinct + +* Pipeline specifications in YAML + The specifications define the pipeline + * Metadata such as name, project, tags, in Codefresh + * Events that trigger the pipeline such as webhooks, cron events, etc.) + * The steps to use for this pipeline (inline, from a repo, etc.) + +* Pipeline steps, that define: + * Jobs to run + * Sequence in which to run the jobs + * CI and our CD processes + +Docker registry integrations and all cluster integrations are automatically available to all pipelines. You don’t need docker login commands or kubectl commands to setup a Kube context inside your pipeline. +Codefresh covers the full software lifecycle. You can see a release on the cluster dashboard, click on it, go to the docker image, click on it and go the build that created it, all from a single interface. Codefresh is batteries-included CI/CD. + +For more on pipelines, start with the Introduction to Codefresh pipelines or jump to pipeline creation with ???? + +## Releases and dashboards + +## Where to go from here + +Quick starts +To get up and running, follow our quick starts. The quick start modules are a series of flows that guide you from setting up your first account in Codefresh, to creating a basic pipeline, and deploying to Kubernetes. +See XREF TBD + +Example catalog +For those who are familiar with CI/CD, we have an extensive collection of examples, covering several CI and CD scenarios: +CI examples +CD examples + +Guides +And finally, if you want more meat, dive in to our detailed guides. +XREF TBD + +Codefresh has extensive support for deployments to Kubernetes, and for more taditional deployment environments such as to plain VMs, JAR files, static websites, Wordpress instances, Database changesets . +B + UI support, +Dedicated pipeline steps: + deploy + cf-deploy-kubernetes +Kustomize +kubectl +Helm +Using the Codefresh GUI to deploy on demand. This is the easiest way and was described in the quick start guide. +Using the dedicated deploy step in a pipeline. Explained in detail in the present page. +Using the cf-deploy-kubernetes step in a pipeline. This can also perform simple templating on Kubernetes manifests. +Using a freestyle step with Kustomize. Described in details in this page. +Using a freestyle step with your own kubectl commands. This is very flexible, but assumes that you know how to work with kubectl. Described in details in this page. +Using Helm as a package manager. See the Helm quick start guide for more details. + + diff --git a/_docs/getting-started/gitops-codefresh.md b/_docs/getting-started/gitops-codefresh.md new file mode 100644 index 000000000..e69de29bb From 62df34f85fab881a6d008f68b2af8b5a1756c0e1 Mon Sep 17 00:00:00 2001 From: NimRegev Date: Wed, 28 Dec 2022 11:22:46 +0200 Subject: [PATCH 2/9] Update ci-codefresh.md --- _docs/getting-started/ci-codefresh.md | 84 +++++++++++++-------------- 1 file changed, 39 insertions(+), 45 deletions(-) diff --git a/_docs/getting-started/ci-codefresh.md b/_docs/getting-started/ci-codefresh.md index b2f86366f..f9066d4b2 100644 --- a/_docs/getting-started/ci-codefresh.md +++ b/_docs/getting-started/ci-codefresh.md @@ -10,29 +10,30 @@ TBD What's different in Codefresh when it comes to continuous integration (CI) and continuous delivery (CD)? There is a long answer and a short one. -Let's start with the short answer, that illustrates how Codefresh differs from and how it is superior to other CI/CD solutions. +Let's start with the short answer: Codefresh: -* Is a complete CI/CD solution, and not just CI. +* Is a _complete CI/CD solution_, and not just CI. * Works with all major Git platforms and cloud providers. There is no lock-in with any particular vendor. -* Has several unique features such as a distributed Docker layer cache, an auto-mounted shared volume, a private Docker registry and a private Helm repository. -* Built-in Kubernetes dashboard -* Built-in Helm dashboard, Helm charts browser, and Helm environment board +* Has pipelines with Has several unique features such as a distributed Docker layer cache, an auto-mounted shared volume, a private Docker registry and a private Helm repository. +* Built-in Kubernetes and Helm dashboards +* Helm charts browser, and Helm environment board -Distilled, Codefresh covers the full software lifecycle. You can see a release in the Kubernetes dashboard, click on it and go to the Docker image, click on the Docker image and go to the build that created it, all from a single interface. Codefresh is turbo-charged CI/CD. - Q. How is Codefresh different than Jenkins? -A. Codefresh is a superset of Jenkins. Jenkins is only CI. You need to write custom scripts or use another tool such as Ansible to deploy with Jenkins. See the comparison matrix and the detailed blog post. There is also a comparison with Jenkins X. +As you can see, Codefresh is turbo-charged CI/CD. We cover the full software lifecycle. View a release in the Kubernetes dashboard, click on it and go to the Docker image, click on the Docker image and go to the build that created it, all from a single interface. -Q. How is Codefresh different than my custom deployment scripts in bash/Ansible/Chef/Puppet/Python? -A. These scripts are custom made, complex to maintain and difficult to read. One of the reasons that developers and operators have difficulties in communication is the in-house nature of deployment scripts. Codefresh allows you to create standard declarative pipelines where each step is a reusable Docker image. +How does Codefresh do it? Everything for CI/CD in Codefresh starts and ends with pipelines. In Codefresh, a pipeline can do pretty much anyhting, only CI, only CD, both CI and CD. Your CI pipeline can compile and package code, build and push Docker images. The CD pipeline can deploy applications/artifacts to VMs, Kubernetes clusters, FTP sites, S3 buckets, and more. And yet another pipeline combines both integration and deployment for full CI/CD. Other pipelines can run unit tests, integration tests, acceptance tests etc. CI/CD pipeline to create and deploy your applications, or a pipeline run any custom action, such as tests. + + + + Completely programmatic approach -Unlike other CI/CD platforms which can be tightly coupled to a single Git provider, or a specific vendor or set of tools, Codefresh supports a fully programmtic implementation. create pipelines and define the pipeline’s steps, triggers, and variables. +Unlike other CI/CD platforms which can be tightly coupled to a single Git provider, or a specific vendor or set of tools, Codefresh supports a fully programmtic implementation. Pipelines are create pipelines and define the pipeline’s steps, triggers, and variables. Everything in the pipeline is defined as code and applied with the command line. Storing the definitions in a code repo ensures consistenct. Upscaling or expanind Doing so means we can create all of our pipelines in a consistent way and store those definitions in a code repository. Taking this one step step deeper, we could then create a bootstrap pipeline in Codefresh that generates pipelines when new definitions are added to this repo. See our previous post Programmatic Creation of Codefresh Pipelines (part 2) for more on this. @@ -41,11 +42,6 @@ The Docker registry integrations and all cluster integrations are automatically -Pipelines for -Everything in the CI/CD in Codefresh starts and ends with pipelines. In Codefresh, a ppieplene can do pretty much anyhting. - -It can be a set of definitions on how to implement the CI/CD for your applications, or it can run any custom action, such as unit, acceptance tests. -A CI pipeline would then fcompile and package code, build Docker images and push them Docjer images,. A CD pipeline woulddeploying applications/artifacts to VMs, Kubernetes clusters, FTP sites, S3 buckets and more. And a CI/CD pipeline does all of the above. Pipelines can Run unit tests, integration tests, acceptance tests etc. @@ -63,55 +59,53 @@ Since Codefresh is decoupled from any single pipeline source, we provide a progr ## CI/CD pipelines As mentioned earlier, everything in Codefresh CI/CD starts and ends with pipelines. -A Codefresh pipeline has two distinct +A Codefresh pipeline has two distinct aspects: -* Pipeline specifications in YAML - The specifications define the pipeline +* Pipeline specifications + Specifications define the pipeline: * Metadata such as name, project, tags, in Codefresh - * Events that trigger the pipeline such as webhooks, cron events, etc.) - * The steps to use for this pipeline (inline, from a repo, etc.) + * Events that trigger the pipeline, such as webhooks, cron events, etc. + * Steps to use for this pipeline (inline, from a repo, etc.) -* Pipeline steps, that define: +* Pipeline steps + Pipeline steps are essentially a collection of Docker images that define the: * Jobs to run * Sequence in which to run the jobs - * CI and our CD processes + * CI and CD processes to implement + + Step types range from clone, build, deploy, and, a freestyle step when no size fits. + For ready-to-use collections of pipeline steps, check out our [Plugin marketplace](https://codefresh.io/steps/){:target="\_blank"} Docker registry integrations and all cluster integrations are automatically available to all pipelines. You don’t need docker login commands or kubectl commands to setup a Kube context inside your pipeline. -Codefresh covers the full software lifecycle. You can see a release on the cluster dashboard, click on it, go to the docker image, click on it and go the build that created it, all from a single interface. Codefresh is batteries-included CI/CD. -For more on pipelines, start with the Introduction to Codefresh pipelines or jump to pipeline creation with ???? + +To see how pipeline work, start with the [Introduction to Codefresh pipelines]({{site.baseurl}}/docs/configure-ci-cd-pipeline/introduction-to-codefresh-pipelines/), or jump to [pipeline creation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/pipelines/). ## Releases and dashboards +Dashboards are key to providing information at the right time and in +perational Dashboards ~ Exposing the most commonly needed application and environmental information to developers so that they can troubleshoot without needing assistance from the DevOps teams; even in production + +Analytical Dashboards ~ Developers often need to reach out to the DevOps team to get statistics and metrics around builds and deployments. Codefresh automatically generates DORA metrics as well as many other key indicators of build and deployment efficiency, which can be easily viewed in seconds by product owners and management alike. + +## Integrations +Codefresh supports native integrations to all ## Where to go from here +Here are several links we think wouuld be useful t -Quick starts +### Quick starts To get up and running, follow our quick starts. The quick start modules are a series of flows that guide you from setting up your first account in Codefresh, to creating a basic pipeline, and deploying to Kubernetes. See XREF TBD -Example catalog +### Example catalog For those who are familiar with CI/CD, we have an extensive collection of examples, covering several CI and CD scenarios: -CI examples -CD examples +[CI examples]({{site.baseurl}}/docs/example-catalog/ci-examples/) +[CD examples]({{site.baseurl}}/docs/example-catalog/cd-examples/) -Guides +### Guides And finally, if you want more meat, dive in to our detailed guides. XREF TBD -Codefresh has extensive support for deployments to Kubernetes, and for more taditional deployment environments such as to plain VMs, JAR files, static websites, Wordpress instances, Database changesets . -B - UI support, -Dedicated pipeline steps: - deploy - cf-deploy-kubernetes -Kustomize -kubectl -Helm -Using the Codefresh GUI to deploy on demand. This is the easiest way and was described in the quick start guide. -Using the dedicated deploy step in a pipeline. Explained in detail in the present page. -Using the cf-deploy-kubernetes step in a pipeline. This can also perform simple templating on Kubernetes manifests. -Using a freestyle step with Kustomize. Described in details in this page. -Using a freestyle step with your own kubectl commands. This is very flexible, but assumes that you know how to work with kubectl. Described in details in this page. -Using Helm as a package manager. See the Helm quick start guide for more details. + From af75ab91e57c1fad74988c946aa067dd2b713767 Mon Sep 17 00:00:00 2001 From: NimRegev Date: Wed, 28 Dec 2022 14:03:03 +0200 Subject: [PATCH 3/9] Update ci cd topics --- _docs/getting-started/cd-codefresh.md | 20 +++++ _docs/getting-started/ci-codefresh.md | 110 +++----------------------- 2 files changed, 29 insertions(+), 101 deletions(-) diff --git a/_docs/getting-started/cd-codefresh.md b/_docs/getting-started/cd-codefresh.md index e69de29bb..9f19bd235 100644 --- a/_docs/getting-started/cd-codefresh.md +++ b/_docs/getting-started/cd-codefresh.md @@ -0,0 +1,20 @@ +--- +title: "Using Codefresh for CD" +description: "Continuous deployment (CD) with Codefresh pipelines" +group: getting-started +toc: true +--- + +TBD + +Focus on + +Connecting K8s cluster +Deploying K8s +Running kubectl +Connecting to Helm registries +Building Helm charts +Pushing Helm charts +Deploying Helm charts + +Dashboards \ No newline at end of file diff --git a/_docs/getting-started/ci-codefresh.md b/_docs/getting-started/ci-codefresh.md index f9066d4b2..e36e242ec 100644 --- a/_docs/getting-started/ci-codefresh.md +++ b/_docs/getting-started/ci-codefresh.md @@ -1,110 +1,18 @@ --- -title: "Using Codefresh for CI/CD" -description: "Continuous integration (CI) and continuous deployment (CD) with Codefresh pipelines" +title: "Using Codefresh for CI" +description: "Continuous integration (CI) with Codefresh pipelines" group: getting-started toc: true --- -TBD +Focus on: +Building Docker images +Compiling code +Running unit tests +Running integration tests +Security scans +Code quality -What's different in Codefresh when it comes to continuous integration (CI) and continuous delivery (CD)? -There is a long answer and a short one. - -Let's start with the short answer: - -Codefresh: -* Is a _complete CI/CD solution_, and not just CI. -* Works with all major Git platforms and cloud providers. There is no lock-in with any particular vendor. -* Has pipelines with Has several unique features such as a distributed Docker layer cache, an auto-mounted shared volume, a private Docker registry and a private Helm repository. -* Built-in Kubernetes and Helm dashboards -* Helm charts browser, and Helm environment board - -As you can see, Codefresh is turbo-charged CI/CD. We cover the full software lifecycle. View a release in the Kubernetes dashboard, click on it and go to the Docker image, click on the Docker image and go to the build that created it, all from a single interface. - - -How does Codefresh do it? -Everything for CI/CD in Codefresh starts and ends with pipelines. In Codefresh, a pipeline can do pretty much anyhting, only CI, only CD, both CI and CD. - -Your CI pipeline can compile and package code, build and push Docker images. The CD pipeline can deploy applications/artifacts to VMs, Kubernetes clusters, FTP sites, S3 buckets, and more. And yet another pipeline combines both integration and deployment for full CI/CD. -Other pipelines can run unit tests, integration tests, acceptance tests etc. CI/CD pipeline to create and deploy your applications, or a pipeline run any custom action, such as tests. - - - - - -Completely programmatic approach -Unlike other CI/CD platforms which can be tightly coupled to a single Git provider, or a specific vendor or set of tools, Codefresh supports a fully programmtic implementation. Pipelines are create pipelines and define the pipeline’s steps, triggers, and variables. - -Everything in the pipeline is defined as code and applied with the command line. Storing the definitions in a code repo ensures consistenct. Upscaling or expanind Doing so means we can create all of our pipelines in a consistent way and store those definitions in a code repository. Taking this one step step deeper, we could then create a bootstrap pipeline in Codefresh that generates pipelines when new definitions are added to this repo. See our previous post Programmatic Creation of Codefresh Pipelines (part 2) for more on this. - - -The Docker registry integrations and all cluster integrations are automatically available to all pipelines. You don’t need docker login commands or kubectl commands to set up a Kube context inside your pipeline. - - - -Pipelines can Run unit tests, integration tests, acceptance tests etc. - - - - - -Pipeline extras -We support all Git providers: Both on-premises and cloud -provides a rich set of triggers: Trigger pipelines on a schedule, from a push to a docker registry or from a push to a helm registry or from actions that happened in Git. -Has a rich, modern API With Codefresh, you can trigger a pipeline - -Since Codefresh is decoupled from any single pipeline source, we provide a programmatic way to - - -## CI/CD pipelines - -As mentioned earlier, everything in Codefresh CI/CD starts and ends with pipelines. -A Codefresh pipeline has two distinct aspects: - -* Pipeline specifications - Specifications define the pipeline: - * Metadata such as name, project, tags, in Codefresh - * Events that trigger the pipeline, such as webhooks, cron events, etc. - * Steps to use for this pipeline (inline, from a repo, etc.) - -* Pipeline steps - Pipeline steps are essentially a collection of Docker images that define the: - * Jobs to run - * Sequence in which to run the jobs - * CI and CD processes to implement - - Step types range from clone, build, deploy, and, a freestyle step when no size fits. - For ready-to-use collections of pipeline steps, check out our [Plugin marketplace](https://codefresh.io/steps/){:target="\_blank"} - -Docker registry integrations and all cluster integrations are automatically available to all pipelines. You don’t need docker login commands or kubectl commands to setup a Kube context inside your pipeline. - - -To see how pipeline work, start with the [Introduction to Codefresh pipelines]({{site.baseurl}}/docs/configure-ci-cd-pipeline/introduction-to-codefresh-pipelines/), or jump to [pipeline creation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/pipelines/). - -## Releases and dashboards -Dashboards are key to providing information at the right time and in -perational Dashboards ~ Exposing the most commonly needed application and environmental information to developers so that they can troubleshoot without needing assistance from the DevOps teams; even in production - -Analytical Dashboards ~ Developers often need to reach out to the DevOps team to get statistics and metrics around builds and deployments. Codefresh automatically generates DORA metrics as well as many other key indicators of build and deployment efficiency, which can be easily viewed in seconds by product owners and management alike. - -## Integrations -Codefresh supports native integrations to all - -## Where to go from here -Here are several links we think wouuld be useful t - -### Quick starts -To get up and running, follow our quick starts. The quick start modules are a series of flows that guide you from setting up your first account in Codefresh, to creating a basic pipeline, and deploying to Kubernetes. -See XREF TBD - -### Example catalog -For those who are familiar with CI/CD, we have an extensive collection of examples, covering several CI and CD scenarios: -[CI examples]({{site.baseurl}}/docs/example-catalog/ci-examples/) -[CD examples]({{site.baseurl}}/docs/example-catalog/cd-examples/) - -### Guides -And finally, if you want more meat, dive in to our detailed guides. -XREF TBD From 08037c1eff2d2e125d8428f733b70ddd69d98f79 Mon Sep 17 00:00:00 2001 From: NimRegev Date: Wed, 28 Dec 2022 14:06:18 +0200 Subject: [PATCH 4/9] Create concepts.md --- _docs/getting-started/concepts.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 _docs/getting-started/concepts.md diff --git a/_docs/getting-started/concepts.md b/_docs/getting-started/concepts.md new file mode 100644 index 000000000..cb6d2d4e5 --- /dev/null +++ b/_docs/getting-started/concepts.md @@ -0,0 +1,6 @@ +--- +title: "Concepts in Codefresh" +description: "Understand terminology and nuances in Codefresh" +group: getting-started +toc: true +--- \ No newline at end of file From da91adef7ae27faa94aa81e2075cbfdd0005f85a Mon Sep 17 00:00:00 2001 From: NimRegev Date: Thu, 29 Dec 2022 14:28:54 +0200 Subject: [PATCH 5/9] Update content --- _docs/getting-started/cd-codefresh.md | 45 +++++++- _docs/getting-started/ci-codefresh.md | 54 ++++++++++ _docs/getting-started/concepts.md | 27 ++++- _docs/getting-started/intro-to-codefresh.md | 113 ++++++++++++++++++++ 4 files changed, 237 insertions(+), 2 deletions(-) create mode 100644 _docs/getting-started/intro-to-codefresh.md diff --git a/_docs/getting-started/cd-codefresh.md b/_docs/getting-started/cd-codefresh.md index 9f19bd235..97cf9a49a 100644 --- a/_docs/getting-started/cd-codefresh.md +++ b/_docs/getting-started/cd-codefresh.md @@ -16,5 +16,48 @@ Connecting to Helm registries Building Helm charts Pushing Helm charts Deploying Helm charts +Dashboards + + +## Connecting to Kubernetes +As continuotus deployment starts with Kubernetes clusters, Codefresh integrates with any known cluster provider suG +Connect your Kubernetes cluster to Codefresh through a simple integration steps. For those Kubernetes clusters that are not inKE the Kubernetes integration window, you will be able to add a cluster from known providers such as Google, Azure, Amazon etc. You can also add any generic Kubernetes cluster by manually entering your cluster settings. + +## Deploying to Kubernetes +Deploying to Kubernetes with Codefresh is easy because of the variety of deployment options you can choose from +So we have Deploy from the Codefresh UI or programmatically through dedicated setos in pipelines +No need for `kubectl` commands thrAs you may have guessed, we have dedicated step types for deployment +For quick and easy deployment, deploy on-demand from the Codefresh UI +Ddicated steps in pipelines: `deploy` or the more advanced `cf-deploy-kubernetes`step that enables simple templating on Kubernetes manifests. in a pipeline. Explained in detail in the present page. +Kustomize and Helm as package manager through freestyle steps in pipelines. +Using a freestyle step with Kustomize. Described in details in this page. +Using a freestyle step with your own kubectl commands. This is very flexible, but assumes that you know how to work with kubectl. Described in details in this page. +Using Helm as a package manager. See the Helm quick start guide for more details. + +## kubectl +kubectl is the command +If you wish you can still run your own custom kubectl commands in a freestyle step for maximum flexibility on cluster deployments. Kubectl is the command line interface for managing kubernetes clusters. +Codefresh helps you even in this scenario by automatically setting up your config context with your connected clusters. + + +## Helm and Codefresh +Codefresh supplies a built-in Helm repository with every Codefresh account. f you also wish to push your chart to a Helm repository (which is always a good practice) you should configure a Helm repository for the step to work with. Besides public HTTP repositories, we support a variety of private, authenticated Helm repositories. Codefresh also provides a free, managed Helm repository for every account. + +Connect to Helm repositories +In addition to the official Helm repositories which are displayed in the Helm charts, Codefresh allows you coConnect with any external Helm repository through simple integrations. You can then inject the Helm repository context into your pipelines by selecting the repository name. +Build Helm charts +Install Helm charts or build a new one. +Deploy and puch Helm charts +Codefresh has a Helm step to easily integrate Helm in Codefresh pipelines, and authenticate, configure, and execute Helm commands. +The Helm step can operate in one of 3 modes covering any + +Install to install the chart into a Kubernetes cluster. This is the default mode if not explicitly set. +Push to package the chart and push it to the defined repository. +Authentication to set up authentication and add the repo to Helm. This is useful if you want to write your own helm commands using the freestyle step’s commands property, but you still want the step to handle authentication. + +Deploy Helm charts +Deploy the Helm chart to a Kubernetes cluster or repo or both. + + +## Dashboards -Dashboards \ No newline at end of file diff --git a/_docs/getting-started/ci-codefresh.md b/_docs/getting-started/ci-codefresh.md index e36e242ec..657543cd3 100644 --- a/_docs/getting-started/ci-codefresh.md +++ b/_docs/getting-started/ci-codefresh.md @@ -13,7 +13,61 @@ Running integration tests Security scans Code quality +CI platform/ tools +## Docker images +Building a Docker image from the source code is probably the most common and basic requirement for a CI pipeline. +The `build` step in Codefresh allows you to build a Docker image in a completely declariative manner, and to automatically it to your default Docker registry without any configuration. +Building a Dockerfile in a pipeline works in the same way as building the Dockerfile locally on your workstation. +The Images dashoabord displays all the images. The images are enrichmed with informatoin suach as the Git brnach that created the image and the Git has witht eh last commit. +For more on the build step see XREF +Here are other links that +Examples +Docker registries +## Code compilation +## Unit testing +Codefresh supports all testing frameworks, including mocking frameworks, for all popular programming languages. Easily run unit tests on the source code of the application for every commit or pull request (PR) through our freestyle step in pipelines. + +Run any type of unit tests in Codefresh pipelines, from smoke tests in a dockerfile, to tests with external or application images for simple applications, and evenrun them on a special testing image for complex applications. +You can create test reports and view them whenever you need. + +More links TBD +[Example catalog]({{site.baseurl}}/docs/example-catalog/ci-examples/run-unit-tests/) + + +## Integration testing +Compared to unit tests that run on the source code, integration tests run on the application itself. You need to either launch the application itself, or one or more external services such as a database. +In Codefresh, you can launch these sidecar containers within the pipeline through compositions and service containers. + + +More links TBD +[Example catalog]({{site.baseurl}}/docs/example-catalog/ci-examples/run-integrations-tests/). + +## Security scanning +Integrate Codefresh with any security scanning platform that scans source code or Docker images for vulnerabilities. +Codefresh can integrate with Any security solution + +A freestyle step as long as the scanning solution offers any of :Because you can insert a scanning step anywhere in your pipeline, you have great flexibility on when a security scan is happening. Common strategies are: + +Scanning the source code before being packaged in a Container +Scanning a container before it is being stored to a registry +Scanning a container before being deployed to production +A Combination of the above +By attaching Analayis reports to Codefresh builds using our test reportingCodefresh offers the capability to store your test results for every build and view them at any point in time. +Our plugin direction Codefresh has ready-to-use Docker images for serverl securoiry platforms such as Anchore, Aqua Security + +More links TBD + +## Code quality coverage +Good quality code is central to any CI platform or tool, and Codefresh integrates with the top code quality platforms/tools in the market. track code coverage (Coverall), inspect code quaility (SonarQube) and generate code coverage analysis reports (Codecov). +With three steps: +set up the integrations +copy and paste the ready-to-use step for your platform/tool into your pipeline from Our plugins page +Reference them by name in the pipeline step, and view the updated reports in the respective UIs. + +You can also attach the analysis reports to your pipeline builds using our test reports and with a simple click view the entire report inthe Codefresh UI. + +More links TBD diff --git a/_docs/getting-started/concepts.md b/_docs/getting-started/concepts.md index cb6d2d4e5..5f8cb0036 100644 --- a/_docs/getting-started/concepts.md +++ b/_docs/getting-started/concepts.md @@ -3,4 +3,29 @@ title: "Concepts in Codefresh" description: "Understand terminology and nuances in Codefresh" group: getting-started toc: true ---- \ No newline at end of file +--- + +Runtime +A runtime in Codefresh is a Codefresh GitOps installation. + +Runner +Runner is a a Codefrsh installation for pipelines. Hybrid encironments +A Runner installation creates a runtime enviroment + +Project +Project is the top-level entity for Codefresh pipelines. Projects group related CI/CD pipelines. +A project can be a single application +Benefits of projects - pipeline management options + +Pipeline + + +Workflow + + +Application + +Triggers + +Events + diff --git a/_docs/getting-started/intro-to-codefresh.md b/_docs/getting-started/intro-to-codefresh.md new file mode 100644 index 000000000..850aad11c --- /dev/null +++ b/_docs/getting-started/intro-to-codefresh.md @@ -0,0 +1,113 @@ +--- +title: "Introduction to Codefresh" +description: "What is Codefresh?" +group: getting-started +toc: true +--- + +TBD + + + \ No newline at end of file From 852349f14dd47f398d670a1aea073e9916b7f907 Mon Sep 17 00:00:00 2001 From: NimRegev Date: Sun, 1 Jan 2023 14:28:03 +0200 Subject: [PATCH 6/9] Add concepts --- _docs/getting-started/cd-codefresh.md | 28 ++++++++-------- _docs/getting-started/concepts.md | 47 +++++++++++++++++++++++---- 2 files changed, 55 insertions(+), 20 deletions(-) diff --git a/_docs/getting-started/cd-codefresh.md b/_docs/getting-started/cd-codefresh.md index 97cf9a49a..52577ea81 100644 --- a/_docs/getting-started/cd-codefresh.md +++ b/_docs/getting-started/cd-codefresh.md @@ -19,25 +19,25 @@ Deploying Helm charts Dashboards -## Connecting to Kubernetes -As continuotus deployment starts with Kubernetes clusters, Codefresh integrates with any known cluster provider suG -Connect your Kubernetes cluster to Codefresh through a simple integration steps. For those Kubernetes clusters that are not inKE the Kubernetes integration window, you will be able to add a cluster from known providers such as Google, Azure, Amazon etc. You can also add any generic Kubernetes cluster by manually entering your cluster settings. +## Connecting to Kubernetes +Continuous deployment starts with Kubernetes clusters, and Codefresh integrates with any known cluster provider for Kubernetes through a few simple steps. Connect your Google, Azure, Amazon Kubernetes cluster to Codefresh through simple integration steps. +For those Kubernetes clusters that are not in our list of cluster providers, you can manually enter your cluster settings to add any generic Kubernetes cluster. ## Deploying to Kubernetes -Deploying to Kubernetes with Codefresh is easy because of the variety of deployment options you can choose from -So we have Deploy from the Codefresh UI or programmatically through dedicated setos in pipelines -No need for `kubectl` commands thrAs you may have guessed, we have dedicated step types for deployment +Codefresh offers a variety of options for you to choose from when deploying to Kubernetes. +We have deployment from the Codefresh UI or programmatically through dedicated steps in pipelines, avoiding the need for `kubectl` commands thrAs you may have guessed, we have dedicated step types for deployment + +On-demand deployment: For quick and easy deployment, deploy on-demand from the Codefresh UI -Ddicated steps in pipelines: `deploy` or the more advanced `cf-deploy-kubernetes`step that enables simple templating on Kubernetes manifests. in a pipeline. Explained in detail in the present page. -Kustomize and Helm as package manager through freestyle steps in pipelines. -Using a freestyle step with Kustomize. Described in details in this page. -Using a freestyle step with your own kubectl commands. This is very flexible, but assumes that you know how to work with kubectl. Described in details in this page. -Using Helm as a package manager. See the Helm quick start guide for more details. +Dedicated steps in pipelines: Use our `deploy` step, or the more advanced `cf-deploy-kubernetes`step that enables simple templating on Kubernetes manifests. +Kustomize through a freestyle step +Helm as package manager, also through a freestyle step + +Finally, if you are familair with and want to work with 'kubectl', use your own our freestyle step If you wish you can still run your own custom kubectl commands in a freestyle step for maximum flexibility on cluster deployments. ## kubectl -kubectl is the command -If you wish you can still run your own custom kubectl commands in a freestyle step for maximum flexibility on cluster deployments. Kubectl is the command line interface for managing kubernetes clusters. -Codefresh helps you even in this scenario by automatically setting up your config context with your connected clusters. +kubectl is the command line interface for managing kubernetes clusters. +Codefresh automatically sets up your config context with your connected clusters. ## Helm and Codefresh diff --git a/_docs/getting-started/concepts.md b/_docs/getting-started/concepts.md index 5f8cb0036..2e1672fe3 100644 --- a/_docs/getting-started/concepts.md +++ b/_docs/getting-started/concepts.md @@ -6,25 +6,60 @@ toc: true --- Runtime -A runtime in Codefresh is a Codefresh GitOps installation. +A Runtime in Codefresh is a GitOps installation in your Codefresh account. A Runtime can be Install a Hosted or Hybrid GitOps Runtime. Hosted Runtimes are installed on a Codefresh cluster and managed by Codefresh. Hybrid Runtimes are installed on customer clusters, and managed by the customer. +A single Runtime can connect to and manage multiple remote clusters. +You can install a single Hosted runtime, and multiple Hybrid Runtines in a Codefresh account. Runner -Runner is a a Codefrsh installation for pipelines. Hybrid encironments -A Runner installation creates a runtime enviroment +Runner is the hybrid installation option for CI/CD pipelines in your Codefresh account. The Runner allows you to run pipelines on your own Kubernetes cluster, including private clusters behind company firewalls. +Every Runner installation creates a runtime enviroment in your account. You can inst. You can assign the Ru +Assign the Runner to any pipeline to automatically run the pipeline in your own cluster. External integrations (such as Docker registry or Helm repositories) are also available to the Runner making pipelines exactly the same regardless of their runtime environment. +The Runner is installed as a Kubernetes native application on any Kubernetes-compliant cluster and offers the following features: + +Access to secure services (such as Git repositories or databases) that are behind the firewall and normally not accessible to the public cloud. +The ability to use special resources in your Codefresh pipeline that are unique to your application (i.e. GPU nodes or other special hardware only present in your data center). +Complete control over the build environment in addition to resources offered to your pipelines. + +You can have multiple Runner installations in the same Codefresh account. A Runner can also manage multiple remote clusters across your account. Project -Project is the top-level entity for Codefresh pipelines. Projects group related CI/CD pipelines. -A project can be a single application -Benefits of projects - pipeline management options +A project is a proprietary, top-level entity in Codefresh for grouping pipelines. Pipelines can be grouped according to any criteria that is relevant to your enterprise. The criteria can be logical and based on teams, departments, or location for example, or funtional, and based microservices in applications. +Goruping pipelines in projects enable centralized viewing and configuration. +Selecting a pipeline shows all pipelines that belong to the same project. +Access control and user-defined variables defined for project are inherited by all the pipelines assigned to the project + +There are no limits to the number of projects you can create in your account. You can also create standalone pipelines and assign them later to a project, or detach a pipeline assigned to a project. + Pipeline +A pipeline is the central component for CI/CD implementation in Codefresh. Everything for CI/CD in Codefresh starts and ends with pipelines, as a pipeline can do only CI, only CD, both CI and CD, or run any custom action, such as unit and integration tests. + +A CI pipeline can compile and package code, build and push Docker images. A CD pipeline can deploy applications/artifacts to VMs, Kubernetes clusters, FTP sites, S3 buckets, and more. And a CI/CD pipeline can combine code compilation, integration, and deployment for full CI/CD. + + Workflow +A workflow is a new type of Kubernetes resource that lets you define and run automated workflows, and stores their state. +Argo Workflows is an open source workflow engine that orchestrates parallel tasks on Kubernetes. Argo Workflows is implemented as a set of Kubernetes custom resource definitions (CRDs). + +Argo Workflows is part of the Argo project, which provides Kubernetes-native software delivery tools including Argo CD, Argo Events and Argo Rollouts. + +Codefresh integrates with Argo Workflows to implement continours integration topped with our unique functionlaity on top of vanilla + +Triggers: + +Workflow Templates: Predefined templates + +Steps: + +Workflows dashboard: The Workflows dashboard provides +See Delivery Pipelines. Application + Triggers Events From 08bbd5b540685f30aad24c6b2920a089c5e0d2e4 Mon Sep 17 00:00:00 2001 From: NimRegev Date: Tue, 3 Jan 2023 11:06:46 +0200 Subject: [PATCH 7/9] Update content Added content to concept and ci, cd topics --- _docs/getting-started/cd-codefresh.md | 8 +- _docs/getting-started/ci-codefresh.md | 90 ++++++++++++++-------- _docs/getting-started/concepts.md | 104 ++++++++++++++++++-------- 3 files changed, 133 insertions(+), 69 deletions(-) diff --git a/_docs/getting-started/cd-codefresh.md b/_docs/getting-started/cd-codefresh.md index 52577ea81..4be148cea 100644 --- a/_docs/getting-started/cd-codefresh.md +++ b/_docs/getting-started/cd-codefresh.md @@ -5,9 +5,9 @@ group: getting-started toc: true --- -TBD +Work in progress TBD -Focus on + ## Connecting to Kubernetes @@ -33,7 +33,7 @@ Dedicated steps in pipelines: Use our `deploy` step, or the more advanced `cf-de Kustomize through a freestyle step Helm as package manager, also through a freestyle step -Finally, if you are familair with and want to work with 'kubectl', use your own our freestyle step If you wish you can still run your own custom kubectl commands in a freestyle step for maximum flexibility on cluster deployments. +Finally, if you are familair with and want to work with 'kubectl', run your own custom kubectl commands in a freestyle step for maximum flexibility on cluster deployments. ## kubectl kubectl is the command line interface for managing kubernetes clusters. diff --git a/_docs/getting-started/ci-codefresh.md b/_docs/getting-started/ci-codefresh.md index 657543cd3..33bf5da35 100644 --- a/_docs/getting-started/ci-codefresh.md +++ b/_docs/getting-started/ci-codefresh.md @@ -1,32 +1,47 @@ --- -title: "Using Codefresh for CI" +title: "Codefresh for CI" description: "Continuous integration (CI) with Codefresh pipelines" group: getting-started toc: true --- -Focus on: + -CI platform/ tools +Work in progress CI platform/ tools ## Docker images -Building a Docker image from the source code is probably the most common and basic requirement for a CI pipeline. -The `build` step in Codefresh allows you to build a Docker image in a completely declariative manner, and to automatically it to your default Docker registry without any configuration. -Building a Dockerfile in a pipeline works in the same way as building the Dockerfile locally on your workstation. -The Images dashoabord displays all the images. The images are enrichmed with informatoin suach as the Git brnach that created the image and the Git has witht eh last commit. -For more on the build step see XREF -Here are other links that -Examples -Docker registries +WBuilding a Docker image from the source code is probably the most common and basic requirement for a CI pipeline. In Codefresh you can build, push, and promote Docker images, using declarative YAML and credentials that are defined once stored centrally. + +**Build and push image** +Building a Dockerfile in a pipeline works in the same way as building the Dockerfile locally on your workstation. The `build` step in Codefresh enables you to build a Docker image in a completely declarative manner, and to automatically push it to your default Docker registry without any configuration. + +See: +[Build and push Docker images]({{site.baseurl}}/docs/example-catalog/ci-examples/build-and-push-an-image/) + + +**View image** +The Images dashboard displays images from all registries connected to Codefresh. Every image is enriched with Git branch, Git hash and commit message, and any tags defined for the image. + +See: +[Viewing Docker images]({{site.baseurl}}/docs/ci-cd-guides/working-with-docker-registries/#viewing-docker-images) + + +**Promote image** +Promote an image by copying it from one registry to another. You can promote images either from the Codefresh UI, or automatically from pipelines by specifying an existing image in the pipeline step. + +See: +[Promoting Docker images]({{site.baseurl}}/docs/ci-cd-guides/working-with-docker-registries/#viewing-docker-images) + ## Code compilation +TBD ## Unit testing Codefresh supports all testing frameworks, including mocking frameworks, for all popular programming languages. Easily run unit tests on the source code of the application for every commit or pull request (PR) through our freestyle step in pipelines. @@ -34,8 +49,8 @@ Codefresh supports all testing frameworks, including mocking frameworks, for all Run any type of unit tests in Codefresh pipelines, from smoke tests in a dockerfile, to tests with external or application images for simple applications, and evenrun them on a special testing image for complex applications. You can create test reports and view them whenever you need. -More links TBD -[Example catalog]({{site.baseurl}}/docs/example-catalog/ci-examples/run-unit-tests/) +See: +[Run unit tests example]({{site.baseurl}}/docs/example-catalog/ci-examples/run-unit-tests/) ## Integration testing @@ -43,31 +58,40 @@ Compared to unit tests that run on the source code, integration tests run on the In Codefresh, you can launch these sidecar containers within the pipeline through compositions and service containers. -More links TBD -[Example catalog]({{site.baseurl}}/docs/example-catalog/ci-examples/run-integrations-tests/). +See: +[Run integration tests example]({{site.baseurl}}/docs/example-catalog/ci-examples/run-integrations-tests/). ## Security scanning -Integrate Codefresh with any security scanning platform that scans source code or Docker images for vulnerabilities. -Codefresh can integrate with Any security solution +Security scans are critical to deploying quality code. With Codefresh, in addition you can control when to implement the security scan, and then view the scan results in the Codefresh UI, without having to go to the security platform. + +**Security scan platforms** +Codefresh can integrate with any security scanning platform that scans source code or Docker images for vulnerabilities. We already have ready-to-use Docker images for several security platforms such as Anchore, Aqua Security, Clair, Twistlock and WhiteSource. For the full list, visit our [Plug-ins library](https://codefresh.io/steps/){:target="\_blank"}. + +**Scan timing in pipeline step** +The security scan is implemented through a freestyle step, inserted anywhere in the pipeline. The fact that you can insert the step anywhere allows you to control when the scan is executed, for example, before the source code is packaged in a container, or before the container is stored in a registry or deployed to production, or any combination of these. + +**View scan results** +As with any scan, the final step is viewing the scan results. Make the scan results available in Codefresh release dashboards (Test Report button) by attaching analysis reports to the pipeline build. -A freestyle step as long as the scanning solution offers any of :Because you can insert a scanning step anywhere in your pipeline, you have great flexibility on when a security scan is happening. Common strategies are: +**Security annotations** +Correlate the Docker images in Codefresh with the results of the security scanning platform by adding annotations for custom metatdata. For example, you can add annotations such as the number of issues or the URL of the full report. + + +[Security scanning tests]({{site.baseurl}}/docs/testing/security-scanning/) +[Test reporting modes]({{site.baseurl}}/docs/testing/test-reports/) +[Metadata in Docker images]({{site.baseurl}}/docs/pipelines//docker-image-metadata/) -Scanning the source code before being packaged in a Container -Scanning a container before it is being stored to a registry -Scanning a container before being deployed to production -A Combination of the above -By attaching Analayis reports to Codefresh builds using our test reportingCodefresh offers the capability to store your test results for every build and view them at any point in time. -Our plugin direction Codefresh has ready-to-use Docker images for serverl securoiry platforms such as Anchore, Aqua Security -More links TBD ## Code quality coverage -Good quality code is central to any CI platform or tool, and Codefresh integrates with the top code quality platforms/tools in the market. track code coverage (Coverall), inspect code quaility (SonarQube) and generate code coverage analysis reports (Codecov). -With three steps: -set up the integrations -copy and paste the ready-to-use step for your platform/tool into your pipeline from Our plugins page -Reference them by name in the pipeline step, and view the updated reports in the respective UIs. +Good quality code is central to any CI platform or tool. Codefresh integrates with the top code quality platforms/tools in the market to track code coverage, inspect code quailty, and generate code-coverage analysis reports. + +Three steps to +* Set up integrations with the platforms/tools (Coverall, SonarQube, Codecov, for example). +* Copy and paste the ready-to-use step for your platform/tool into your pipeline from our [Plug-ins library](https://codefresh.io/steps/){:target="\_blank"}. +* Reference them by name in the pipeline step, and view the updated reports in the respective UIs. + +See: +[Code coverage examples]({{site.baseurl}}/docs/example-catalog/examples/#code-coverage-examples) -You can also attach the analysis reports to your pipeline builds using our test reports and with a simple click view the entire report inthe Codefresh UI. -More links TBD diff --git a/_docs/getting-started/concepts.md b/_docs/getting-started/concepts.md index 2e1672fe3..f810459d2 100644 --- a/_docs/getting-started/concepts.md +++ b/_docs/getting-started/concepts.md @@ -5,62 +5,102 @@ group: getting-started toc: true --- -Runtime -A Runtime in Codefresh is a GitOps installation in your Codefresh account. A Runtime can be Install a Hosted or Hybrid GitOps Runtime. Hosted Runtimes are installed on a Codefresh cluster and managed by Codefresh. Hybrid Runtimes are installed on customer clusters, and managed by the customer. -A single Runtime can connect to and manage multiple remote clusters. +### Runtime +A Runtime in Codefresh is a GitOps installation in your Codefresh account, in either a Hosted or Hybrid installation environment. Hosted Runtimes are installed on a Codefresh cluster and managed by Codefresh. Hybrid Runtimes are installed on customer clusters, and managed by the customers. You can install a single Hosted runtime, and multiple Hybrid Runtines in a Codefresh account. + +A single Runtime can connect to and manage multiple remote clusters. +See: +[GitOps runtime architecture]({{site.baseurl}}/docs/installation/runtime-architecture) +[Hybrid GitOps Runtime installation]({{site.baseurl}}/docs/installation/hybrid-gitops) +[Hosted GitOps Runtime installation]({{site.baseurl}}/docs/installation/hosted-runtime) + + -Runner -Runner is the hybrid installation option for CI/CD pipelines in your Codefresh account. The Runner allows you to run pipelines on your own Kubernetes cluster, including private clusters behind company firewalls. -Every Runner installation creates a runtime enviroment in your account. You can inst. You can assign the Ru -Assign the Runner to any pipeline to automatically run the pipeline in your own cluster. External integrations (such as Docker registry or Helm repositories) are also available to the Runner making pipelines exactly the same regardless of their runtime environment. -The Runner is installed as a Kubernetes native application on any Kubernetes-compliant cluster and offers the following features: +### Runner +The Runner is the hybrid installation option for CI/CD pipelines in your Codefresh account. The Runner is installed as a Kubernetes native application on any Kubernetes-compliant cluster. It allows you to run pipelines on your own Kubernetes cluster, including private clusters behind company firewalls. -Access to secure services (such as Git repositories or databases) that are behind the firewall and normally not accessible to the public cloud. -The ability to use special resources in your Codefresh pipeline that are unique to your application (i.e. GPU nodes or other special hardware only present in your data center). -Complete control over the build environment in addition to resources offered to your pipelines. +Codefresh Runner gives you: +* Access to secure services (such as Git repositories or databases) that are behind the firewall and normally not accessible to the public cloud. +* The ability to use special resources in your Codefresh pipeline that are unique to your application, GPU nodes or other special hardware only present in your data center. +* Complete control over the build environment in addition to resources for pipelines. -You can have multiple Runner installations in the same Codefresh account. A Runner can also manage multiple remote clusters across your account. +Every Runner installation creates a runtime enviroment in your account. Assign the Runner to any pipeline to automatically run the pipeline in your own cluster. External integrations (such as Docker registry or Helm repositories) are also available to the Runner making pipelines exactly the same regardless of their runtime environment. -Project -A project is a proprietary, top-level entity in Codefresh for grouping pipelines. Pipelines can be grouped according to any criteria that is relevant to your enterprise. The criteria can be logical and based on teams, departments, or location for example, or funtional, and based microservices in applications. -Goruping pipelines in projects enable centralized viewing and configuration. -Selecting a pipeline shows all pipelines that belong to the same project. -Access control and user-defined variables defined for project are inherited by all the pipelines assigned to the project +You can have multiple Runner installations in the same Codefresh account. A Runner can also manage multiple remote clusters in your account. + +See: +[Codefresh Runner installation]({{site.baseurl}}/docs/installation/codefresh-runner) +[Runner installation behind firewalls]({{site.baseurl}}/docs/reference/behind-the-firewall) + + +### Project +A project is a top-level entity in Codefresh for grouping related pipelines. Projects can group pipelines according to any criteria that is relevant to your enterprise. The criteria can be logical and based on teams, departments, or location for example, or funtional, and based microservices in applications. +Projects centralize viewing and configuration settings for the pipelines that belong to them: +* Selecting a pipeline shows the other pipelines in the same project. +* Define access control and user-defined variables for the project, and they are inherited by all the pipelines assigned to the project There are no limits to the number of projects you can create in your account. You can also create standalone pipelines and assign them later to a project, or detach a pipeline assigned to a project. +See: +[Projects in pipelines]({{site.baseurl}}/docs/pipelines/pipelines/#pipeline-concepts) -Pipeline -A pipeline is the central component for CI/CD implementation in Codefresh. Everything for CI/CD in Codefresh starts and ends with pipelines, as a pipeline can do only CI, only CD, both CI and CD, or run any custom action, such as unit and integration tests. +### Pipeline +The pipeline is the central component in Codefresh that implements CI/CD processes. Everything for CI/CD in Codefresh starts and ends with pipelines. a pipeline can do only CI, only CD, both CI and CD, or run any custom action, such as unit and integration tests. A CI pipeline can compile and package code, build and push Docker images. A CD pipeline can deploy applications/artifacts to VMs, Kubernetes clusters, FTP sites, S3 buckets, and more. And a CI/CD pipeline can combine code compilation, integration, and deployment for full CI/CD. - -Workflow -A workflow is a new type of Kubernetes resource that lets you define and run automated workflows, and stores their state. -Argo Workflows is an open source workflow engine that orchestrates parallel tasks on Kubernetes. Argo Workflows is implemented as a set of Kubernetes custom resource definitions (CRDs). +### Workflow + + + +### Applications +An application is a deployment to a Kubernetes, or any Kubernetes-compatiale cluster or clusters. +Codefresh supports two types of applications: +* Containerized applications packaged as Docker images or +* Argo CD applications + +**Containerized applications** +Containerized applications are compiled, packaged, and deployed through Codefresh pipelines. Codefresh has native support for Docker artifacts, and also supports non-Dockerized applications that don’t use a Dockerfile for the actual build. -Triggers: +Deploy an application directly to Kubernetes through the Codefresh UI, or use Helm as a package manager to deploy to Kubernetes, again from Codefresh. +Codefresh offers several levels of visibility into your deployments : +* The Kubernetes dashboard displays the status of pods and Docker images. +* The Helm dashabord displays the applications deployed to the cluster through Helm packages. +* The Environment dashbaord displays both Helm and Kubernetes releases, the status of the cluster, and most importantly that of the builds that affect it. -Workflow Templates: Predefined templates +See: -Steps: -Workflows dashboard: The Workflows dashboard provides -See Delivery Pipelines. +**Agro CD applications** +Argo CD applications conform to Argo CD's application definition CRD (Custom Resource Definition). Argo CD supports several types of Kubernetes manifests, including Jsonnet, Kustomize applications, Helm charts, and YAML/json files, and supports webhook notifications from Git. +Create Argo CD applications that are fully GitOps-compliant from the Codefresh UI. Work in form mode or directly in YAML in the Create Application wizard. Built-in validation makes it easy to identify and fix errors before commit. The application manifest is generated, committed to Git, and synced to your cluster. +After creation, you can edit and optimize the application, +Just as with Dockerized applications, you get full visibily into the applications and their deployment thorugh the global Analytics, DORA metrics, and the Application dashboards. The Applications dashboard displays the individual deployments across your enterprise. Drill down shows the current state of all the resources in the application with actions and detilaed information for each resource. -Application -Triggers +### Triggers +TBD -Events +### Events +TBD From d578b310ccaba83d76263246e2d8e25a8d922cf2 Mon Sep 17 00:00:00 2001 From: NimRegev Date: Tue, 3 Jan 2023 16:21:12 +0200 Subject: [PATCH 8/9] Update getting started --- _data/home-content.yml | 16 ++++++ _data/nav.yml | 20 ++++++-- _docs/getting-started/cd-codefresh.md | 72 +++++++++++++++++++-------- _docs/getting-started/ci-codefresh.md | 15 +++--- _docs/getting-started/concepts.md | 27 ++++++---- 5 files changed, 108 insertions(+), 42 deletions(-) diff --git a/_data/home-content.yml b/_data/home-content.yml index 4fdd35926..bc5aef6b1 100644 --- a/_data/home-content.yml +++ b/_data/home-content.yml @@ -1,5 +1,21 @@ +- title: Getting started + icon: images/home-icons/started.svg + url: '' + links: + - title: Introduction to Codefresh + localurl: /docs/getting-started/intro-to-codefresh/ + - title: Codefresh for CI + localurl: /docs/getting-started/ci-codefresh/ + - title: Codefresh for CD + localurl: /docs/getting-started/cd-codefresh/ + - title: Codefresh for GitOps + localurl: /docs/getting-started/gitops-codefresh/ + - title: Concepts in Codefresh + localurl: /docs/getting-started/concepts/ + + - title: Example catalog icon: images/home-icons/tutorial.svg url: '' diff --git a/_data/nav.yml b/_data/nav.yml index 681b2dce9..50e3f7a4d 100644 --- a/_data/nav.yml +++ b/_data/nav.yml @@ -1,11 +1,25 @@ - - +- title: Getting started + url: "/getting-started" + pages: + - title: Introduction to Codefresh + url: "/intro-to-codefresh" + - title: Codefresh for CI + url: "/ci-codefresh" + - title: Codefresh for CD + url: "/cd-codefresh" + - title: Codefresh for GitOps + url: "/gitops-codefresh" + - title: Concepts in Codefresh + url: "/concepts" + + + - title: Example catalog url: "/example-catalog" pages: - - title: "CI/CD examples for pipelines" + - title: CI/CD examples for pipelines url: "/examples" - title: "CI examples" url: "/ci-examples" diff --git a/_docs/getting-started/cd-codefresh.md b/_docs/getting-started/cd-codefresh.md index 4be148cea..2dc6a70fc 100644 --- a/_docs/getting-started/cd-codefresh.md +++ b/_docs/getting-started/cd-codefresh.md @@ -1,5 +1,5 @@ --- -title: "Using Codefresh for CD" +title: "Codefresh for CD" description: "Continuous deployment (CD) with Codefresh pipelines" group: getting-started toc: true @@ -23,41 +23,69 @@ Dashboards --> Continuous deployment starts with Kubernetes clusters, and Codefresh integrates with any known cluster provider for Kubernetes through a few simple steps. Connect your Google, Azure, Amazon Kubernetes cluster to Codefresh through simple integration steps. For those Kubernetes clusters that are not in our list of cluster providers, you can manually enter your cluster settings to add any generic Kubernetes cluster. +See [Connecting a Kubernetes cluster]({{site.baseurl}}/docs/integrations/kubernetes/#connect-a-kubernetes-cluster). + ## Deploying to Kubernetes Codefresh offers a variety of options for you to choose from when deploying to Kubernetes. -We have deployment from the Codefresh UI or programmatically through dedicated steps in pipelines, avoiding the need for `kubectl` commands thrAs you may have guessed, we have dedicated step types for deployment +Deploy to Kubernetes from the Codefresh UI, or programmatically through dedicated steps in pipelines, avoiding the need for `kubectl` commands. + +**On-demand deployment** +For quick and easy deployment, deploy on-demand from the Codefresh UI. + +**Dedicated steps in pipelines** +We have the `deploy` step, and the more advanced `cf-deploy-kubernetes`step that enables simple templating on Kubernetes manifests. + +Codefresh pipelines also support Kustomize and Helm for deployments through freestyle steps. -On-demand deployment: -For quick and easy deployment, deploy on-demand from the Codefresh UI -Dedicated steps in pipelines: Use our `deploy` step, or the more advanced `cf-deploy-kubernetes`step that enables simple templating on Kubernetes manifests. -Kustomize through a freestyle step -Helm as package manager, also through a freestyle step +Finally, if you are familiar with and want to work with `kubectl`, run your own custom `kubectl` commands in a freestyle step. Read more in [kubectl](#kubectl). -Finally, if you are familair with and want to work with 'kubectl', run your own custom kubectl commands in a freestyle step for maximum flexibility on cluster deployments. +See [Deployment options for Kubernetes]({{site.baseurl}}/docs/deployments/kubernetes/deployment-options-to-kubernetes/). ## kubectl -kubectl is the command line interface for managing kubernetes clusters. -Codefresh automatically sets up your config context with your connected clusters. +`kubectl` is the command line interface for managing kubernetes clusters. Running custom `kubectl` commands in a freestyle step gives your maximum flexibility with cluster deployments. +Codefresh automatically sets up your config context with your connected clusters. The config context is the value of the `$CF_KUBECONFIG_PATH` variable, which expands to `/codefresh/volume/sensitive/.kube/config` within the shared step volume. +Codefresh has a public Docker image for kubectl at [Docker Hub](https://hub.docker.com/r/codefresh/kubectl/tags){:target="\_blank"} that you can use. + +Because Codefresh automatically sets up your `kubeconfig` files with the information from your cluster integrations, you can modify the current config context and run any `kubectl` command you want applied to that context. For example, leverage the parallel capability of Codefresh pipelines to create two Docker images and deploy them to two different clusters with custom `kubectl` commands. + +See [Running custom kubectl commands]({{site.baseurl}}/docs/deployments/kubernetes/custom-kubectl-commands/). ## Helm and Codefresh -Codefresh supplies a built-in Helm repository with every Codefresh account. f you also wish to push your chart to a Helm repository (which is always a good practice) you should configure a Helm repository for the step to work with. Besides public HTTP repositories, we support a variety of private, authenticated Helm repositories. Codefresh also provides a free, managed Helm repository for every account. +Codefresh supplies a built-in Helm repository with every Codefresh account. And supports, besides public HTTP repositories, several private, authenticated Helm repositories. + +**Connect to Helm repositories** +In addition to the official Helm repositories which are displayed in the Helm charts, Codefresh allows you connect with any external Helm repository through simple integrations. You can then inject the Helm repository context into your pipelines by selecting the repository name. -Connect to Helm repositories -In addition to the official Helm repositories which are displayed in the Helm charts, Codefresh allows you coConnect with any external Helm repository through simple integrations. You can then inject the Helm repository context into your pipelines by selecting the repository name. -Build Helm charts -Install Helm charts or build a new one. -Deploy and puch Helm charts -Codefresh has a Helm step to easily integrate Helm in Codefresh pipelines, and authenticate, configure, and execute Helm commands. -The Helm step can operate in one of 3 modes covering any +**Build Helm charts** +Install Helm charts from Helm repositories, or build a new one. -Install to install the chart into a Kubernetes cluster. This is the default mode if not explicitly set. -Push to package the chart and push it to the defined repository. -Authentication to set up authentication and add the repo to Helm. This is useful if you want to write your own helm commands using the freestyle step’s commands property, but you still want the step to handle authentication. + Deploy Helm charts -Deploy the Helm chart to a Kubernetes cluster or repo or both. +Deploy the Helm chart to a Kubernetes cluster, Helm repo, or both. ## Dashboards +TBD + \ No newline at end of file diff --git a/_docs/getting-started/ci-codefresh.md b/_docs/getting-started/ci-codefresh.md index 33bf5da35..6d0015b27 100644 --- a/_docs/getting-started/ci-codefresh.md +++ b/_docs/getting-started/ci-codefresh.md @@ -13,26 +13,27 @@ Running integration tests Security scans Code quality --> -Work in progress CI platform/ tools +Work in progress ## Docker images WBuilding a Docker image from the source code is probably the most common and basic requirement for a CI pipeline. In Codefresh you can build, push, and promote Docker images, using declarative YAML and credentials that are defined once stored centrally. -**Build and push image** +**Build and push image** Building a Dockerfile in a pipeline works in the same way as building the Dockerfile locally on your workstation. The `build` step in Codefresh enables you to build a Docker image in a completely declarative manner, and to automatically push it to your default Docker registry without any configuration. See: [Build and push Docker images]({{site.baseurl}}/docs/example-catalog/ci-examples/build-and-push-an-image/) -**View image** +**View image** The Images dashboard displays images from all registries connected to Codefresh. Every image is enriched with Git branch, Git hash and commit message, and any tags defined for the image. See: [Viewing Docker images]({{site.baseurl}}/docs/ci-cd-guides/working-with-docker-registries/#viewing-docker-images) + **Promote image** Promote an image by copying it from one registry to another. You can promote images either from the Codefresh UI, or automatically from pipelines by specifying an existing image in the pipeline step. @@ -59,7 +60,7 @@ In Codefresh, you can launch these sidecar containers within the pipeline throug See: -[Run integration tests example]({{site.baseurl}}/docs/example-catalog/ci-examples/run-integrations-tests/). +[Run integration tests example]({{site.baseurl}}/docs/example-catalog/ci-examples/run-integrations-tests/) ## Security scanning Security scans are critical to deploying quality code. With Codefresh, in addition you can control when to implement the security scan, and then view the scan results in the Codefresh UI, without having to go to the security platform. @@ -67,16 +68,16 @@ Security scans are critical to deploying quality code. With Codefresh, in additi **Security scan platforms** Codefresh can integrate with any security scanning platform that scans source code or Docker images for vulnerabilities. We already have ready-to-use Docker images for several security platforms such as Anchore, Aqua Security, Clair, Twistlock and WhiteSource. For the full list, visit our [Plug-ins library](https://codefresh.io/steps/){:target="\_blank"}. -**Scan timing in pipeline step** +**Scan timing in pipeline step** The security scan is implemented through a freestyle step, inserted anywhere in the pipeline. The fact that you can insert the step anywhere allows you to control when the scan is executed, for example, before the source code is packaged in a container, or before the container is stored in a registry or deployed to production, or any combination of these. **View scan results** As with any scan, the final step is viewing the scan results. Make the scan results available in Codefresh release dashboards (Test Report button) by attaching analysis reports to the pipeline build. -**Security annotations** +**Security annotations** Correlate the Docker images in Codefresh with the results of the security scanning platform by adding annotations for custom metatdata. For example, you can add annotations such as the number of issues or the URL of the full report. - +See: [Security scanning tests]({{site.baseurl}}/docs/testing/security-scanning/) [Test reporting modes]({{site.baseurl}}/docs/testing/test-reports/) [Metadata in Docker images]({{site.baseurl}}/docs/pipelines//docker-image-metadata/) diff --git a/_docs/getting-started/concepts.md b/_docs/getting-started/concepts.md index f810459d2..66b1e573a 100644 --- a/_docs/getting-started/concepts.md +++ b/_docs/getting-started/concepts.md @@ -4,12 +4,18 @@ description: "Understand terminology and nuances in Codefresh" group: getting-started toc: true --- +Work in progress + ### Runtime A Runtime in Codefresh is a GitOps installation in your Codefresh account, in either a Hosted or Hybrid installation environment. Hosted Runtimes are installed on a Codefresh cluster and managed by Codefresh. Hybrid Runtimes are installed on customer clusters, and managed by the customers. -You can install a single Hosted runtime, and multiple Hybrid Runtines in a Codefresh account. +You can install a single Hosted runtime, and multiple Hybrid Runtines in a Codefresh account. + + -A single Runtime can connect to and manage multiple remote clusters. +A single Runtime can connect to and manage multiple remote clusters. + + See: [GitOps runtime architecture]({{site.baseurl}}/docs/installation/runtime-architecture) [Hybrid GitOps Runtime installation]({{site.baseurl}}/docs/installation/hybrid-gitops) @@ -29,7 +35,7 @@ Every Runner installation creates a runtime enviroment in your account. Assign t You can have multiple Runner installations in the same Codefresh account. A Runner can also manage multiple remote clusters in your account. -See: +See: [Codefresh Runner installation]({{site.baseurl}}/docs/installation/codefresh-runner) [Runner installation behind firewalls]({{site.baseurl}}/docs/reference/behind-the-firewall) @@ -48,12 +54,12 @@ See: ### Pipeline The pipeline is the central component in Codefresh that implements CI/CD processes. Everything for CI/CD in Codefresh starts and ends with pipelines. a pipeline can do only CI, only CD, both CI and CD, or run any custom action, such as unit and integration tests. -A CI pipeline can compile and package code, build and push Docker images. A CD pipeline can deploy applications/artifacts to VMs, Kubernetes clusters, FTP sites, S3 buckets, and more. And a CI/CD pipeline can combine code compilation, integration, and deployment for full CI/CD. +A CI pipeline can compile and package code, build and push Docker images. A CD pipeline can deploy applications/artifacts to VMs, Kubernetes clusters, FTP sites, S3 buckets, and more. And a CI/CD pipeline can combine code compilation, integration, and deployment for full CI/CD. +More to be added... - -### Workflow -