diff --git a/_docs/ci-cd-guides/gitops-deployments.md b/_docs/ci-cd-guides/gitops-deployments.md index e6c264e9c..586a4e2e5 100644 --- a/_docs/ci-cd-guides/gitops-deployments.md +++ b/_docs/ci-cd-guides/gitops-deployments.md @@ -7,64 +7,69 @@ redirect_from: toc: true --- -Apart from traditional push-based Helm deployments, Codefresh can also be used for [GitOps deployments](https://codefresh.io/gitops/){:target="\_blank"}. +Apart from traditional push-based Helm deployments, you can use Codefresh for [GitOps deployments](https://codefresh.io/gitops/){:target="\_blank"} powered by Argo CD. +For an overview on GitOps, Argo CD, and how Codefresh implements both, see [Codefresh and GitOps]({{site.baseurl}}docs/getting-started/gitops-codefresh/). -## What is GitOps -GitOps is the practice of performing Operations via Git only. The main principles of GitOps are the following: +Even though GitOps is not specific to Kubernetes, current GitOps tools work great with Kubernetes in the form of cluster controllers. The GitOps controller monitors the state of the Git repository, and when there is a commit, instructs the cluster to match the same state. -* The state of the system/application is always stored in Git. -* Git is always the source of truth for what happens in the system. -* If you want to change the state of the system you need to perform a Git operation such as creating a commit or opening a pull request. Deployments, tests, and rollbacks controlled through git flow. -* Once the Git state is changed, then the cluster (or whatever your deployment target is) state should match what is described in the Git repository. -* No hand rolled deployments, no ad-hoc cluster changes, no live configuration changes are allowed. If a change needs to happen, it must be committed to Git first. -GitOps deployments have several advantages compared to traditional imperative deployments. The main one is that the Git repo represents the state of the system, and Git history -is essentially the same thing as deployment history. Rollbacks are very easy to perform by simply using a previous Git hash. +Codefresh has native support for GitOps, from creating GitOps applications, deploying them, and monitoring and managing the deployments with dedicated dashboards optimized for GitOps. -Even though GitOps is not specific to Kubernetes, current GitOps tools work great with Kubernetes in the form of cluster controllers. The GitOps controller monitors the state of the Git repository and when a commit happens, the cluster is instructed to match the same state. - -Codefresh has native support for GitOps including a graphical dashboard for handling your GitOps deployments: {% include image.html lightbox="true" - file="/images/guides/gitops/gitops-dashboard.png" - url="/images/guides/gitops/gitops-dashboard.png" - alt="The GitOps dashboard" - caption="The GitOps dashboard" - max-width="100%" + file="/images/guides/gitops/app-dashboard.png" + url="/images/guides/gitops/app-dashboard.png" + alt="GitOps Apps dashboard" + caption="GitOps Apps dashboard" + max-width="60%" %} -This guide will explain how you can use GitOps for your own applications. +Starting with pointers on setting up Git repos, this guide takes you through the process of a GitOps deployment in Codefresh: +* Connecting Argo CD and Codefresh +* Creating a CI pipeline for GitOps +* Creating an Argo CD application for GitOps +* Deploying the application +* Working with the GitOps Apps dashboard, and a look at the insights from the GitOps Overview and DORA dashboards -## Setting up your Git Repositories -One of the central ideas around GitOps is the usage of Git for ALL project resources. Even though developers are familiar with using Git for the source code of the application, adopting GitOps means that you need to store in Git every other resource of the application (and not just the source code). -In the case of Kubernetes, this means that all Kubernetes manifests should be stored in a Git repository as well. In the most simple scenario you have the main repository of your application (this is mostly interesting to developers) and [a second Git repository with Kubernetes manifests](https://argoproj.github.io/argo-cd/user-guide/best_practices/#separating-config-vs-source-code-repositories){:target="\_blank"} (this is more relevant to operators/SREs). +## Setting up your Git repositories -As a running example you can use: +One of the central ideas of GitOps is to use Git for _ALL_ project resources. Meaning that you need to store every resource of the application in Git, and not just the source code as most developers using Git are familiar with. -* The [https://github.com/codefresh-contrib/gitops-app-source-code](https://github.com/codefresh-contrib/gitops-app-source-code){:target="\_blank"} repository for the application code -* The [https://github.com/codefresh-contrib/gitops-kubernetes-configuration](https://github.com/codefresh-contrib/gitops-kubernetes-configuration){:target="\_blank"} repository for the Kubernetes configuration -* The [https://github.com/codefresh-contrib/gitops-pipelines](https://github.com/codefresh-contrib/gitops-pipelines){:target="\_blank"} repository that holds the pipelines +In the case of Kubernetes, this means that you should store all Kubernetes manifests in a Git repository as well. With the most simple scenario, you have the main repository of your application (mostly interesting to developers), and [a second Git repository with Kubernetes manifests](https://argoproj.github.io/argo-cd/user-guide/best_practices/#separating-config-vs-source-code-repositories){:target="\_blank"} (more relevant to operators/SREs). -The application code repository contains the source code plus a dockerfile. You can use any Git workflow for this repository. We will set a pipeline in Codefresh that creates a container image on each commit. +As a live example you can use: -The configuration repository holds the kubernetes manifests. This is one of the critical points of GitOps +* The [https://github.com/codefresh-contrib/gitops-app-source-code](https://github.com/codefresh-contrib/gitops-app-source-code){:target="\_blank"} repository for the application code. + The repository with the application code contains the source code plus a Dockerfile. You can use any Git workflow for this repository. We will create a pipeline in Codefresh that creates a container image on each commit. -* The configuration repository holds the manifests that are also present in the Kubernetes cluster -* Every time a commit happens to the configuration repository the cluster will be notified to deploy the new version of the files (we will setup a pipeline for this) -* Every subsequent configuration change should become a Git commit. Ad-hoc changes to the cluster (i.e. with `kubectl` commands) are **NOT** allowed +* The [https://github.com/codefresh-contrib/gitops-kubernetes-configuration](https://github.com/codefresh-contrib/gitops-kubernetes-configuration){:target="\_blank"} repository for the Kubernetes configuration. + The configuration repository holds the kubernetes manifests. This is one of the critical points of GitOps: + * The configuration repository holds the manifests that are also present in the Kubernetes cluster + * Whenever there is a commit to the configuration repository, the cluster is notified to deploy the new version of the files (we will set up a pipeline for this) + * Every subsequent configuration change should become a Git commit. Ad-hoc changes to the cluster with `kubectl` commands are **NOT** allowed -We also have a third Git repository for pipelines, because pipelines are also part of the application. +* The [https://github.com/codefresh-contrib/gitops-pipelines](https://github.com/codefresh-contrib/gitops-pipelines){:target="\_blank"} repository that holds the pipelines. + The third Git repository house pipelines because pipelines are also part of the application. -Before continuing fork all 3 repositories in your own GitHub account if don't have already your own example application. +**Fork repositories** + +* Before continuing, if don't have already your own example application, fork all three repositories into your own GitHub account. ## Connecting ArgoCD and Codefresh -GitOps deployments are powered by [ArgoCD](https://argoproj.github.io/argo-cd/){:target="\_blank"}, so you need an active ArgoCD installation in your cluster to take advantage of the GitOps dashboard in Codefresh. +GitOps deployments are powered by [ArgoCD](https://argoproj.github.io/argo-cd/){:target="\_blank"}, so you need an active ArgoCD installation in your cluster. + +This is easy with our GitOps Runtimes. Argo CD is installed automatically when you install a GitOps runtime, either the Hosted or Hybrid versions. See: +[Hosted GitOps runtime]({{site.baseurl}}/docs/installation/gitops/hosted-runtime/) +[Hybrid GitOps runtime]({{site.baseurl}}/docs/installation/gitops/hybrid-gitops/) +If you don't have a runtime installed already, for this guide, install the Hosted GitOps runtime. + + -For a sample application you can use the [https://github.com/codefresh-contrib/gitops-kubernetes-configuration](https://github.com/codefresh-contrib/gitops-kubernetes-configuration){:target="\_blank"} repository. Fork the project in your own GitHub account and use that link in the *Source repository* section. +## Creating a CI Pipeline for GitOps -Once you connect your application you will see it under in the GitOps application screen in the Codefresh UI. +Creating a CI pipeline for GitOps is no different from creating a standard pipeline. The only difference is that as the final action for the pipeline, you should add the report image action provided by Codefresh. The report image action correlates the Docker image with the Git repository details, Jira issues associated with it, and additional information from the registry that stores the image. -## Creating a basic CI Pipeline for GitOps +Follow these steps to create a CI pipeline for GitOps: -Creating a CI pipeline for GitOps is no different than a [standard pipeline]({{site.baseurl}}/docs/pipelines/pipelines/) that [packages your Docker images]({{site.baseurl}}/docs/ci-cd-guides/building-docker-images/), runs [tests]({{site.baseurl}}/docs/testing/unit-tests/), performs [security scans]({{site.baseurl}}/docs/testing/security-scanning/) etc. - - {% include image.html - lightbox="true" - file="/images/guides/gitops/basic-ci-pipeline.png" - url="/images/guides/gitops/basic-ci-pipeline.png" - alt="Basic CI pipeline" - caption="Basic CI pipeline" - max-width="100%" - %} +1. Set up Jira, and registry integrations for GitOps + You need to connect Jira and your container registry to Codefresh. These integrations are specific to GitOps, and differ from the pipeline integrations that you may have already set up. + Once you set up the GitOps integrations, you can reference them in the CI pipeline's report image step for Codefresh to retrieve the necessary information. +1. Set up Codefresh pipeline integration for GitOps +1. Create your Codefresh pipeline as you usually do: + Use existing CI actions for compiling code, running unit tests, security scanning etc. +1. Place the final action in the pipeline as the “report image” action provided by Codefresh. + See Codefresh report image +1. When the pipeline completes execution, Codefresh retrieves the information on the image that was built and its metadata through the integration names specified. +1. View the image in Codefresh’s Images dashboard, and in any application in which it is used. -To take advantage of the GitOps dashboard facilities you also need to setup the correlation between the Docker image and the Pull Requests/issues associated with it. This correlation happens via [annotations]({{site.baseurl}}/docs/pipelines/annotations/). The easiest way to annotate your image is by using the [pipeline plugins](https://codefresh.io/steps/){:target="\_blank"} offered by Codefresh for this purpose. Currently we offer the following plugins: +### Example CI pipeline for GitOps -* [Record Pull Request information](https://codefresh.io/steps/step/image-enricher){:target="\_blank"} -* [Record Jira Issue information](https://codefresh.io/steps/step/jira-issue-extractor){:target="\_blank"} +Below is an example of a CI pipeline for GitOps. -Here is an example pipeline definition: +The pipeline: +* [Packages your Docker images]({{site.baseurl}}/docs/ci-cd-guides/building-docker-images/) +* Runs [tests]({{site.baseurl}}/docs/testing/unit-tests/) +* Performs [security scans]({{site.baseurl}}/docs/testing/security-scanning/) +* Reports image information to Codefresh `codefresh.yml` {% highlight yaml %} {% raw %} + version: "1.0" stages: - "clone" - "build" - - "metadata" + - "report" steps: clone: title: "Cloning repository" type: "git-clone" - repo: "my-github-username/gitops-app-source-code" - revision: '${{CF_REVISION}}' + repo: "${{CF_REPO_OWNER}}/${{CF_REPO_NAME}}" + revision: "${{CF_BRANCH}}" stage: "clone" + build: title: "Building Docker image" type: "build" - image_name: "kostiscodefresh/simple-web-app" + image_name: "${{CF_REPO_OWNER}}/color" working_directory: "${{clone}}" - tags: - - "latest" - - '${{CF_SHORT_REVISION}}' + tag: "${{CF_SHORT_REVISION}}" dockerfile: "Dockerfile" + registry: docker-lr stage: "build" - registry: dockerhub - enrich-image: - title: Add PR info - type: image-enricher - stage: "metadata" - arguments: - IMAGE: docker.io/kostiscodefresh/simple-web-app:latest - BRANCH: '${{CF_BRANCH}}' - REPO: 'kostis-codefresh/simple-web-app' - GIT_PROVIDER_NAME: github-1 - jira-issue-extractor: - title: Enrich image with jira issues - type: jira-issue-extractor - stage: "metadata" - fail_fast: false + + ReportImageMetadataAll: + title: Report image to Codefresh CD + type: codefresh-report-image + working_directory: /code + stage: "report" arguments: - IMAGE: docker.io/kostiscodefresh/simple-web-app:latest - JIRA_PROJECT_PREFIX: 'SAAS' - MESSAGE: SAAS-8431 - JIRA_HOST: codefresh-io.atlassian.net - JIRA_EMAIL: kostis@codefresh.io - JIRA_API_TOKEN: '${{JIRA_TOKEN}}' + CF_API_KEY: '${{CF_API_KEY}}' + CF_IMAGE: 'docker.io/${{CF_REPO_OWNER}}/color:${{CF_SHORT_REVISION}}' + CF_CONTAINER_REGISTRY_INTEGRATION: docker + CF_RUNTIME_NAME: "codefresh-hosted" + CF_GITHUB_TOKEN: '${{GITHUB_TOKEN}}' + CF_GIT_PROVIDER: github + CF_GIT_REPO: '${{CF_REPO_OWNER}}/${{CF_REPO_NAME}}' + CF_GIT_BRANCH: '${{CF_BRANCH}}' + CF_ISSUE_TRACKING_INTEGRATION: jira + CF_JIRA_MESSAGE: "${{CF_COMMIT_MESSAGE}}" + CF_JIRA_PROJECT_PREFIX: CR + {% endraw %} -{% endhighlight %} +{% endhighlight yaml %} -This pipeline: -1. Checks out the source code of an application with the [git-clone step]({{site.baseurl}}/docs/pipelines/steps/git-clone/) -1. [Builds]({{site.baseurl}}/docs/pipelines/steps/build/) a docker image -1. Annotates the Docker image with the Pull Request information provided by Github -1. Annotates the Docker image with a specific Jira issue ticket +Pipeline steps: +1. [git-clone step]({{site.baseurl}}/docs/pipelines/steps/git-clone/): Checks out the source code of an application +1. [Build step]({{site.baseurl}}/docs/pipelines/steps/build/): Builds a Docker image +1. `codefresh-report-image`: Reports the Jira and registry information to Codefresh. Populates the values of the Codefresh Git variables whose from those you defined in the respec -You can see the associated metadata in the Codefresh UI's [Docker image dashboard](https://g.codefresh.io/images/){:target="\_blank"}. + +You can see the associated metadata in the [Images dashboard](https://g.codefresh.io/images/){:target="\_blank"}. {% include image.html lightbox="true" @@ -183,412 +177,302 @@ You can see the associated metadata in the Codefresh UI's [Docker image dashboar max-width="80%" %} -Codefresh is using this information to fill the deployment history in the GitOps dashboard. +Codefresh uses information to fill the deployment history in the GitOps dashboard. -## Creating a basic CD Pipeline for GitOps -To create a CD pipeline in Codefresh that is responsible for GitOps deployments you must first disable the auto-sync behavior of ArgoCD. You can disable auto-sync either from the GUI or via the [command line](https://argoproj.github.io/argo-cd/user-guide/auto_sync/){:target="\_blank"}: - {% include image.html - lightbox="true" - file="/images/guides/gitops/disable-auto-sync.png" - url="/images/guides/gitops/disable-auto-sync.png" - alt="Basic CD pipeline" - caption="Basic CD pipeline" - max-width="80%" - %} +### Set up Jira and Docker Hub integrations for GitOps image enrichment +GitOps integration for Atlassian Jira allows you to both enrich images with information from Jira, and report the deployment information back to Jira. For this guide, you need to select the image enrichment option. + +Codefresh GitOps can integrate with popular container registries such as Docker Hub, JFrog Artifactory, and more. See [GitOps container registry integrations]({{site.baseurl}}/docs/gitops-integrations/container-registries/). +For this guide, we'll connect Docker Hub to Codefresh as the container registry for GitOps. + +1. In the Codefresh UI, on the toolbar, click the **Settings** icon. +1. From Configuration in the sidebar, select **GitOps Integrations**. +1. For Jira: + * Filter by **Issue Tracking**, select **Atlassian Jira** and click **Configure**. + * From the **Add Integration** dropdown, select **Image enrichment**. + * Define the [integration settings for Jira]({{site.baseurl}}/docs/gitops-integrations/issue-tracking/jira/#jira-gitops-integration-settings-in-codefresh). + The **Integration name** must be unique. +1. For Docker Hub: + * Complete the [prerequisites]({{site.baseurl}}/docs/gitops-integrations/container-registries/dockerhub/#prerequisites) + * Filter by **Container Registry**, select **Docker Hub**, and click **Configure**. + * Define the [integration settings for Docker Hub]({{site.baseurl}}/docs/docs/gitops-integrations/container-registries/dockerhub/#docker-hub-gitops-integration-settings-in-codefresh). - With the auto-sync behavior disabled, all Git pushes that happen on the GitOps repo will be ignored by ArgoCD (however ArgoCD will still mark your application as out-of-sync). - You can now [create a new pipeline]({{site.baseurl}}/docs/pipelines/pipelines/) in Codefresh using a [standard Git trigger]({{site.baseurl}}/docs/pipelines/triggers/git-triggers/) that will monitor the GitOps repository for updates. This way Codefresh is responsible for the GitOps process instead of Argo. +Don't forget to click **Commit**. It may take a few moments for the new integration to be synced to the cluster before it appears in the list of **Active** integrations. + {% include image.html lightbox="true" - file="/images/guides/gitops/argo-sync-pipeline.png" - url="/images/guides/gitops/argo-sync-pipeline.png" - alt="Basic CD pipeline" - caption="Basic CD pipeline" - max-width="80%" + file="/images/guides/gitops/gitops-deploy-active-integrations.png" + url="/images/guides/gitops/gitops-deploy-active-integrations.png" + alt="Active Jira and DockerHub integrations for GitOps" + caption="Active Jira and DockerHub integrations for GitOps" + max-width="60%" %} -The big advantage here is that you can construct a full pipeline over the sync process with multiple steps before or after the sync. For example you could run some smoke tests after the deployment takes place. Here is an example pipeline: +### Set up Codefresh pipeline integration for GitOps +After completing the Jira and Docker Hub integrations, we can set up the pipeline integration for GitOps. +Why would you do this? When you create the CI pipeline as you usually do, you'll see that the final report image step references several Codefresh variables to report image information to Codefresh and enrich the image. - `codefresh.yml` -{% highlight yaml %} -{% raw %} -version: "1.0" -stages: - - "pre sync" - - "sync app" - - "post sync" +Read more in [GitOps CI integrations]({{site.baseurl}}/docs/gitops-integrations/ci-integrations/), and make sure to also review [Templatization examples for CF arguments]({{site.baseurl}}/docs/gitops-integrations/ci-integrations/codefresh-classic/#templatization-examples-for-cf-arguments). -steps: - pre_sync: - title: "Pre sync commands" - type: "freestyle" # Run any command - image: "alpine:3.9" # The image in which command will be executed - commands: - - echo "Sending a metrics marker" - stage: "pre sync" - sync_and_wait: - title: Sync ArgoCD app and wait - type: argocd-sync - arguments: - context: "argo-cd" - app_name: "${{ARGOCD_APP_NAME}}" - wait_healthy: true - stage: "sync app" - post_sync: - title: "Post sync commands" - type: "freestyle" # Run any command - image: "alpine:3.9" # The image in which command will be executed - commands: - - echo "running smoke tests" - stage: "post sync" -{% endraw %} -{% endhighlight %} -The pipeline is using the [argo-sync plugin](https://codefresh.io/steps/step/argocd-sync){:target="\_blank"} that can be used by Codefresh to start the sync process of an application from the Git repo to the cluster. +1. In the Codefresh UI, on the toolbar, click the **Settings** icon. +1. From Configuration in the sidebar, select **GitOps Integrations**. +1. Filter by **CI tools**, select **Codefresh** and click **Add**. +1. Define the i[ntegration settings for Codefresh pipelines]({{site.baseurl}}/docs/docs/gitops-integrations/codefresh-classic/#ci-pipeline-gitops-integration-settings). -The name of the `context` parameter should be the same name you used for your [ArgoCD integration]({{site.baseurl}}/docs/integrations/argocd/). - {% include image.html - lightbox="true" - file="/images/guides/gitops/argo-context.png" - url="/images/guides/gitops/argo-context.png" - alt="Using the Argo integration name as a context" - caption="Using the Argo integration name as a context" - max-width="80%" - %} -The name of the application should be the same name as the ArgoCD Application. - {% include image.html - lightbox="true" - file="/images/guides/gitops/argo-application-name.png" - url="/images/guides/gitops/argo-application-name.png" - alt="Argo Application name" - caption="Argo Application name" - max-width="80%" - %} - You can use pipeline variables or any other familiar Codefresh mechanism such as [shared configuration]({{site.baseurl}}/docs/pipelines/configuration/shared-configuration/). +## Creating an Argo CD application for GitOps - Once the pipeline has finished running the sync status will updated in your GitOps dashboard to reflect the current state. +Codefresh provides an easy-to-use editor to create GitOps-compatible applications. -## Working with the GitOps Dashboard +* In the Codefresh UI, from Ops in the sidebar, select [**GitOps Apps**](https://g.codefresh.io/2.0/applications-dashboard/list){:target="\_blank"}. +* Click **New Application** on the top-right. -After you create an ArgoCD application, you can click on it in the [GitOps environment overview](https://g.codefresh.io/gitops){:target="\_blank"} and see the respective GitOps screen. -{% include image.html - lightbox="true" - file="/images/guides/gitops/real-dashboard.png" - url="/images/guides/gitops/real-dashboard.png" - alt="GitOps Dashboard" - caption="GitOps Dashboard" - max-width="100%" - %} +A GitOps application includes: -This dashboard is the central place for monitoring your application and contains the following information: +* Application definitions + Application definitions include the name, runtime, and the location of the YAML manifest. You can define subfolders by adding / to the path. -1. Current health and sync status -1. Deployment graph that shows successful/failed deployments on the selected time period -1. Complete history of deployments according to Git hash. For each deployment you can also see which Pull Request was used for the commit, who was the committer and which JIRA issues this Pull request is solving (provided that the image was built by a Codefresh pipeline) -1. The Kubernetes services that belong to this application (on the services tab) -1. What services and replicas were updated with each deployment. +* General configuration settings + General configuration settings define the source, destination, and sync policies for the application. These options are identical to those in the Argo CD UI. We recommend selecting automated sync for your application. -The deployment status is fetched from your ArgoCD integration in a live manner. If, at any point, the deployment is not synced with GIT, you will instantly see the out-of-sync status. You will get the number of resources that are out of sync. When you click the out-of-sync status, you will get a list of all resources in that status. +* Advanced configuration settings + Advanced settings define the tool used to create the application, and related tool-specific settings. -{% include image.html - lightbox="true" - file="/images/guides/gitops/out-of-sync.png" - url="/images/guides/gitops/out-of-sync.png" - alt="Out of sync status" - caption="Out of sync status" - max-width="60%" - %} -For each Git hash Codefresh associates the respective Pull Request and Jira issue(s) that affected deployment. To achieve this correlation, Codefresh is enriching the Docker image(s) of the service during the CI process. -You can manually create these annotations with the [standard Codefresh annotation support]({{site.baseurl}}/docs/pipelines/annotations/) or via the built-in pipeline steps that we will see in the next section. +When creating the application, you can use the Form mode or the YAML editor, and toggle between the two. For detailed information on the settings and options, see [Creating GitOps applications]({{site.baseurl}}/docs/deployments/gitops/create-application/). -You can find helpful tips if you hover your mouse on the PR number, the issue, the Git commiter and so on. +On selecting **Commit**, Codefresh validates the settings, and alerts you to empty or invalid fields. +Once validated, you can see the Commit form with the application's definition on the left, and the read-only version of the manifest with the configuration settings you defined on the right. +Enter the path to the **Git Source** to which to commit the application configuration manifest. -{% include image.html - lightbox="true" - file="/images/guides/gitops/tooltips.png" - url="/images/guides/gitops/tooltips.png" - alt="Extra tooltip information" - caption="Extra tooltip information" - max-width="80%" - %} +It may take a few minutes to until it is synced to the cluster. -For each deployment you can also see a before/after view of the pods/replicas that were affected. +## Deploy the GitOps application +The next step after creating the GitOps application is to deploy it. To deploy the GitOps application you created, you need to create and commit the following resources: +* A folder in Git to save resources for the application +* `Rollout` resource defining the deployment strategy +* `Service` resource to expose the application to external traffic -{% include image.html - lightbox="true" - file="/images/guides/gitops/updated-services.png" - url="/images/guides/gitops/updated-services.png" - alt="Updated services" - caption="Updated services" - max-width="100%" - %} +You will also need to [install Argo Rollouts]({{site.baseurl}}/docs/deployments/gitops/install-argo-rollouts) on the cluster to which you are deploying the application. -### Filtering the Deployment History +### Create rollout.yaml -You can add filters on the deployment history by using the multi-select field on the top left of the screen. +Create a `rollout` resource for the application you want to deploy. -{% include image.html - lightbox="true" - file="/images/guides/gitops/filter.png" - url="/images/guides/gitops/filter.png" - alt="Filtering options" - caption="Filtering options" - max-width="40%" - %} +To leverage Argo Rollouts' deployment capabilities, we use Argo's `rollout` resource instead of the native Kubernetes Deployment object. +For detailed information on the fields you can define, see [Argo Rollout specification](https://argoproj.github.io/argo-rollouts/features/specification/){:target="\_blank"}. - You can add filters for: +* In the Git repository create the `rollout.yaml` file, as in the example below. -* Git committer(s) -* Pull Request number(s) -* Jira issue(s) - If you define multiple options they work in an OR manner. +```yaml +apiVersion: argoproj.io/v1alpha1 +kind: Rollout +metadata: + name: codefresh-guestbook-rollout +spec: + replicas: 4 + revisionHistoryLimit: 2 + selector: + matchLabels: + app: codefresh-guestbook + template: + metadata: + labels: + app: codefresh-guestbook + spec: + containers: + - image: gcr.io/heptio-images/ks-guestbook-demo:0.1 + name: codefresh-guestbook + ports: + - name: http + containerPort: 80 + protocol: TCP + minReadySeconds: 30 + strategy: + canary: + steps: + - setWeight: 25 + - pause: {duration: 20s} + - setWeight: 75 + - pause: {duration: 15s} +``` -### Searching the Deployment History +### Create a service resource +Create a service resource to expose your application to external traffic. -For advanced filtering options, the search field on the top right allows you to view only the subset of deployments that match your custom criteria. +* Create a `service.yaml` resource for the application you want to deploy, as in the example below. + > Create it in the same folder in which you saved `rollout.yaml`. -Apart from direct text search, the text field also supports a simple query language with the following keywords: +```yaml +apiVersion: v1 +kind: Service +metadata: + name: codefresh-guestbook-svc +spec: + ports: + - port: 8080 + targetPort: 80 + selector: + app: codefresh-guestbook # must be the same as the selector defined in rollouts.yaml + type: LoadBalancer +``` +Once you create and commit the `rollout` and `service` resources, return to the GitOps Apps dashboard. See the following section, [Working with the GitOps Apps dashboard](#working-with-the-gitops-app-dashboard) for detailed information on all aspects of monitoring your app and deployments. -* `issues` -* `issue` -* `prs` -* `pr` -* `committer` -* `committers` -* `service` -* `services` -* `image` -* `images` -* `status` -* `statuses` +## Working with the GitOps Apps dashboard -The following characters serve as delimiters +After you create an ArgoCD application in Codefresh, you can track and monitor the application's deployments, resources, and more in the [GitOps Apps](https://g.codefresh.io/2.0/applications-dashboard/list){:target="\_blank"} dashboard. -* `:` define the value for a keyword -* `,` define multiple values for a single keyword -* `;` define multiple criteria {% include image.html lightbox="true" - file="/images/guides/gitops/search.png" - url="/images/guides/gitops/search.png" - alt="Searching deployment history" - caption="Searching deployment history" + file="/images/guides/gitops/app-dashboard.png" + url="/images/guides/gitops/app-dashboard.png" + alt="GitOps Apps dashboard" + caption="GitOps Apps dashboard" max-width="80%" - %} + %} + +Let's review the important features + +### Customize the dashboard view -Some examples are: + * View format: Select the view format for the GitOps Apps dashboard as List or Card. -* `pr:2` - filter the deployment history to show only a specific Pull request -* `issues: SAAS-2111, SAAS-2222` - show only specific issues -* `issue: SAAS-2111; pr:3 ; service: my-app` - searching for multiple criteria in OR behavior + * Filters: Customize the scope through the global filters to display the information you need. -Using the search field allows you to quickly find a specific Git commit in the history of the application (and even rollback the deployment as explained in the next sections). + * Detailed info on application: To get detailed information on an application, either select the option/action from the app's context menu, or simply click the application. -## Current State of Application +For more information, see [Applications dashboard information]({{site.baseurl}}/docs/deployments/gitops/applications-dashboard/#applications-dashboard-information). -The current state tab shows a hierarchical view of your cluster resource for your application. + +### Application header +When you select an application, the application header displayed at the top provides a wealth of useful information at a glance. {% include image.html lightbox="true" - file="/images/guides/gitops/currentstate.png" - url="/images/guides/gitops/currentstate.png" - alt="Current State tab" - caption="Current State tab" - max-width="80%" + file="/images/guides/gitops/application-header.png" + url="/images/guides/gitops/application-header.png" + alt="GitOps Apps: Application header" + caption="GitOps Apps: Application header" + max-width="100%" %} -At the top of the screen you have several filters available: +Here you can see: +* Application health status +* Current sync status and previous sync result +* Auto-Sync as enabled or disabled + -* Kind - choose a specific type of Kubernetes resource -* Health - status of the resource -* Sync state - GitOps status of the resource -* Free search - search any resource by name +### Monitor application resources in Current State -## Tagging GitOps Application +Monitor the resources deployed in the current version of the selected application in the Current State tab. +This is the tab displayed when you select the application from the GitOps Apps dashboard. -1. Navigate to the GitOps dashboard. -2. To the application's right (next to the Health Column), click the three dots to open the More Action Dropdown. -3. Select Add/Edit Tags. -4. Click the +tags to add tags. -5. Alternatively, click the "x" next to the tag to remove it. -6. Click Save. -## Rolling Back Git Versions +{% include +image.html +lightbox="true" +file="/images/guides/gitops/app-current-state.png" +url="/images/guides/gitops/app-current-state.png" +alt="Application resources in Current State tab" +caption="Application resources in Current State tab" +max-width="50%" +%} -In the GitOps dashboard you will also see a complete history of all past deployments as recorded in Git. You can select any of the previous versions and rollback your application to the respective version. +Here you can view the live state of the application's resources (Kubernetes objects) on the cluster in List or Tree views, set filters, and monitor for each resource: +* Health status +* Sync status +* Manifests +* Logs +* Events + +>To quickly filter by resource type, click the type in the Resource Inventory (bottom-left). - {% include image.html - lightbox="true" - file="/images/guides/gitops/rollback.png" - url="/images/guides/gitops/rollback.png" - alt="Rolling back to a previous version" - caption="Rolling back to a previous version" - max-width="80%" - %} +For detailed information, see [Monitor resources for selected application]({{site.baseurl}}/docs/deployments/gitops/applications-dashboard/#monitor-resources-for-selected-application). -The Rollback simply informs the cluster to use a different git hash for the sync process. It doesn't affect your Git repository and ArgoCD will now show your application as out-of-sync (because the last Git commit no longer matches the status of the cluster). -This rollback behavior is best used as an emergency measure after a failed deployment where you want to bring the cluster back to a previous state in a temporary manner. If you wish to keep the current rollback status as a permanent status it is best to use the standard `git reset/revert` commands and change the GitOps repository to its desired state. +### Monitor deployments in Timeline +The Timeline tab (next to the Current State), displays the history of deployments for the selected application. Here's where to monitor an ongoing deployment and review historical deployments. The deployments are sorted by the most recent one, labeled Current Version at the top. -## Gitops ABAC Support For Rollback Action +To view day-to-day deployment information for the selected time period, mouse over the dot on the deployment chart -1. Go to Account Settings > Permissions > Teams Tab > Gitops. -2. Select the Team. -3. Chose what the Team can do and click apply. -4. Select the tags of the applications and click apply. -5. Click Add Rule when done. +{% include +image.html +lightbox="true" +file="/images/guides/gitops/app-timeline.png" +url="/images/guides/gitops/app-timeline.png" +alt="Application deployments in Timeline tab" +caption="Application deployments in Timeline tab" +max-width="50%" +%} -## Performing Automatic Git Commits +You can see the: +1. Complete history of deployments according to Git hash. For each deployment you can also the Pull Request (PR) used for the commit, the committer, and the Jira issues resolved by the PR +1. The Kubernetes services added or modified during the deployment -Usually the Pull Requests that take part in a GitOps workflow are created and approved in a manual way (after code review). You have the option however to fully automate the whole process and rather than opening a Pull Request on both the application repository and the manifest repository, commit automatically the manifest changes inside the pipeline that creates the artifact. -{% include image.html - lightbox="true" - file="/images/guides/gitops/gitops-workflow.png" - url="/images/guides/gitops/gitops-workflow.png" - alt="Full GitOps workflow" - caption="Full GitOps workflow" - max-width="100%" - %} + -Here is an example pipeline that creates a Docker image and also commits a version change in the Kubernetes manifest to denote the new Docker tag of the application: -{% include image.html - lightbox="true" - file="/images/guides/gitops/ci-cd-pipeline.png" - url="/images/guides/gitops/ci-cd-pipeline.png" - alt="Pipeline that commits manifests" - caption="Pipeline that commits manifests" - max-width="80%" - %} -There are many ways to change a Kubernetes manifest in a programmatic way, and for brevity reasons we use the [yq](https://github.com/mikefarah/yq){:target="\_blank"} command line tool. +### Review and update application Configuration +The Configuration tab displays the definitions for the application. Apart from the application name and runtime, you can change any setting, and commit the changes. - `codefresh.yml` -{% highlight yaml %} -{% raw %} -version: "1.0" -stages: - - "clone" - - "build" - - "metadata" - - "gitops" +For more information on application definitions, see [Creating GitOps applications]({{site.baseurl}}/docs/deployments/gitops/create-application). -steps: - clone: - title: "Cloning repository" - type: "git-clone" - repo: "my-github-username//gitops-app-source-code" - revision: '${{CF_REVISION}}' - stage: "clone" +## GitOps Overview and DORA dashboards - build: - title: "Building Docker image" - type: "build" - image_name: "kostiscodefresh/simple-web-app" - working_directory: "${{clone}}" - tags: - - "latest" - - '${{CF_SHORT_REVISION}}' - dockerfile: "Dockerfile" - stage: "build" - registry: dockerhub - enrich-image: - title: Add PR info - type: image-enricher - stage: "metadata" - arguments: - IMAGE: docker.io/kostiscodefresh/simple-web-app:${{CF_SHORT_REVISION}} - BRANCH: '${{CF_BRANCH}}' - REPO: 'kostis-codefresh/simple-web-app' - GIT_PROVIDER_NAME: github-1 - jira-issue-extractor: - title: Enrich image with jira issues - type: jira-issue-extractor - stage: "metadata" - fail_fast: false - arguments: - IMAGE: docker.io/kostiscodefresh/simple-web-app:${{CF_SHORT_REVISION}} - JIRA_PROJECT_PREFIX: 'SAAS' - MESSAGE: SAAS-8842 - JIRA_HOST: codefresh-io.atlassian.net - JIRA_EMAIL: kostis@codefresh.io - JIRA_API_TOKEN: '${{JIRA_TOKEN}}' - clone_gitops: - title: cloning gitops repo - type: git-clone - arguments: - repo: 'my-github-username//gitops-kubernetes-configuration' - revision: 'master' - stage: "gitops" - when: - branch: - only: - - master - change_manifest: - title: "Update k8s manifest" - image: "mikefarah/yq:3" # The image in which command will be executed - commands: - - yq w -i deployment.yml spec.template.spec.containers[0].image docker.io/kostiscodefresh/simple-web-app:${{CF_SHORT_REVISION}} - - cat deployment.yml - working_directory: "${{clone_gitops}}" - stage: "gitops" - when: - branch: - only: - - master - commit_and_push: - title: Commit manifest - type: git-commit - stage: "gitops" - arguments: - repo: 'my-github-username//gitops-kubernetes-configuration' - git: github-1 - working_directory: '/codefresh/volume/gitops-kubernetes-configuration' - commit_message: Updated manifest - git_user_name: ${{CF_COMMIT_AUTHOR}} - git_user_email: ${{CF_COMMIT_AUTHOR}}@acme-inc.com - when: - branch: - only: - - master -{% endraw %} -{% endhighlight %} +If you have several applications and deployments, the GitOps Overview and the DORA metrics dashboards are particularly useful, to managers and developers alike. -This pipeline: +The GitOps Overview offers a global view of runtimes, managed clusters, and deployments. For system-wide visualization in real-time, this is your dashboard of choice in Codefresh. +Go to [GitOps Overview](https://g.codefresh.io/2.0/?time=LAST_7_DAYS){:target="\_blank"}. +For information on the GitOps Overview dashboard, see [GitOps Overview dashboard]({{site.baseurl}}/docs/dashboards/home-dashboard). -1. Checks out the Git repository that contains the source code -1. Builds a Docker image and tags it with the Git hash -1. Enriches the image with the Pull request and ticket information as explained in the previous sections -1. Checks out the Git repository that contains the Kubernetes manifests -1. Performs a text replacement on the manifest updating the `containers` segment with the new Docker image -1. Commits the change back using the [Git commit plugin](https://codefresh.io/steps/step/git-commit){:target="\_blank"} to the Git repository that contains the manifests. +{% include +image.html +lightbox="true" +file="/images/guides/gitops/gitops-overview-dashboard.png" +url="/images/guides/gitops/gitops-overview-dashboard.png" +alt="GitOps Overview dashboard" +caption="GitOps Overview dashboard" +max-width="50%" +%} + +Monitoring DORA metrics can help identify delivery issues in your organization by detecting bottlenecks among teams, and help to optimize your deployments, at technical or organizational levels. Codefresh offers support for DORA metrics out of the box. +For more information, see [DORA metrics]({{site.baseurl}}/docs/dashboards/dora-metrics). + + +{% include +image.html +lightbox="true" +file="/images/guides/gitops/dora-metrics.png" +url="/images/guides/gitops/dora-metrics.png" +alt="DORA metrics dashboard" +caption="DORA metrics dashboard" +max-width="50%" +%} -The CD pipeline (described in the previous section) will detect that commit and use the [sync plugin](https://codefresh.io/steps/step/argocd-sync){:target="\_blank"} to instruct ArgoCD to deploy the new tag. Alternatively, you can set up the ArgoCD project to auto-sync on its own if it detects changes in the Git repository with the manifests. ## Using the App-of-Apps pattern -The GitOps dashboard has native support for the [app-of-apps pattern](https://argo-cd.readthedocs.io/en/stable/operator-manual/cluster-bootstrapping/){:target="\_blank"}. If you have a number of applications that are related and you always -install them as a set in your cluster you can group them in a single Application. The parent application can be defined using [declarative Argo Resources](https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/){:target="\_blank"}. +The GitOps Apps dashboard has native support for the [app-of-apps pattern](https://argo-cd.readthedocs.io/en/stable/operator-manual/cluster-bootstrapping/){:target="\_blank"}. If you have a number of applications that are related and you always install them as a set in your cluster you can group them in a single Application. The parent application can be defined using [declarative Argo Resources](https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/){:target="\_blank"}. As an example, you might find that you always install in your cluster Linkerd, Prometheus and Ambassador. You can group all of them in a single Application and deploy them all at once. -You can find an existing example of app-of-apps at [https://github.com/argoproj/argocd-example-apps/tree/master/apps](https://github.com/argoproj/argocd-example-apps/tree/master/apps){:target="\_blank"}. It uses [Helm]({{site.baseurl}}/docs/example-catlog/cd-examples/helm/), but you can use any other Kubernetes templating mechanism such as [Kustomize]({{site.baseurl}}/docs/example-catalog/cd-examples/deploy-with-kustomize/) (or even plain manifests). +You can find an existing example of app-of-apps at [https://github.com/argoproj/argocd-example-apps/tree/master/apps](https://github.com/argoproj/argocd-example-apps/tree/master/apps){:target="\_blank"}. It uses [Helm]({{site.baseurl}}/docs/example-catalog/cd-examples/helm/), but you can use any other Kubernetes templating mechanism such as [Kustomize]({{site.baseurl}}/docs/example-catalog/cd-examples/deploy-with-kustomize/) (or even plain manifests). -Once you deploy the application with Codefresh, you will see the parent app in the dashboard with a small arrow: +Once you deploy the application with Codefresh, you will see the parent app in the GitOps Apps dashboard with a small arrow: {% include image.html lightbox="true" @@ -610,7 +494,7 @@ You can expand the application by clicking on the arrow to inspect its child app max-width="90%" %} - Then you can either click on the parent application or any of the children to visit the respective dashboard. In the dashboard of the parent application, you will also be notified for its components after each deployment under the "Updated Applications" header: +Clicking the parent application or the Then you can either click on the parent application or any of the children to visit the respective dashboard. In the dashboard of the parent application, you will also be notified for its components after each deployment under the "Updated Applications" header: {% include image.html lightbox="true" @@ -623,66 +507,6 @@ You can expand the application by clicking on the arrow to inspect its child app Note that the app of apps pattern is best used for related but not interdependent applications. If you have applications that depend on each other (e.g. frontend that needs backend and backend that needs a DB) we suggest you use the standard [Helm dependency mechanism](https://helm.sh/docs/helm/helm_dependency/). -## Integrating Codefresh and Jira - -> Note that Codefresh currently has to provide you with access to use the Jira Marketplace App. Please get in touch for more information. - -Setting up the Codefresh Jira integration provides - -* Higher observability of deployments within your GitOps Dashboard -* Higher observability of deployments within your Jira Account - -Our [Jira integration]({{site.baseurl}}/docs/integrations/jira) provides further details on ways to set-up the connection. - -Once set-up, you will be able to view information from Jira in the Codefresh GitOps Dashboard. Additionally, Jira will display - -* The build status across environments -* The deployment history -* Tickets and how they correlate to deployments - -The following screenshots show examples of the provided information. Here is the deployments details for a ticket in JIRA: - -{% include image.html -lightbox="true" -file="/images/integrations/jira/jira-integration-one.png" -url="/images/integrations/jira/jira-integration-one.png" -alt="Ticket deployment history" -caption="Ticket deployment history" -max-width="90%" -%} - -And here is a complete timeline of your deployments and the feature they contain. - -{% include image.html -lightbox="true" -file="/images/integrations/jira/jira-integration-two.png" -url="/images/integrations/jira/jira-integration-two.png" -alt="Jira Deployment timeline" -caption="Jira Deployment timeline" -max-width="90%" -%} - -For more information see the [Atlassian Codefresh page](https://www.atlassian.com/solutions/devops/integrations/codefresh){:target="\_blank"}. - -## Using a Git repository for the pipelines - -Remember that according to GitOps we should place *all* application resources on Git. This means that the pipelines themselves must also be present in a Git repository and any change on them should pass from source control. - -Even though Codefresh has a [powerful inline editor]({{site.baseurl}}/docs/pipelines/pipelines/#using-the-inline-pipeline-editor) for editing pipelines, as soon as you finish with your pipelines you [should commit them to Git](https://github.com/codefresh-contrib/gitops-pipelines){:target="\_blank"}, and load them from the repository. - -{% include image.html - lightbox="true" - file="/images/guides/gitops/pipeline-from-git.png" - url="/images/guides/gitops/pipeline-from-git.png" - alt="Loading a pipeline from GIT" - caption="Loading a pipeline from GIT" - max-width="80%" - %} - - Once the pipeline is in Git, you should switch the online editor to [load the pipeline from the repository]({{site.baseurl}}/docs/pipelines/pipelines/#loading-codefreshyml-from-version-control) instead of the inline text. ## Related articles -[Codefresh YAML for pipeline definitions]({{site.baseurl}}/docs/pipelines/what-is-the-codefresh-yaml/) -[ArgoCD integration]({{site.baseurl}}/docs/integrations/argocd/) -[Environment dashboard]({{site.baseurl}}/docs/deployments/kubernetes/environment-dashboard/) -[Helm promotions]({{site.baseurl}}/docs/deployments/helm/helm-environment-promotion/) +[Progressive delivery with Argo Rollouts]({{site.baseurl}}/docs/ci-cd-guides/progressive-delivery/) \ No newline at end of file diff --git a/_docs/ci-cd-guides/progressive-delivery.md b/_docs/ci-cd-guides/progressive-delivery.md index 44328e3dc..58445f9d6 100644 --- a/_docs/ci-cd-guides/progressive-delivery.md +++ b/_docs/ci-cd-guides/progressive-delivery.md @@ -449,7 +449,7 @@ by simply telling the load balancer to move 100% of traffic back to the previous {% include image.html lightbox="true" file="/images/guides/progressive-delivery/04_canary_finished.png" -url="/images/guides/progressive-delivery/04_canary_finished" +url="/images/guides/progressive-delivery/04_canary_finished.png" alt="Old application version is discarded. Only new version remains." caption="Old application version is discarded. Only new version remains." max-width="90%" diff --git a/_docs/deployments/helm/custom-helm-uploads.md b/_docs/deployments/helm/custom-helm-uploads.md index 83a52fa29..1c596c328 100644 --- a/_docs/deployments/helm/custom-helm-uploads.md +++ b/_docs/deployments/helm/custom-helm-uploads.md @@ -79,7 +79,7 @@ This pipeline references some predefined environment variables such as `GOOGLE_B For this example, we created a service account with appropriate permissions in Google Cloud, and saved the credentials into `GOOGLE_CREDENTIALS` as a Codefresh Secret.
For more information, see: [Authenticating with Google services](https://cloud.google.com/storage/docs/authentication#service_accounts){:target="_blank"} -[Codefresh pipeline configuration and secrets]({{site.baseurl}}/pipelines/variables/#user-provided-variables) +[Codefresh pipeline configuration and secrets]({{site.baseurl}}/pipelines/variables/#user-defined-variables) ## Example 2: Push the chart to Chart Museum Chart Museum is a Helm repository *server* that has an HTTP API, pluggable backends, authentication, and more. diff --git a/_docs/example-catalog/ci-examples/build-an-image-from-a-different-git-repository.md b/_docs/example-catalog/ci-examples/build-an-image-from-a-different-git-repository.md index 52077fab9..b6de4578e 100644 --- a/_docs/example-catalog/ci-examples/build-an-image-from-a-different-git-repository.md +++ b/_docs/example-catalog/ci-examples/build-an-image-from-a-different-git-repository.md @@ -92,5 +92,5 @@ Notice that there are no explicit push steps in the pipeline, as all successful [Git clone step]({{site.baseurl}}/docs/pipelines/steps/git-clone/) [Build an Image with the Dockerfile in root directory]({{site.baseurl}}/docs/example-catalog/ci-examples/build-an-image-with-the-dockerfile-in-root-directory/) [Build step in pipelines in pipelines]({{site.baseurl}}/docs/pipelines/steps/build/) -[Build and push an image]({{site.baseurl}}/docs/pipelines/example-catalog/ci-examples/build-and-push-an-image/) +[Build and push an image]({{site.baseurl}}/docs/example-catalog/ci-examples/build-and-push-an-image/) [Parallel pipelines]({{site.baseurl}}/docs/pipelines/advanced-workflows/) diff --git a/_docs/example-catalog/ci-examples/build-an-image-specify-dockerfile-location.md b/_docs/example-catalog/ci-examples/build-an-image-specify-dockerfile-location.md index 05e91980b..6fb157dc5 100644 --- a/_docs/example-catalog/ci-examples/build-an-image-specify-dockerfile-location.md +++ b/_docs/example-catalog/ci-examples/build-an-image-specify-dockerfile-location.md @@ -13,7 +13,7 @@ You may have a project where the Dockerfile is **not** in the root folder of the >The source code of the repository is at [https://github.com/codefreshdemo/cf-example-dockerfile-other-location](https://github.com/codefreshdemo/cf-example-dockerfile-other-location){:target="\_blank"}. Feel free to fork it if you want to follow along. -If you don't have a Codefresh account already, you can easily create a free one from the [sign-up page]({{site.baseurl}}/docs/administration/account-user-management/create-a-codefresh-account/). +If you don't have a Codefresh account already, you can easily create a free one from the [sign-up page]({{site.baseurl}}/docs/administration/account-user-management/create-codefresh-account/). ## Building a Dockerfile from a different folder @@ -68,7 +68,7 @@ You could also change the Docker build context by editing the `working_directory ## Related articles [CI/CD pipeline examples]({{site.baseurl}}/docs/example-catalog/examples/#ci-examples) -[Build an Image with the Dockerfile in root directory]({{site.baseurl}}/docs/example-catalog/ci-examples/build-an-image-dockerfile-in-root-directory/) +[Build an Image with the Dockerfile in root directory]({{site.baseurl}}/docs/example-catalog/ci-examples/build-an-image-with-the-dockerfile-in-root-directory/) [Build an Image from a different Git repository]({{site.baseurl}}/docs/example-catalog/ci-examples/build-an-image-from-a-different-git-repository) [Build and push an Image]({{site.baseurl}}/docs/example-catalog/ci-examples/build-and-push-an-image) [Build an Image With build arguments]({{site.baseurl}}/docs/example-catalog/ci-examples/build-an-image-with-build-arguments) diff --git a/_docs/example-catalog/ci-examples/build-an-image-with-the-dockerfile-in-root-directory.md b/_docs/example-catalog/ci-examples/build-an-image-with-the-dockerfile-in-root-directory.md index 72695056c..627a0383d 100644 --- a/_docs/example-catalog/ci-examples/build-an-image-with-the-dockerfile-in-root-directory.md +++ b/_docs/example-catalog/ci-examples/build-an-image-with-the-dockerfile-in-root-directory.md @@ -13,7 +13,7 @@ Building a Docker image is one of the basic operations in Codefresh pipelines. >The source code of the repository is at [https://github.com/codefreshdemo/cf-yml-example-build-dockerfile-inroot](https://github.com/codefreshdemo/cf-yml-example-build-dockerfile-inroot){:target="\_blank"}. Feel free to fork it if you want to follow along. -If you don't have a Codefresh account already, you can easily create a free one from the [sign-up page]({{site.baseurl}}/docs/administration/account-user-management/create-a-codefresh-account/). +If you don't have a Codefresh account already, you can easily create a free one from the [sign-up page]({{site.baseurl}}/docs/administration/account-user-management/create-codefresh-account/). ## Building a Dockerfile from the root folder diff --git a/_docs/example-catalog/ci-examples/fan-in-fan-out.md b/_docs/example-catalog/ci-examples/fan-in-fan-out.md index 878b76484..5a6b6cea2 100644 --- a/_docs/example-catalog/ci-examples/fan-in-fan-out.md +++ b/_docs/example-catalog/ci-examples/fan-in-fan-out.md @@ -29,7 +29,7 @@ You can achieve parallelism in your Codefresh pipelines by using the following: ## Prerequisites -- A [Codefresh account]({{site.baseurl}}/_docs/administration/account-user-management/create-codefresh-account/) +- A [Codefresh account]({{site.baseurl}}/docs/administration/account-user-management/create-codefresh-account/) ## Example project diff --git a/_docs/example-catalog/ci-examples/publish-jar.md b/_docs/example-catalog/ci-examples/publish-jar.md index 688cca267..c62c1bc1a 100644 --- a/_docs/example-catalog/ci-examples/publish-jar.md +++ b/_docs/example-catalog/ci-examples/publish-jar.md @@ -11,8 +11,8 @@ toc: true Even though Codefresh has great support for containers, it can still be used for traditional JAR uploads of libraries or applications that are not dockerized yet. In this example we will compile a JAR and upload it to Nexus. The process is the same for Artifactory or any other package manager. -For a Java application with Docker, see the [Gradle]({{site.baseurl}}/docs/learn-by-example/java/gradle/){} or - [Maven example]({{site.baseurl}}/docs/learn-by-example/java/spring-boot-2/). +For a Java application with Docker, see the [Gradle]({{site.baseurl}}/docs/example-catalog/ci-examples/gradle/) or + [Maven example]({{site.baseurl}}/docs/example-catalog/ci-examples/spring-boot-2/). ## The example Java library project @@ -104,7 +104,7 @@ You can use the same pipeline for Artifactory or any other compliant Java packag ## Related articles -[Gradle example]({{site.baseurl}}/docs/example-catalog/ci-examples/java/gradle/) +[Gradle example]({{site.baseurl}}/docs/example-catalog/ci-examples/gradle/) [Spring boot example]({{site.baseurl}}/docs//example-catalog/ci-examples/spring-boot-2/) [Codefresh YAML for pipeline definitions]({{site.baseurl}}/docs/pipelines/what-is-the-codefresh-yaml/) [Steps in pipelines]({{site.baseurl}}/docs/pipelines/steps/) diff --git a/_docs/example-catalog/ci-examples/ruby.md b/_docs/example-catalog/ci-examples/ruby.md index b616ce8f4..c1304915c 100644 --- a/_docs/example-catalog/ci-examples/ruby.md +++ b/_docs/example-catalog/ci-examples/ruby.md @@ -103,7 +103,7 @@ The first step is a [build step]({{site.baseurl}}/docs/pipelines/steps/build/) n ## Inspecting your Docker image -You can see all your latest [Docker artifacts]({{site.baseurl}}/docs/docker-registries/working-with-docker-registries/#viewing-docker-images) by selecting *Images* from the left sidebar. +You can see all your latest [Docker artifacts]({{site.baseurl}}/docs/ci-cd-guides/working-with-docker-registries/#viewing-docker-images) by selecting *Images* from the left sidebar. {% include image.html diff --git a/_docs/installation/behind-the-firewall.md b/_docs/installation/behind-the-firewall.md index af0847d43..8ca10c151 100644 --- a/_docs/installation/behind-the-firewall.md +++ b/_docs/installation/behind-the-firewall.md @@ -242,5 +242,5 @@ The cluster where the runner works on should have network connectivity with the Once your cluster is connected you can use any of the familiar deployment methods such as the [dedicated deploy step]({{site.baseurl}}/docs/deployments/kubernetes/) or [custom kubectl commands]({{site.baseurl}}/docs/deployments/kubernetes/custom-kubectl-commands/). ## Related articles -[Google marketplace integration]({{site.baseurl}}/docs/integrations/ci-integrations/google-marketplace/) +[Google marketplace integration]({{site.baseurl}}/docs/integrations/google-marketplace/) [Managing your Kubernetes cluster]({{site.baseurl}}/docs/deployments/kubernetes/manage-kubernetes/) diff --git a/_docs/installation/gitops/hybrid-gitops.md b/_docs/installation/gitops/hybrid-gitops.md index 1e5ff1c01..2d32696b3 100644 --- a/_docs/installation/gitops/hybrid-gitops.md +++ b/_docs/installation/gitops/hybrid-gitops.md @@ -881,7 +881,7 @@ The cluster defined as the default for `kubectl`. If you have more than one Kube **Access mode** The access mode for the runtime, which can be one of the following: * [Tunnel-based]({{site.baseurl}}/docs/installation/runtime-architecture/#tunnel-based-hybrid-gitops-runtime-architecture), for runtimes without ingress controllers. This is the default. -* [Ingress-based]({{site.baseurl}}/docs/getting-started/architecture/#ingress-based-hybrid-gitops-runtime-architecture) for runtimes with ingress contollers. +* [Ingress-based]({{site.baseurl}}/docs/installation/runtime-architecture/#ingress-based-hybrid-gitops-runtime-architecture) for runtimes with ingress contollers. * CLI wizard: Select the access mode from the list displayed. @@ -1285,8 +1285,8 @@ data: ## Related articles -[Add external clusters to Hybrid and Hosted Runtimes]({{site.baseurl}}/docs/installation/managed-cluster/) -[Monitoring & managing GitOps Runtimes]({{site.baseurl}}/docs/installation/monitor-manage-runtimes/) -[Add Git Sources to runtimes]({{site.baseurl}}/docs/installation/git-sources/) +[Add external clusters to Hybrid and Hosted Runtimes]({{site.baseurl}}/docs/installation/gitops/managed-cluster/) +[Monitoring & managing GitOps Runtimes]({{site.baseurl}}/docs/installation/gitops/monitor-manage-runtimes/) +[Add Git Sources to runtimes]({{site.baseurl}}/docs/installation/gitops/git-sources/) [Shared configuration repo]({{site.baseurl}}/docs/reference/shared-configuration) -[Troubleshoot Hybrid Runtime installation]({{site.baseurl}}/installation/troubleshooting/runtime-issues/) +[Troubleshoot Hybrid Runtime installation]({{site.baseurl}}/docs/troubleshooting/runtime-issues/) diff --git a/_docs/installation/gitops/monitor-manage-runtimes.md b/_docs/installation/gitops/monitor-manage-runtimes.md index 9e579a1b5..04b598062 100644 --- a/_docs/installation/gitops/monitor-manage-runtimes.md +++ b/_docs/installation/gitops/monitor-manage-runtimes.md @@ -75,10 +75,10 @@ Here is a description of the information in the List View. |**Type**| The type of GitOps Runtime provisioned, and can be **Hybrid** or **Hosted**. | |**Cluster/Namespace**| The K8s API server endpoint, as well as the namespace with the cluster. | |**Modules**| The modules installed based on the type of provisioned Runtime. Hybrid Runtimes include CI amnd CD Ops modules. Hosted runtimes include CD Ops. | -|**Managed Cluster**| The number of managed clusters if any, for the runtime. To view list of managed clusters, select the runtime, and then the **Managed Clusters** tab. To work with managed clusters, see [Adding external clusters to runtimes]({{site.baseurl}}/docs/runtime/managed-cluster).| +|**Managed Cluster**| The number of managed clusters if any, for the runtime. To view list of managed clusters, select the runtime, and then the **Managed Clusters** tab. To work with managed clusters, see [Adding external clusters to runtimes]({{site.baseurl}}/docs/installation/gitops/managed-cluster/).| |**Version**| The version of the runtime currently installed. **Update Available!** indicates there are later versions of the runtime. To see all the commits to the runtime, mouse over **Update Available!**, and select **View Complete Change Log**. |**Last Updated**| The most recent update information from the runtime to the Codefresh platform. Updates are sent to the platform typically every few minutes. Longer update intervals may indicate networking issues.| -|**Sync Status**| The health and sync status of the runtime or cluster. {::nomarkdown}
{:/} | +|**Sync Status**| The health and sync status of the runtime or cluster. {::nomarkdown}
{:/} | ### Topology view @@ -99,9 +99,9 @@ Here is a description of the information in the Topology view. {: .table .table-bordered .table-hover} | Topology View Item | Description | | ------------------------| ---------------- | -|**Runtime** | ![](../../../images/icons/codefresh-runtime.png?display=inline-block) the provisioned Runtime. Hybrid Runtimes display the name of the K8s API server endpoint with the cluster. Hosted Runtimes display 'hosted'. | -|**Cluster** | The local, and managed clusters if any, for the Runtime. {::nomarkdown} {:/} To view cluster components, select the cluster. To add and work with managed clusters, see [Adding external clusters to runtimes]({{site.baseurl}}/docs/installation/gitops/managed-cluster). | -|**Health/Sync status** |The health and sync status of the Runtime or cluster. {::nomarkdown} {:/} | +|**Runtime** | ![](../../../../images/icons/codefresh-runtime.png?display=inline-block) the provisioned Runtime. Hybrid Runtimes display the name of the K8s API server endpoint with the cluster. Hosted Runtimes display 'hosted'. | +|**Cluster** | The local, and managed clusters if any, for the Runtime. {::nomarkdown} {:/} To view cluster components, select the cluster. To add and work with managed clusters, see [Adding external clusters to runtimes]({{site.baseurl}}/docs/installation/gitops/managed-cluster). | +|**Health/Sync status** |The health and sync status of the Runtime or cluster. {::nomarkdown} {:/} | |**Search and View options** | {::nomarkdown} {:/}| ## Managing provisioned GitOps Runtimes diff --git a/_docs/installation/runtime-architecture.md b/_docs/installation/runtime-architecture.md index 5d8f8f35c..6ca883af0 100644 --- a/_docs/installation/runtime-architecture.md +++ b/_docs/installation/runtime-architecture.md @@ -15,7 +15,7 @@ The most important components are the following: **Pipeline execution environment**: The Codefresh engine component is responsible for taking pipeline definitions and running them in managed Kubernetes clusters by automatically launching the Docker containers that each pipeline needs for its steps. -**External actors**. Codefresh offers a [public API]({{site.baseurl}}/docs/integrations/ci-integrations/codefresh-api/) that is consumed both by the Web user interface and the [Codefresh CLI](https://codefresh-io.github.io/cli/){:target="\_blank"}. The API is also available for any custom integration with external tools or services. +**External actors**. Codefresh offers a [public API]({{site.baseurl}}/docs/integrations/codefresh-api/) that is consumed both by the Web user interface and the [Codefresh CLI](https://codefresh-io.github.io/cli/){:target="\_blank"}. The API is also available for any custom integration with external tools or services. ### Runner topology diff --git a/_docs/integrations/docker-registries/amazon-ec2-container-registry.md b/_docs/integrations/docker-registries/amazon-ec2-container-registry.md index 793b0344e..f500102ee 100644 --- a/_docs/integrations/docker-registries/amazon-ec2-container-registry.md +++ b/_docs/integrations/docker-registries/amazon-ec2-container-registry.md @@ -158,13 +158,13 @@ max-width="40%" {% include image.html lightbox="true" file="/images/integrations/docker-registries/ecr/ecr-manual-promote-settings.png" -url="/images/f2b0ec5-ecr3.png" +url="/images/integrations/docker-registries/ecr/ecr-manual-promote-settings.png" alt="Image promotion settings" caption="Image promotion settings" max-width="40%" %} -{:start="3"} +{:start="4"} 3. Click **Promote**. diff --git a/_docs/integrations/docker-registries/docker-hub.md b/_docs/integrations/docker-registries/docker-hub.md index 65b654792..0325c5edd 100644 --- a/_docs/integrations/docker-registries/docker-hub.md +++ b/_docs/integrations/docker-registries/docker-hub.md @@ -115,7 +115,7 @@ The two Dockerhub accounts are `kkapelon` and `kostiscodefresh`, and Codefresh a [Docker registries for pipeline integrations]({{site.baseurl}}/docs/integrations/docker-registries) [Working with Docker Registries]({{site.baseurl}}/docs/ci-cd-guides/working-with-docker-registries/) [Push step in pipelines]({{site.baseurl}}/docs/pipelines/steps/push/) -[Building and pushing an image]({{site.baseurl}}/docs/examples/example-catalog/build-and-push-an-image/) +[Building and pushing an image]({{site.baseurl}}/docs/example-catalog/ci-examples/build-and-push-an-image/) diff --git a/_docs/pipelines/configuration/pipeline-settings.md b/_docs/pipelines/configuration/pipeline-settings.md index 8a30fb84a..f37e26633 100644 --- a/_docs/pipelines/configuration/pipeline-settings.md +++ b/_docs/pipelines/configuration/pipeline-settings.md @@ -57,7 +57,7 @@ Selectively restricting access to clusters for a pipeline: {% include image.html lightbox="true" -file="images/pipeline/pipeline-settings/pipeline-inject-cluster-accnt-setting.png" +file="/images/pipeline/pipeline-settings/pipeline-inject-cluster-accnt-setting.png" url="/images/pipeline/pipeline-settings/pipeline-inject-cluster-accnt-setting.png" alt="Enabling cluster contexts for injection into pipelines" caption="Enabling cluster contexts for injection into pipelines" diff --git a/_docs/pipelines/post-step-operations.md b/_docs/pipelines/post-step-operations.md index a3305f583..56ed4e834 100644 --- a/_docs/pipelines/post-step-operations.md +++ b/_docs/pipelines/post-step-operations.md @@ -49,7 +49,7 @@ step_name: ## Available Post-Step Operations -- [Image Metadata]({{site.baseurl}}/docs/pipelines/metadata-annotations/) +- [Image Metadata]({{site.baseurl}}/docs/pipelines/docker-image-metadata/) - [Custom annotations]({{site.baseurl}}/docs/pipelines/annotations/) - [Hooks in pipelines]({{site.baseurl}}/docs/pipelines/hooks/) diff --git a/_docs/pipelines/steps.md b/_docs/pipelines/steps.md index f1e37d055..322066f55 100644 --- a/_docs/pipelines/steps.md +++ b/_docs/pipelines/steps.md @@ -47,7 +47,7 @@ Freestyle steps are a secure replacement for `docker run` commands. **Launch test environment** steps behave similar to compositions, but they persist after the pipeline ends. This is a great way to create preview environment from your pull requests and send to colleagues. * [Deploy]({{site.baseurl}}/docs/pipelines/steps/deploy/) - **Deploy steps** allow you to [perform Kubernetes deployments]({{site.baseurl}}/docs/deploy-to-kubernetes/) in a declarative manner. They embody the Continuous Deployment aspect of Codefresh. + **Deploy steps** allow you to [perform Kubernetes deployments]({{site.baseurl}}/docs/quick-start/ci-quick-start/deploy-to-kubernetes/) in a declarative manner. They embody the Continuous Deployment aspect of Codefresh. * [Approval]({{site.baseurl}}/docs/pipelines/steps/approval/) **Approval steps** allow you to pause pipelines and wait for human intervention before resuming. They allow you to embrace the concepts of Continuous Delivery. diff --git a/_docs/pipelines/steps/git-clone.md b/_docs/pipelines/steps/git-clone.md index 06a190b50..dec860ab4 100644 --- a/_docs/pipelines/steps/git-clone.md +++ b/_docs/pipelines/steps/git-clone.md @@ -68,7 +68,7 @@ step_name: - Working Directory {{site.data.callout.callout_info}} -If you want to extend the git-clone step you can use the freestyle step. Example how to do it you can find [here]({{site.baseurl}}/docs/example-catalog/git-clone-private-repository-using-freestyle-step/). +If you want to extend the git-clone step you can use the freestyle step. Example how to do it you can find [here]({{site.baseurl}}/docs/example-catalog/ci-examples/git-clone-private-repository-using-freestyle-step/). {{site.data.callout.end}} ## Basic clone step (project-based pipeline) @@ -429,7 +429,7 @@ For more details, see the [behind the firewall page]({{site.baseurl}}/docs/insta ## Related articles [Creating pipelines]({{site.baseurl}}/docs/pipelines/pipelines/) [YAML steps]({{site.baseurl}}/docs/pipelines/steps/) -[Custom Git Commands]({{site.baseurl}}/docs/example-catalog/git-checkout-custom/) +[Custom Git Commands]({{site.baseurl}}/docs/example-catalog/ci-examples/git-checkout-custom/) diff --git a/_docs/quick-start/ci-quick-start/deploy-to-kubernetes.md b/_docs/quick-start/ci-quick-start/deploy-to-kubernetes.md index 5c7212762..384d1072c 100644 --- a/_docs/quick-start/ci-quick-start/deploy-to-kubernetes.md +++ b/_docs/quick-start/ci-quick-start/deploy-to-kubernetes.md @@ -12,7 +12,7 @@ toc: true This quick start will guide you through deploying the Docker image you created to a Kubernetes cluster, both manually through the Codefresh UI, and automatically through a pipeline. Deploying the image through a pipeline, redeploys the image automatically when there are changes in the source code. -For the quick start, we will use the Codefresh UI to create both the Kubernetes service inside the cluster and the CI/CD pipeline that keeps it up to date. +For the quick start, we will use the Codefresh UI to create both the Kubernetes service inside the cluster and the CI/CD pipeline that keeps it up to date. In a real-world scenario, it is best if you use [Codefresh YAML]({{site.baseurl}}/docs/pipelines/what-is-the-codefresh-yaml/) which is much more powerful and flexible. At the end of Kubernetes deployment quick start, we will have a pipeline that: @@ -209,7 +209,7 @@ caption="Commit change to Git" max-width="70%" %} - Codefresh automatically identifies the change and [triggers]({{site.baseurl}}/docs/pipeline/triggers/) a new build that deploys the new version: + Codefresh automatically identifies the change and [triggers]({{site.baseurl}}/docs/pipelines/triggers/) a new build that deploys the new version: {% include image.html diff --git a/_docs/quick-start/ci-quick-start/deploy-with-helm.md b/_docs/quick-start/ci-quick-start/deploy-with-helm.md index 1b391762b..779c99827 100644 --- a/_docs/quick-start/ci-quick-start/deploy-with-helm.md +++ b/_docs/quick-start/ci-quick-start/deploy-with-helm.md @@ -47,11 +47,11 @@ For reasons of simplicity, we will use the [default Docker registry]({{site.base ## Prerequisites -* A [Kubernetes cluster]({{site.baseurl}}/docs/integrations/kubernetes/add-kubernetes-cluster/) in Codefresh +* A [Kubernetes cluster]({{site.baseurl}}/docs/integrations/kubernetes/#connect-a-kubernetes-cluster/) in Codefresh * The Docker registry you connected to your Codefresh account in the CI pipeline quick start * An application that has a Dockerfile and a [Helm chart]({{site.baseurl}}/docs/deployments/helm/using-helm-in-codefresh-pipeline/#helm-setup) * Cluster with pull access to your default Docker registry - If you are not familiar, read [Manually deploy Docker image to Kubernetes]({{site.baseurl}}/docs/quick-start/ci-quick-start/deploy-to-kubernetes/#manually-deploy-docker-image-to-kubernetes), or read about [secrets]({{site.baseurl}}/docs/deployments/kubernetes/deploy-to-kubernetes/create-image-pull-secret/) + If you are not familiar, read [Manually deploy Docker image to Kubernetes]({{site.baseurl}}/docs/quick-start/ci-quick-start/deploy-to-kubernetes/#manually-deploy-docker-image-to-kubernetes), or read about [secrets]({{site.baseurl}}/docs/ci-cd-guides/access-docker-registry-from-kubernetes/) If you want to follow along, feel free to fork this [repository](https://github.com/codefresh-contrib/python-flask-sample-app){:target="\_blank"} in your Git account and look at the [with-helm](https://github.com/codefresh-contrib/python-flask-sample-app/tree/with-helm){:target="\_blank"} branch. diff --git a/_docs/quick-start/ci-quick-start/on-demand-environments.md b/_docs/quick-start/ci-quick-start/on-demand-environments.md index f0b19b552..d2217dcbc 100644 --- a/_docs/quick-start/ci-quick-start/on-demand-environments.md +++ b/_docs/quick-start/ci-quick-start/on-demand-environments.md @@ -107,7 +107,7 @@ max-width="70%" ## Read more -[Kubernetes deployment quick start]({{site.baseurl}}/docs/getting-started/deployment-to-kubernetes-quick-start-guide/) +[Kubernetes deployment quick start]({{site.baseurl}}/docs/quick-start/ci-quick-start/deploy-to-kubernetes/) [Introduction to Codefresh pipelines]({{site.baseurl}}/docs/pipelines/introduction-to-codefresh-pipelines/) diff --git a/_docs/quick-start/gitops-quick-start/create-app-specs.md b/_docs/quick-start/gitops-quick-start/create-app-specs.md index 7d34a735d..eb4adca64 100644 --- a/_docs/quick-start/gitops-quick-start/create-app-specs.md +++ b/_docs/quick-start/gitops-quick-start/create-app-specs.md @@ -13,8 +13,8 @@ You will create and commit the following resources: 1. `Service` resource to expose the application to external traffic ### Before you begin -* [Create an application]({{site.baseurl}}/docs/getting-started/quick-start/create-app-ui) -* Make sure [Argo Rollouts is installed]({{site.baseurl}}/docs/deployment/install-argo-rollouts) on the target cluster +* [Create an application]({{site.baseurl}}/docs/quick-start/gitops-quick-start/create-app-ui/) +* Make sure [Argo Rollouts is installed]({{site.baseurl}}/docs/deployments/gitops/install-argo-rollouts/) on the target cluster ### Create folder in Git for application resources Create a folder in the Git repo in which to save all the resources for the `codefresh-guestbook` application. @@ -127,4 +127,4 @@ Once you create and commit the `rollout` and `service` resources, return to the %} ### What to do next -[(Optional) Update image tag for application]({{site.baseurl}}/docs/getting-started/quick-start/create-rollout) \ No newline at end of file +[(Optional) Update image tag for application]({{site.baseurl}}/docs/quick-start/gitops-quick-start/create-rollout/) \ No newline at end of file diff --git a/_docs/quick-start/gitops-quick-start/create-app-ui.md b/_docs/quick-start/gitops-quick-start/create-app-ui.md index ea2c86d5a..3eeaac1e2 100644 --- a/_docs/quick-start/gitops-quick-start/create-app-ui.md +++ b/_docs/quick-start/gitops-quick-start/create-app-ui.md @@ -107,4 +107,4 @@ In the next task, you will create and commit resources for the `codefresh-guestb ### What to do next -[Create and commit resources for application]({{site.baseurl}}/docs/getting-started/quick-start/create-app-specs/) +[Create and commit resources for application]({{site.baseurl}}/docs/quick-start/gitops-quick-start/create-app-specs/) diff --git a/_docs/quick-start/gitops-quick-start/install-hosted.md b/_docs/quick-start/gitops-quick-start/install-hosted.md index 16d1870e7..2f236f050 100644 --- a/_docs/quick-start/gitops-quick-start/install-hosted.md +++ b/_docs/quick-start/gitops-quick-start/install-hosted.md @@ -14,7 +14,7 @@ If you have Hosted GitOps, set up your hosted runtime environment: 1. Install Argo Rollouts on the cluster Read our [blog on Hosted GitOps](https://codefresh.io/blog/codefresh-upends-continuous-delivery-with-hosted-gitops-platform-featuring-dora-dashboards-and-first-class-integrations-for-ci/). -For detailed information on each of the steps below, see [Set up a hosted runtime environment]({{site.baseurl}}/docs/runtime/hosted-runtime/). +For detailed information on each of the steps below, see [Set up a hosted runtime environment]({{site.baseurl}}/docs/installation/gitops/hosted-runtime/). **Before you begin** @@ -23,7 +23,7 @@ Verify the following: * Check version: `cf version` To compare with the latest version from Codefresh, [click here](https://github.com/codefresh-io/cli-v2/releases){:target="\_blank"}. - * [Download the CLI]({{site.baseurl}}/docs/clients/csdp-cli/). + * [Download the CLI]({{site.baseurl}}/docs/installation/gitops/upgrade-gitops-cli/). * Kubernetes cluster with access to the internet * OAuth token @@ -106,5 +106,5 @@ max-width="70%" %} ### What to do next -[Create resources for codefresh-guestbook application]({{site.baseurl}}/docs/getting-started/quick-start/create-app-specs) +[Create resources for codefresh-guestbook application]({{site.baseurl}}/docs/quick-start/gitops-quick-start/create-app-specs/) diff --git a/_docs/quick-start/gitops-quick-start/runtime.md b/_docs/quick-start/gitops-quick-start/runtime.md index ecb041d92..f501c2986 100644 --- a/_docs/quick-start/gitops-quick-start/runtime.md +++ b/_docs/quick-start/gitops-quick-start/runtime.md @@ -114,6 +114,5 @@ The **Runtimes** dashboard shows the hybrid runtime you just installed. You can %} ### What to do next -[Create resources for codefresh-guestbook application]({{site.baseurl}}/docs/getting-started/quick-start/create-app-specs) -OR -[Trigger the Hello World example pipeline]({{site.baseurl}}/docs/getting-started/quick-start/hello-world) +[Create resources for codefresh-guestbook application]({{site.baseurl}}/docs/quick-start/gitops-quick-start/create-app-specs/) + diff --git a/_docs/quick-start/gitops-quick-start/verify-requirements.md b/_docs/quick-start/gitops-quick-start/verify-requirements.md index 687529f42..bbf2e3eb3 100644 --- a/_docs/quick-start/gitops-quick-start/verify-requirements.md +++ b/_docs/quick-start/gitops-quick-start/verify-requirements.md @@ -8,7 +8,7 @@ toc: true **New installation** -If this is your first time installing GitOps in Codefresh, review and confirm that your deployment environment conforms to the minimum requirements for hybrid runtime installation. Check the [system requirements]({{site.baseurl}}/docs/installation/requirements). +If this is your first time installing GitOps in Codefresh, review and confirm that your deployment environment conforms to the minimum requirements for hybrid runtime installation. Check the [system requirements]({{site.baseurl}}/docs/installation/gitops/hybrid-gitops/#minimum-system-requirements). **Existing installation** @@ -29,4 +29,4 @@ If you already have a hybrid runtime installation on your cluster, you have two * Try deleting the namespace again. ### What to do next -[Install a hybrid runtime]({{site.baseurl}}/docs/getting-started/quick-start/runtime) +[Install a hybrid runtime]({{site.baseurl}}/docs/quick-start/gitops-quick-start/runtime/) diff --git a/_docs/single-sign-on/oidc.md b/_docs/single-sign-on/oidc.md index 9153165ea..fcf0fa3e5 100644 --- a/_docs/single-sign-on/oidc.md +++ b/_docs/single-sign-on/oidc.md @@ -2,6 +2,8 @@ title: "Setting up OIDC Federated SSO" description: "OpenID Connect (OIDC) Single Sign-On (SSO) setup" group: single-sign-on +redirect_from: + - /docs/single-sign-on/oidc/ toc: true --- @@ -52,7 +54,7 @@ Here's what you need to do to configure SSO via OIDC in Codefresh: max-width="50%" %} -{:start="3ß"} +{:start="3"} 1. (Optional) [Set a default SSO provider for account]({{site.baseurl}}/docs/single-sign-on/team-sync/#set-a-default-sso-provider-for-account) You can select an IdP as the default SSO provider for a Codefresh account. This means that all the new users added to that account will automatically use the selected IdP for signin. 1. (Optional) [Select SSO method for individual users]({{site.baseurl}}/docs/single-sign-on/team-sync/#select-sso-method-for-individual-users) diff --git a/_docs/single-sign-on/oidc/oidc-azure.md b/_docs/single-sign-on/oidc/oidc-azure.md index 64fe48bed..c672c8a65 100644 --- a/_docs/single-sign-on/oidc/oidc-azure.md +++ b/_docs/single-sign-on/oidc/oidc-azure.md @@ -4,6 +4,7 @@ description: "Set up Azure SSO for OIDC" group: single-sign-on sub_group: oidc redirect_from: + - /docs/single-sign-on/oidc/oidc-azure/ - /docs/enterprise/single-sign-on/sso-azure/ toc: true --- @@ -178,6 +179,7 @@ max-width="70%" * **Object ID**: The Object ID from your Enterprise Application Properties in Azure AD. * **Auto Sync users and teams to Codefresh**: Select to automatically sync user accounts in Azure AD to your Codefresh account. Optionally, define the time interval, in hours, at which to sync, from 1 to 24. If you don’t specify an interval, the sync is every 12 hours. + {% include image.html lightbox="true" file="/images/sso/azure/sso-codefresh-settings.png" diff --git a/_docs/single-sign-on/oidc/oidc-okta.md b/_docs/single-sign-on/oidc/oidc-okta.md index 7afbea1e1..5b4021b2d 100644 --- a/_docs/single-sign-on/oidc/oidc-okta.md +++ b/_docs/single-sign-on/oidc/oidc-okta.md @@ -178,7 +178,7 @@ max-width="30%" You have now completed SSO setup for Okta. ## How Okta syncing works -[Syncing with Okta]({{site.baseurl}}/docs/single-sign-on/sso-setup-oauth2/#syncing-of-teams-after-initial-sso-setup) +[Syncing with Okta]({{site.baseurl}}/docs/single-sign-on/team-sync/) only affects teams/groups, and not individual users. diff --git a/_docs/single-sign-on/saml.md b/_docs/single-sign-on/saml.md index 13aa356cc..bfa056003 100644 --- a/_docs/single-sign-on/saml.md +++ b/_docs/single-sign-on/saml.md @@ -87,7 +87,7 @@ Here's what you need to do to configure SSO via SAML in Codefresh: * Provider Currently, we support GSuite for SAML. If you are using a different provider, leave this field empty. For GSuite, you can define the sync settings, Admin Email and the JSON Keyfile. - For instructions, see [Google SSO]({{site.baseurl}}/docs/single-sign-on/sso-google/#synchronize-teams-with-the-codefresh-cli). + For instructions, see [Google SSO]({{site.baseurl}}/docs/single-sign-on/team-sync/#cli-synchronize-teams). > These settings are for the SaaS version of Codefresh. For an on-premises setup, use the URLs that match your installation. diff --git a/_docs/single-sign-on/saml/saml-onelogin.md b/_docs/single-sign-on/saml/saml-onelogin.md index 9cfdd530a..6113c686a 100644 --- a/_docs/single-sign-on/saml/saml-onelogin.md +++ b/_docs/single-sign-on/saml/saml-onelogin.md @@ -3,11 +3,13 @@ title: OneLogin SSO via SAML description: Setting Up OneLogin via SAML group: single-sign-on sub_group: saml +redirect_from: + - /docs/single-sign-on/saml/saml-onelogin/ toc: true --- Set up SSO for OneLogin using SAML in Codefresh. -For a general overview on SAML, see [Setting up SAML2 Federated SSO]({site.baseurl}}/docs/single-sign-on/saml). +For a general overview on SAML, see [Setting up SAML2 Federated SSO]({{site.baseurl}}/docs/single-sign-on/saml). >If you do not see SAML in the SSO list, please create a support ticket to enable SAML for your account. @@ -39,7 +41,6 @@ Setting up SAML SSO for OneLogin includes: * Paste the content into the Application Certificate. * Remove the lines, `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`. * **Provider**: Leave empty. - 1. Click **Add**. The SAML integration for OneLogin is added and appears in the list of SSOs. 1. In the Single Sign-On page, click the **Edit** icon for the OneLogin SAML integration you created. diff --git a/_docs/testing/security-scanning.md b/_docs/testing/security-scanning.md index e00a7d950..df794c3a7 100644 --- a/_docs/testing/security-scanning.md +++ b/_docs/testing/security-scanning.md @@ -41,7 +41,7 @@ Common strategies are: Here is an example pipeline that scans a Docker image: * With [Aqua](https://www.aquasec.com/){:target="\_blank"} after being pushed to the [default Docker registry]({{site.baseurl}}/docs/integrations/docker-registries/#default-registry). -* Before it is promoted to the [external Azure Registry]({{site.baseurl}}/docs/docker-registries/azure-docker-registry/). +* Before it is promoted to the [external Azure Registry]({{site.baseurl}}/docs/integrations/docker-registries/azure-docker-registry/). {% include image.html lightbox="true" diff --git a/_docs/troubleshooting/common-issues/dockerhub-rate-limit.md b/_docs/troubleshooting/common-issues/dockerhub-rate-limit.md index b4d2c6533..06937f11a 100644 --- a/_docs/troubleshooting/common-issues/dockerhub-rate-limit.md +++ b/_docs/troubleshooting/common-issues/dockerhub-rate-limit.md @@ -41,7 +41,7 @@ If you don't have a Docker Hub integration in Codefresh, all your Docker images ## Solution -* Add at least one Docker Hub integration in Codefresh, as described in [Docker Hub integrations]({{site.baseurl}}/docs/integrations/ci-integrations/docker-registries/docker-hub/). +* Add at least one Docker Hub integration in Codefresh, as described in [Docker Hub integrations]({{site.baseurl}}/docs/integrations/docker-registries/docker-hub/). {% include image.html lightbox="true" diff --git a/_docs/troubleshooting/common-issues/using-ssh-keys.md b/_docs/troubleshooting/common-issues/using-ssh-keys.md index 949af19b7..d09b0aac2 100644 --- a/_docs/troubleshooting/common-issues/using-ssh-keys.md +++ b/_docs/troubleshooting/common-issues/using-ssh-keys.md @@ -33,7 +33,7 @@ Then create a freestyle step in your pipeline like this: {% endhighlight %} -The pipeline expects some [variables]({{site.baseurl}}/docs/pipelines/variables/) called `SSH_KEY, MY_USER, MY_HOST` that you can enter directly in the pipeline or fetch from [shared configuration]({{site.baseurl}}/docs/pipeline/configuration/shared-configuration/). +The pipeline expects some [variables]({{site.baseurl}}/docs/pipelines/variables/) called `SSH_KEY, MY_USER, MY_HOST` that you can enter directly in the pipeline or fetch from [shared configuration]({{site.baseurl}}/docs/pipelines/configuration/shared-configuration/). Replace `uptime`, with your own command that you want executed on the remote host. diff --git a/_docs/whats-new/changelog.md b/_docs/whats-new/changelog.md index 9f1bc3c0b..4bd2eda4a 100644 --- a/_docs/whats-new/changelog.md +++ b/_docs/whats-new/changelog.md @@ -9,13 +9,13 @@ toc: true ### January 2023 #### Features and enhancements -- Git clone step supports shallow clone - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/git-clone/#fields) +- Git clone step supports shallow clone - [documentation]({{site.baseurl}}/docs/pipelines/steps/git-clone/#fields) ### December 2022 #### Features and enhancements -- Track actual disk usage for build in the Disk Usage chart - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/monitoring-pipelines/#viewing-pipeline-metrics) -- Concurrency limit for pipelines increased to 30 - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/pipelines/#policies) +- Track actual disk usage for build in the Disk Usage chart - [documentation]({{site.baseurl}}/docs/pipelines/monitoring-pipelines/#viewing-pipeline-metrics) +- Concurrency limit for pipelines increased to 30 - [documentation]({{site.baseurl}}/docs/pipelines/pipelines/#policies) @@ -26,7 +26,7 @@ toc: true ### November 2022 #### Features and enhancements -- Set disk space for a pipeline build volume - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/pipelines/#runtime) +- Set disk space for a pipeline build volume - [documentation]({{site.baseurl}}/docs/pipelines/pipelines/#runtime) - Support for latest Kubernetes cluster version 1.24 - [documentation]({{site.baseurl}}/docs/administration/codefresh-runner/#prerequisites) @@ -39,10 +39,10 @@ toc: true #### Features and enhancements -- View/download logs for build or build steps as text, in addition to HTML - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/monitoring-pipelines/#viewingdownloading-logs-for-builds-and-build-steps) -- View variables used in pipeline builds - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/monitoring-pipelines/#viewing-variables-in-pipeline-builds) -- New option to trigger by PR comments from _any_ user - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/triggers/git-triggers/#pull-requests-from-comments) -- macOS/iOS builds are now available for the SaaS platform - [documentation]({{site.baseurl}}/docs/incubation/osx-ios-builds/) +- View/download logs for build or build steps as text, in addition to HTML - [documentation]({{site.baseurl}}/docs/pipelines/monitoring-pipelines/#viewingdownloading-logs-for-builds-and-build-steps) +- View variables used in pipeline builds - [documentation]({{site.baseurl}}/docs/pipelines/monitoring-pipelines/#viewing-variables-in-pipeline-builds) +- New option to trigger by PR comments from _any_ user - [documentation]({{site.baseurl}}/docs/pipelines/triggers/git-triggers/#pull-requests-from-comments) +- macOS/iOS builds are now available for the SaaS platform #### Bug fixes @@ -68,7 +68,7 @@ toc: true #### Features and enhancements - Pause pipeline execution for account - [documentation]({{site.baseurl}}/docs/administration/pipeline-settings/#pause-pipeline-executions) -- Traceability from child to parent builds - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/monitoring-pipelines/#build-details) +- Traceability from child to parent builds - [documentation]({{site.baseurl}}/docs/pipelines/monitoring-pipelines/#build-details) - On-premises: `x-hub-signature-256`support for GitHub AE - [documentation]({{site.baseurl}}/docs/administration/codefresh-on-prem/#enable-x-hub-signature-256-signature-for-github-ae) - On-premises: Admins can selectively enable SSO providers for user accounts - [documentation]({{site.baseurl}}/docs/administration/codefresh-on-prem/#selectively-enable-sso-providers) - LDAP login with username and password, with email required only for first time sign-in @@ -83,10 +83,10 @@ toc: true ### July-August 2022 #### Features and enhancements -- New setting for Pipeline Concurrency: 0 (maintenance mode) - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/pipelines/#policies) +- New setting for Pipeline Concurrency: 0 (maintenance mode) - [documentation]({{site.baseurl}}/docs/pipelines/pipelines/#policies) - Email notifications for successful and failed builds disabled by default for new users - [documentation]({{site.baseurl}}/docs/administration/user-settings/#email-notifications-for-builds) - Codefresh Classic integration with Codefresh Hosted GitOps - [documentation]({{site.baseurl}}/docs/integrations/codefresh-hosted-gitops/) -- On-premises: New release of Codefresh Classic: v.1.2.12 (July 20, 2022) - [documentation]({{site.baseurl}}/docs/administration/codefresh-on-prem-upgrade/) +- On-premises: New release of Codefresh Classic: v.1.2.12 (July 20, 2022) - [documentation]({{site.baseurl}}/docs/installation/codefresh-on-prem-upgrade/) - Hosted runtime clusters upgraded to Kubernetes 1.22 #### Bug fixes @@ -108,48 +108,48 @@ toc: true ### March 2022 - Support for Kubernetes 1.21 - [documentation]({{site.baseurl}}/docs/administration/codefresh-on-prem/#prerequisites) - Environment definition enhancements - [documentation]({{site.baseurl}}/docs/deploy-to-kubernetes/environment-dashboard/#creating-an-environment) -- RBAC support for shared configuration - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/shared-configuration/#creating-shared-configuration) -- Cross-account push for Amazon ECR - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/push/#fields) +- RBAC support for shared configuration - [documentation]({{site.baseurl}}/docs/pipelines/shared-configuration/#creating-shared-configuration) +- Cross-account push for Amazon ECR - [documentation]({{site.baseurl}}/docs/pipelines/steps/push/#fields) - (On-premises only) Retention policy for Codefresh builds - [documentation]({{site.baseurl}}/docs/administration/codefresh-on-prem/#retention-policy-for-codefresh-builds) -- Automated termination for 'Delayed' builds - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/monitoring-pipelines/#applying-filters-on-the-build-view) +- Automated termination for 'Delayed' builds - [documentation]({{site.baseurl}}/docs/pipelines/monitoring-pipelines/#applying-filters-on-the-build-view) ### January 2022 - Store test results using MinIO objects - [documentation]({{site.baseurl}}/docs/testing/test-reports/#connecting-minio-storage) -- Variables defined in `cf_export` override ones at the pipeline level - [documentation]({{site.baseurl}}/docs/codefresh-yaml/variables/#using-cf_export-command) +- Variables defined in `cf_export` override ones at the pipeline level - [documentation]({{site.baseurl}}/docs/pipelines/variables/#using-cf_export-command) - Base URL for Codecov integrations - [documentation]({{site.baseurl}}/docs/integrations/codecov-integration) ## 2021 ### November 2021 -- Use shared_host_network attribute to access containers via loalhost - [documentation]({{site.baseurl}}/docs/codefresh-yaml/service-containers/#accessing-containers-via-localhost) +- Use shared_host_network attribute to access containers via loalhost - [documentation]({{site.baseurl}}/docs/pipelines/service-containers/#accessing-containers-via-localhost) - Builds run locally are tagged as **Local** on the Builds page -- Cross-region support for Amazom ECR integrations with the `region` attribute - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/build/#fields) +- Cross-region support for Amazom ECR integrations with the `region` attribute - [documentation]({{site.baseurl}}/docs/pipelines/steps/build/#fields) - Option to add Helm charts as part of Helm environment definition - [documentation]({{site.baseurl}}/docs/new-helm/helm-environment-promotion/#defining-clustersnamespaces-for-each-environment) - Option to filter Helm board by charts defined in Helm environment - [documentation]({{site.baseurl}}/docs/new-helm/helm-environment-promotion/#editing-your-helm-boards) ### October 2021 -- Monorepo triggers for Azure DevOps repositories - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/triggers/git-triggers/#monorepo-support-modified-files) +- Monorepo triggers for Azure DevOps repositories - [documentation]({{site.baseurl}}/docs/pipelines/triggers/git-triggers/#monorepo-support-modified-files) - ABAC for Git Contexts - [documentation]({{site.baseurl}}/docs/integrations/git-providers/#abac-for-git-contexts) - Hybrid Runner Debug Timeout Duration - [documentation]({{site.baseurl}}/docs/administration/codefresh-runner/#debug-timeout-duration) ### September 2021 -- Custom plugins can be used in hooks - [documentation]({{site.baseurl}}/docs/codefresh-yaml/hooks/#limitations-of-pipelinestep-hooks) -- Variables can now be used in hooks - [documentation]({{site.baseurl}}/docs/codefresh-yaml/hooks/#limitations-of-pipelinestep-hooks) -- New `CF_STEP_NAME` variable - [documentation]({{site.baseurl}}/docs/codefresh-yaml/variables/#system-provided-variables) +- Custom plugins can be used in hooks - [documentation]({{site.baseurl}}/docs/pipelines/hooks/#limitations-of-pipelinestep-hooks) +- Variables can now be used in hooks - [documentation]({{site.baseurl}}/docs/pipelines/hooks/#limitations-of-pipelinestep-hooks) +- New `CF_STEP_NAME` variable - [documentation]({{site.baseurl}}/docs/pipelines/variables/#system-provided-variables) - Update Runner for GCE Disks - [documentation]({{site.baseurl}}/docs/administration/codefresh-runner/#docker-cache-support-for-gke) ### August 2021 - Using AWS Service Account for ECR Integration - [documentation]({{site.baseurl}}/docs/integrations/docker-registries/amazon-ec2-container-registry/#setting-up-ecr-integration---service-account) -- Approval steps now have an extra confirmation - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/approval/) +- Approval steps now have an extra confirmation - [documentation]({{site.baseurl}}/docs/pipelines/steps/approval/) - Using Bitnami Sealed Secrets with GitOps - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/gitops-secrets/) - App proxy is now available for Bitbucket server - [documentation]({{site.baseurl}}/docs/administration/codefresh-runner/#optional-installation-of-the-app-proxy) - Public Marketplace Registry - [documentation]({{site.baseurl}}/docs/administration/pipeline-settings/#advanced-pipeline-options) - Google Artifact Registry - [documentation]({{site.baseurl}}/docs/integrations/docker-registries/google-artifact-registry) -- Pipeline Execution Context - [documentation]({{site.baseurl}}/docs/administration/pipeline-execution-context/) +- Pipeline Execution Context - [documentation]({{site.baseurl}}/docs/administration/account-user-management/pipeline-execution-context/) - Fallback Registry for Docker Integrations - [documentation]({{site.baseurl}}/docs/integrations/docker-registries/#fallback-registry) ### July 2021 @@ -158,15 +158,15 @@ toc: true ### June 2021 -- Pending Approval Timeout - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/approval/#fields) -- OneLogin SAML Setup - [documentation]({{site.baseurl}}/docs/administration/single-sign-on/sso-setup-saml2/#onelogin-saml-setup) +- Pending Approval Timeout - [documentation]({{site.baseurl}}/docs/pipelines/steps/approval/#fields) +- OneLogin SAML Setup - [documentation]({{site.baseurl}}/docs/single-sign-on/saml/saml-onelogin) ### May 2021 - Installing Codefresh Runner with Helm - [documentation]({{site.baseurl}}/docs/administration/codefresh-runner/#installing-codefresh-runner-with-helm) - Codecov Integration - [documentation]({{site.baseurl}}/docs/integrations/codecov-integration/) - Dynamic preview environments - [documentation]({{site.baseurl}}/docs/ci-cd-guides/preview-environments/) -- Tag policy for transforming a Docker tag in lowercase or not - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/build/#fields) +- Tag policy for transforming a Docker tag in lowercase or not - [documentation]({{site.baseurl}}/docs/pipelines/steps/build/#fields) - Support for App-of-app patterns in the GitOps dashboard- [documentation]({{site.baseurl}}/docs/ci-cd-guides/gitops-deployments/#using-the-app-of-apps-pattern) ### April 2021 @@ -179,30 +179,30 @@ toc: true - Native Support for Hashicorp Vault Secrets - [documentation]({{site.baseurl}}/docs/integrations/hashicorp-vault) - Blue/Green deployments with Argo Rollouts - [documentation]({{site.baseurl}}/docs/ci-cd-guides/progressive-delivery/#blue-green-deployments) -- The [Modified Files filter]({{site.baseurl}}/docs/configure-ci-cd-pipeline/triggers/git-triggers/#monorepo-support-modified-files) will now work on triggers triggered by Pull Request events. Notice: this might cause unexpected behavior if you have a trigger that is triggered by both Pull Request and Commit events with a Modified Files filter set. Previously the Modified Files filter would be ignored for Pull Request events. If you need different filters for Pull Requests and Commit events, we recommend you separate the trigger. +- The [Modified Files filter]({{site.baseurl}}/docs/pipelines/triggers/git-triggers/#monorepo-support-modified-files) will now work on triggers triggered by Pull Request events. Notice: this might cause unexpected behavior if you have a trigger that is triggered by both Pull Request and Commit events with a Modified Files filter set. Previously the Modified Files filter would be ignored for Pull Request events. If you need different filters for Pull Requests and Commit events, we recommend you separate the trigger. - Codefresh Runner on Rancher RKE 2.X - [documentation]({{site.baseurl}}/docs/administration/codefresh-runner/#installing-on-rancher-rke-2x) -- Access service containers via localhost - [documentation]({{site.baseurl}}/docs/codefresh-yaml/service-containers/#accessing-containers-via-localhost) +- Access service containers via localhost - [documentation]({{site.baseurl}}/docs/pipelines/service-containers/#accessing-containers-via-localhost) ### February 2021 -- Concurrency Behavior for Pending Builds - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/approval/#define-concurrency-limits) +- Concurrency Behavior for Pending Builds - [documentation]({{site.baseurl}}/docs/pipelines/steps/approval/#define-concurrency-limits) - Jira Integration - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/sending-the-notification-to-jira/) - SLA Details - [documentation]({{site.baseurl}}/docs/terms-and-privacy-policy/sla/) - Autoscaling Recommendations for Codefresh On-prem - [documentation]({{site.baseurl}}/docs/administration/codefresh-on-prem/#app-cluster-autoscaling) - Hide Inaccessible Clusters in the Kubernetes Dashboard - [documentation]({{site.baseurl}}/docs/deploy-to-kubernetes/manage-kubernetes/#accessing-the-kubernetes-dashboard) -- Define Access for non-admins in Helm Repositories and Shared Config - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/shared-configuration/#level-of-access) +- Define Access for non-admins in Helm Repositories and Shared Config - [documentation]({{site.baseurl}}/docs/pipelines/shared-configuration/#level-of-access) - Okta Auto-Sync of Teams - [documentation]({{site.baseurl}}/docs/administration/single-sign-on/sso-okta/#syncing-of-teams-after-initial-sso-setup) - Global Pipeline Settings Screen - [documentation]({{site.baseurl}}/docs/administration/pipeline-settings) - Helm 2 Support discontinued ### January 2021 -- Using external secrets in Codefresh GUI - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/secrets-store/#using-secrets-in-the-codefresh-gui) +- Using external secrets in Codefresh GUI - [documentation]({{site.baseurl}}/docs/pipelines/secrets-store/#using-secrets-in-the-codefresh-gui) - Using external secrets in Github, Gitlab and Bitbucket server integration - [documentation]({{site.baseurl}}/docs/integrations/git-providers/#using-external-secrets-for-the-token) -- Using external secrets in shared configuration - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/shared-configuration/#using-external-secrets-as-values) +- Using external secrets in shared configuration - [documentation]({{site.baseurl}}/docs/pipelines/shared-configuration/#using-external-secrets-as-values) - Using external secrets in cloud storage integration - [documentation]({{site.baseurl}}/docs/testing/test-reports/#connecting-an-s3-bucket) - Get Code Coverage Reports with Codacy - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/codacy-testing) -- Git clone now supports a proxy connection - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/git-clone/#using-git-behind-a-proxy) +- Git clone now supports a proxy connection - [documentation]({{site.baseurl}}/docs/pipelines/steps/git-clone/#using-git-behind-a-proxy) - Support for other container runtimes (containerd, cri-o) in the Runner - [documentation]({{site.baseurl}}/docs/administration/codefresh-runner/#prerequisites) - Giving visibility of your account to Codefresh support personnel is now explicit - [documentation]({{site.baseurl}}/docs/administration/user-settings/#enable-access-for-support-personnel) - New paging mechanism for builds/images that might break custom integrations - [documentation]({{site.baseurl}}/docs/troubleshooting/common-issues/paging-issues-builds-images/) @@ -218,14 +218,14 @@ toc: true ### December 2020 - Get Code Coverage Reports with Coveralls - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/coveralls-testing) -- Codefresh will now use the default branch (e.g. `main`) instead of assuming `master`. This applies to GitHub, GitLab, and Bitbucket - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/git-clone/) +- Codefresh will now use the default branch (e.g. `main`) instead of assuming `master`. This applies to GitHub, GitLab, and Bitbucket - [documentation]({{site.baseurl}}/docs/pipelines/steps/git-clone/) - App-Proxy now supports GitLab - [documentation]({{site.baseurl}}/docs/administration/codefresh-runner/#optional-installation-of-the-app-proxy) - Helm promotion pipelines can be overridden in the GUI - [documentation]({{site.baseurl}}/docs/new-helm/helm-environment-promotion/#creating-your-own-helm-board) - Internal Registry mirror for the Codefresh runner - [documentation]({{site.baseurl}}/docs/administration/codefresh-runner/#internal-registry-mirror) - Production and staging deployments guide - [documentation]({{site.baseurl}}/docs/ci-cd-guides/environment-deployments/) -- Escaping YAML in pipelines - [documentation]({{site.baseurl}}/docs/codefresh-yaml/what-is-the-codefresh-yaml/#escaping-strings) +- Escaping YAML in pipelines - [documentation]({{site.baseurl}}/docs/pipelines/what-is-the-pipelines/#escaping-strings) - GitOps dashboard now shows affected services for each release - [documentation]({{site.baseurl}}/docs/ci-cd-guides/gitops-deployments/#working-with-the-gitops-dashboard) -- Time based filters in build view - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/monitoring-pipelines/#applying-filters-on-the-build-view) +- Time based filters in build view - [documentation]({{site.baseurl}}/docs/pipelines/monitoring-pipelines/#applying-filters-on-the-build-view) ### November 2020 @@ -240,7 +240,7 @@ toc: true ### October 2020 - Using Google for SSO - [documentation]({{site.baseurl}}/docs/administration/single-sign-on/sso-google/) -- Setting-up Helm Triggers in your Codefresh pipeline with the Codefresh UI - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/triggers/helm-triggers/) +- Setting-up Helm Triggers in your Codefresh pipeline with the Codefresh UI - [documentation]({{site.baseurl}}/docs/pipelines/triggers/helm-triggers/) - Using the GitHub Container registry as Docker registry - [documentation]({{site.baseurl}}/docs/integrations/docker-registries/github-container-registry/) - Simplified Git operations with the App Proxy for the Codefresh runner - [documentation]({{site.baseurl}}/docs/administration/codefresh-runner/#optional-installation-of-the-app-proxy) - Upgrade Codefresh on-prem - [documentation]({{site.baseurl}}/docs/administration/codefresh-on-prem/#upgrade-the-codefresh-platform) @@ -248,15 +248,15 @@ toc: true ### September 2020 - Security timeout - [documentation]({{site.baseurl}}/docs/administration/access-control/#security-timeout) -- Preserve pipeline volume after approval - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/approval/#keeping-the-shared-volume-after-an-approval) +- Preserve pipeline volume after approval - [documentation]({{site.baseurl}}/docs/pipelines/steps/approval/#keeping-the-shared-volume-after-an-approval) - DockerHub rate limit issue - [documentation]({{site.baseurl}}/docs/troubleshooting/common-issues/dockerhub-rate-limit/) ### August 2020 -- Pipeline/step hooks - [documentation]({{site.baseurl}}/docs/codefresh-yaml/hooks) -- Pipeline templates - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/pipelines/#using-pipeline-templates) +- Pipeline/step hooks - [documentation]({{site.baseurl}}/docs/pipelines/hooks) +- Pipeline templates - [documentation]({{site.baseurl}}/docs/pipelines/pipelines/#using-pipeline-templates) - Pipeline definition restrictions - [documentation]({{site.baseurl}}/docs/administration/access-control/#pipeline-definition-restrictions) -- Concurrency limits per branch - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/pipelines/#policies) +- Concurrency limits per branch - [documentation]({{site.baseurl}}/docs/pipelines/pipelines/#policies) - Custom pipeline variables for Helm promotion - [documentation]({{site.baseurl}}/docs/new-helm/helm-environment-promotion/#promoting-helm-releases-with-the-gui) ### July 2020 @@ -266,7 +266,7 @@ toc: true - Pull requests guide - [documentation]({{site.baseurl}}/docs/ci-cd-guides/pull-request-branches/) - Microservice guide - [documentation]({{site.baseurl}}/docs/ci-cd-guides/microservices/) - Using GitHub packages as Docker registry - [documentation]({{site.baseurl}}/docs/integrations/docker-registries/github-packages/) -- Check if a variable exists - [documentation]({{site.baseurl}}/docs/codefresh-yaml/conditional-execution-of-steps/#execute-steps-according-to-the-presence-of-a-variable) +- Check if a variable exists - [documentation]({{site.baseurl}}/docs/pipelines/conditional-execution-of-steps/#execute-steps-according-to-the-presence-of-a-variable) ### June 2020 @@ -280,11 +280,11 @@ toc: true ### May 2020 -- Masking encrypted variables in logs - [documentation]({{site.baseurl}}/docs/codefresh-yaml/variables/#masking-variables-in-logs) +- Masking encrypted variables in logs - [documentation]({{site.baseurl}}/docs/pipelines/variables/#masking-variables-in-logs) - Restrict Codefresh to specific namespace - [documentation]({{site.baseurl}}/docs/deploy-to-kubernetes/add-kubernetes-cluster/#restrict-codefresh-access-to-a-specific-namespace) - Deploy with Kustomize - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/deploy-with-kustomize) - Installing the Codefresh Runner on a multi AZ GKE cluster - [documentation]({{site.baseurl}}/docs/enterprise/codefresh-runner/#using-multiple-availability-zones) -- Masking encrypted variables in logs - [documentation]({{site.baseurl}}/docs/codefresh-yaml/variables/#masking-variables-in-logs) +- Masking encrypted variables in logs - [documentation]({{site.baseurl}}/docs/pipelines/variables/#masking-variables-in-logs) ### April 2020 @@ -292,13 +292,13 @@ toc: true - Integration with Google Cloud Build - [documentation]({{site.baseurl}}/docs/integrations/gcloud-builder/) - Deploy to Heroku - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/deploy-to-heroku/) - Scala: Hello World (updated) - [documentation]({{site.baseurl}}/docs/learn-by-example/scala/scala-hello-world/) -- New variable `CF_BRANCH_TAG_NORMALIZED_LOWER_CASE` - [documentation]({{site.baseurl}}/docs/codefresh-yaml/variables/#system-provided-variables) +- New variable `CF_BRANCH_TAG_NORMALIZED_LOWER_CASE` - [documentation]({{site.baseurl}}/docs/pipelines/variables/#system-provided-variables) - Trigger a Kubernetes Deployment from a Dockerhub Push Event - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/trigger-a-k8s-deployment-from-docker-registry/) - Uploading or Downloading from a Google Storage Bucket - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/uploading-or-downloading-from-gs/) - Use GitHub Actions no longer requires a registry - [documentation]({{site.baseurl}}/docs/integrations/github-actions/#how-it-works) -- Alternative debugging console - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/debugging-pipelines/#using-the-alternative-debug-window) -- User variable priority rules - [documentation]({{site.baseurl}}/docs/codefresh-yaml/variables/#user-provided-variables) -- Secret Storage - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/secrets-store/) +- Alternative debugging console - [documentation]({{site.baseurl}}/docs/pipelines/debugging-pipelines/#using-the-alternative-debug-window) +- User variable priority rules - [documentation]({{site.baseurl}}/docs/pipelines/variables/#user-provided-variables) +- Secret Storage - [documentation]({{site.baseurl}}/docs/pipelines/secrets-store/) - Run multiple kinds of unit tests using fan-in-fan-out parallel pipeline - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/fan-in-fan-out) ### March 2020 @@ -324,7 +324,7 @@ toc: true - Beta Support for Helm 3 - [documentation]({{site.baseurl}}/docs/new-helm/helm3/) - Use GitHub Actions as Codefresh pipeline steps - [documentation]({{site.baseurl}}/docs/integrations/github-actions/) - Publish a JAR to Artifactory/Nexus - [documentation]({{site.baseurl}}/docs/learn-by-example/java/publish-jar/) -- New [dashboard](https://g.codefresh.io/builds) for builds - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/monitoring-pipelines/) +- New [dashboard](https://g.codefresh.io/builds) for builds - [documentation]({{site.baseurl}}/docs/pipelines/monitoring-pipelines/) - The git-event name is now included - Event-specific additional information is now included - The trigger name is now included @@ -344,7 +344,7 @@ toc: true ### January 2020 -- New deployment environment dashboard - [documentation]({{site.baseurl}}/docs/codefresh-yaml/deployment-environments) +- New deployment environment dashboard - [documentation]({{site.baseurl}}/docs/pipelines/deployment-environments) - Support for Azure Storage in test reports - [documentation]({{site.baseurl}}/docs/testing/test-reports/#connecting-azure-storage) - Promoting Docker images - [documentation]({{site.baseurl}}/docs/docker-registries/working-with-docker-registries/#promoting-docker-images) - Using Dockerhub personal access tokens - [documentation]({{site.baseurl}}/docs/docker-registries/external-docker-registries/docker-hub/) @@ -355,25 +355,25 @@ toc: true ### December 2019 -- Output parameters in plugins - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/#example-with-output-parameters) +- Output parameters in plugins - [documentation]({{site.baseurl}}/docs/pipelines/steps/#example-with-output-parameters) - Preload a DB with test data before integration tests - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/populate-a-database-with-existing-data/) -- Using templates in custom pipeline steps - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/#example-with-step-templating) +- Using templates in custom pipeline steps - [documentation]({{site.baseurl}}/docs/pipelines/steps/#example-with-step-templating) ### November 2019 - Digital Ocean cluster integration - [documentation]({{site.baseurl}}/docs/deploy-to-kubernetes/add-kubernetes-cluster/#adding-a-digital-ocean-cluster) -- Build caching guide - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/pipeline-caching/) -- Versioning for plugins - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/#versioning-of-typed-steps) -- Step example with input parameters - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/#example-with-input-parameters) +- Build caching guide - [documentation]({{site.baseurl}}/docs/pipelines/pipeline-caching/) +- Versioning for plugins - [documentation]({{site.baseurl}}/docs/pipelines/steps/#versioning-of-typed-steps) +- Step example with input parameters - [documentation]({{site.baseurl}}/docs/pipelines/steps/#example-with-input-parameters) - Example with C and make - [documentation]({{site.baseurl}}/docs/learn-by-example/cc/c-make/) - Example with C++ and cmake - [documentation]({{site.baseurl}}/docs/learn-by-example/cc/cpp-cmake/) - Example with C# and .NET core - [documentation]({{site.baseurl}}/docs/learn-by-example/dotnet/) ### October 2019 -- Debugging pipelines with breakpoints - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/debugging-pipelines/) -- Matrix builds and implicit parallel steps - [documentation]({{site.baseurl}}/docs/codefresh-yaml/advanced-workflows/#implicit-parallel-steps) -- New Build view filters - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/monitoring-pipelines/#creating-build-views) +- Debugging pipelines with breakpoints - [documentation]({{site.baseurl}}/docs/pipelines/debugging-pipelines/) +- Matrix builds and implicit parallel steps - [documentation]({{site.baseurl}}/docs/pipelines/advanced-workflows/#implicit-parallel-steps) +- New Build view filters - [documentation]({{site.baseurl}}/docs/pipelines/monitoring-pipelines/#creating-build-views) - Deployments with Packer - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/packer-gcloud/) - Calling child pipelines - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/call-child-pipelines/) @@ -387,47 +387,47 @@ toc: true - MongoDB Integration test example - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/integration-tests-with-mongo/) - MySQL Integration test example - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/integration-tests-with-mysql/) - PostgreSQL Integration test example - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/integration-tests-with-postgres/) -- Explicit External Resources - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/pipelines/#external-resources) +- Explicit External Resources - [documentation]({{site.baseurl}}/docs/pipelines/pipelines/#external-resources) - Kubernetes connection issues - [documentation]({{site.baseurl}}/docs/troubleshooting/common-issues/forbidden-cluster-resources/) - Codefresh F.A.Q. - [documentation]({{site.baseurl}}/docs/getting-started/faq/) ### August 2019 -- Sidecar services in pipelines - [documentation]({{site.baseurl}}/docs/codefresh-yaml/service-containers/) +- Sidecar services in pipelines - [documentation]({{site.baseurl}}/docs/pipelines/service-containers/) - Personal Git providers are deprecated - [documentation]({{site.baseurl}}/docs/troubleshooting/personal-git-deprecation/) - Migrate from Jenkins to Codefresh - [documentation]({{site.baseurl}}/docs/integrations/jenkins-integration/#migrating-from-jenkins-to-codefresh) - macOS and iOS builds closed Alpha - [documentation]({{site.baseurl}}/docs/incubation/osx-ios-builds/) ### July 2019 -- New custom step creation process - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/#creating-your-own-step) -- Approval steps now have timeouts - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/approval/#automatic-approvalsrejections) -- Approval steps now have access control - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/approval/#approval-restrictions) -- Concurrency limits on pipelines - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/pipelines/#pipeline-settings) -- Termination settings on pipelines - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/pipelines/#pipeline-settings) +- New custom step creation process - [documentation]({{site.baseurl}}/docs/pipelines/steps/#creating-your-own-step) +- Approval steps now have timeouts - [documentation]({{site.baseurl}}/docs/pipelines/steps/approval/#automatic-approvalsrejections) +- Approval steps now have access control - [documentation]({{site.baseurl}}/docs/pipelines/steps/approval/#approval-restrictions) +- Concurrency limits on pipelines - [documentation]({{site.baseurl}}/docs/pipelines/pipelines/#pipeline-settings) +- Termination settings on pipelines - [documentation]({{site.baseurl}}/docs/pipelines/pipelines/#pipeline-settings) - API keys now have different access scopes - [documentation]({{site.baseurl}}/docs/integrations/codefresh-api/#access-scopes) ### June 2019 -- Added `CI=true` environment variable - [documentation]({{site.baseurl}}/docs/codefresh-yaml/variables/#system-provided-variables) -- Buildkit support - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/build/#buildkit-support) +- Added `CI=true` environment variable - [documentation]({{site.baseurl}}/docs/pipelines/variables/#system-provided-variables) +- Buildkit support - [documentation]({{site.baseurl}}/docs/pipelines/steps/build/#buildkit-support) - Security scanning - [documentation]({{site.baseurl}}/docs/testing/security-scanning/) -- Root pipeline anchors - [documentation]({{site.baseurl}}/docs/codefresh-yaml/what-is-the-codefresh-yaml/#using-yaml-anchors-to-avoid-repetition) +- Root pipeline anchors - [documentation]({{site.baseurl}}/docs/pipelines/what-is-the-pipelines/#using-yaml-anchors-to-avoid-repetition) - Building Android Apps - [documentation]({{site.baseurl}}/docs/learn-by-example/mobile/android/) - Deployment to Nomad clusters - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/nomad/) -- Editing of annotations - [documentation]({{site.baseurl}}/docs/codefresh-yaml/annotations/#viewingediting-annotations) +- Editing of annotations - [documentation]({{site.baseurl}}/docs/pipelines/annotations/#viewingediting-annotations) ### May 2019 -- Triggers can now be enabled/disabled - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/triggers/#disabling-triggers) -- New GitHub PR variables - [documentation]({{site.baseurl}}/docs/codefresh-yaml/variables/#github-pull-request-variables) -- Inline Dockerfiles in build steps - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/build/#inline-dockerfile) +- Triggers can now be enabled/disabled - [documentation]({{site.baseurl}}/docs/pipelines/triggers/#disabling-triggers) +- New GitHub PR variables - [documentation]({{site.baseurl}}/docs/pipelines/variables/#github-pull-request-variables) +- Inline Dockerfiles in build steps - [documentation]({{site.baseurl}}/docs/pipelines/steps/build/#inline-dockerfile) - LDAP SSO support (Enterprise) - [documentation]({{site.baseurl}}/docs/enterprise/single-sign-on/sso-ldap/) - SAML SSO support (Enterprise) - [documentation]({{site.baseurl}}/docs/enterprise/single-sign-on/sso-setup-saml2/#setting-up-saml-integration) - Audit logs (Enterprise) - [documentation]({{site.baseurl}}/docs/enterprise/audit-logs/) - Checking out code with Subversion, HG, Perforce etc. - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/non-git-checkout/) - Migrating to explicit git clone steps - [documentation]({{site.baseurl}}/docs/troubleshooting/git-step-migration/) -- Custom annotations on projects, pipelines, builds - [documentation]({{site.baseurl}}/docs/codefresh-yaml/annotations/) +- Custom annotations on projects, pipelines, builds - [documentation]({{site.baseurl}}/docs/pipelines/annotations/) - Deployments with Pulumi - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/pulumi/) - Deployments with Terraform - [documentation]({{site.baseurl}}/docs/yaml-examples/examples/terraform/) - Codefresh Runner installation - [documentation]({{site.baseurl}}/docs/enterprise/codefresh-runner/) @@ -435,14 +435,14 @@ toc: true ### April 2019 -- New project/pipeline view - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/pipelines/) -- Git clone steps are now required - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/git-clone/) +- New project/pipeline view - [documentation]({{site.baseurl}}/docs/pipelines/pipelines/) +- Git clone steps are now required - [documentation]({{site.baseurl}}/docs/pipelines/steps/git-clone/) - Simple Kubernetes templates - [documentation]({{site.baseurl}}/docs/deploy-to-kubernetes/kubernetes-templating/) ### March 2019 - Helm best practices - [documentation]({{site.baseurl}}/docs/new-helm/helm-best-practices/) -- Pushing images in parallel with multiple tags - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/push/#examples) +- Pushing images in parallel with multiple tags - [documentation]({{site.baseurl}}/docs/pipelines/steps/push/#examples) - Integration with Azure DevOps Repositories - [documentation]({{site.baseurl}}/docs/integrations/git-providers/#azure-devops) - OAuth2 Connections for supported git providers - [documentation]({{site.baseurl}}/docs/integrations/git-providers/#adding-more-git-providers-to-your-codefresh-account) - Pipeline ABAC (Enterprise) - [documentation]({{site.baseurl}}/docs/enterprise/access-control/#marking-pipelines-with-policy-attributes) @@ -450,57 +450,57 @@ toc: true ### February 2019 - Access Control (Enterprise) - [documentation]({{site.baseurl}}/docs/enterprise/access-control/) -- Accessing the shared volume in compositions - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/composition/#accesing-your-project-folder-from-a-composition) -- Reuse Git integration in custom clone step - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/git-clone/#reuse-a-git-token-from-codefresh-integrations) +- Accessing the shared volume in compositions - [documentation]({{site.baseurl}}/docs/pipelines/steps/composition/#accesing-your-project-folder-from-a-composition) +- Reuse Git integration in custom clone step - [documentation]({{site.baseurl}}/docs/pipelines/steps/git-clone/#reuse-a-git-token-from-codefresh-integrations) - Run custom Kubectl commands - [documentation]({{site.baseurl}}/docs/deploy-to-kubernetes/custom-kubectl-commands/) - Reading Image metadata - [documentation]({{site.baseurl}}/docs/docker-registries/metadata-annotations/#using-custom-metadata-in-codefresh-pipelines) - Codefresh build agent - [documentation]({{site.baseurl}}/docs/enterprise/behind-the-firewall/) ### January 2019 -- Manual approval step - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/approval/) -- Shared configuration - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/shared-configuration/) -- Running pipelines locally - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/running-pipelines-locally/) +- Manual approval step - [documentation]({{site.baseurl}}/docs/pipelines/steps/approval/) +- Shared configuration - [documentation]({{site.baseurl}}/docs/pipelines/shared-configuration/) +- Running pipelines locally - [documentation]({{site.baseurl}}/docs/pipelines/running-pipelines-locally/) - Installation options (Enterprise) - [documentation]({{site.baseurl}}/docs/enterprise/installation-security) -- Custom volumes for freestyle steps - [documentation]({{site.baseurl}}/docs/codefresh-yaml/steps/freestyle/#custom-volumes) +- Custom volumes for freestyle steps - [documentation]({{site.baseurl}}/docs/pipelines/steps/freestyle/#custom-volumes) - Helm Environment Promotion boards (Enterprise) - [documentation]({{site.baseurl}}/docs/new-helm/helm-environment-promotion) -- Pipeline resource metrics - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/monitoring-pipelines/#viewing-pipeline-metrics) +- Pipeline resource metrics - [documentation]({{site.baseurl}}/docs/pipelines/monitoring-pipelines/#viewing-pipeline-metrics) ## 2018 ### December 2018 -- Restart pipeline from failed steps - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/monitoring-pipelines/#restarting-the-pipeline) -- New variable for labels of a pull request - [documentation]({{site.baseurl}}/docs/codefresh-yaml/variables/#system-provided-variables) -- YAML validation without the GUI - [documentation]({{site.baseurl}}/docs/codefresh-yaml/what-is-the-codefresh-yaml/#yaml-validation) -- Run builds from external forks - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/triggers/git-triggers/#support-for-building-pull-requests-from-forks) +- Restart pipeline from failed steps - [documentation]({{site.baseurl}}/docs/pipelines/monitoring-pipelines/#restarting-the-pipeline) +- New variable for labels of a pull request - [documentation]({{site.baseurl}}/docs/pipelines/variables/#system-provided-variables) +- YAML validation without the GUI - [documentation]({{site.baseurl}}/docs/pipelines/what-is-the-pipelines/#yaml-validation) +- Run builds from external forks - [documentation]({{site.baseurl}}/docs/pipelines/triggers/git-triggers/#support-for-building-pull-requests-from-forks) - Google Marketplace Integration - [documentation]({{site.baseurl}}/docs/integrations/google-marketplace/) - Added OneLogin SSO support - [documentation]({{site.baseurl}}/docs/enterprise/single-sign-on/sso-onelogin/) -- Multiple test reports from a single pipeline - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/test-reports/#creating-multiple-reports) +- Multiple test reports from a single pipeline - [documentation]({{site.baseurl}}/docs/pipelines/test-reports/#creating-multiple-reports) - Historical data in Allure test reports are now available -- Inline YAML editor can now expand/collapse code blocks - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/pipelines/#writing-codefresh-yml-in-the-gui) +- Inline YAML editor can now expand/collapse code blocks - [documentation]({{site.baseurl}}/docs/pipelines/pipelines/#writing-codefresh-yml-in-the-gui) ### November 2018 -- Integrated test reports - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/test-reports/) -- Retry individual pipeline steps - [documentation]({{site.baseurl}}/docs/codefresh-yaml/what-is-the-codefresh-yaml/#retrying-a-step) -- Trigger integration with Azure Events - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/triggers/azure-triggers/) +- Integrated test reports - [documentation]({{site.baseurl}}/docs/pipelines/test-reports/) +- Retry individual pipeline steps - [documentation]({{site.baseurl}}/docs/pipelines/what-is-the-pipelines/#retrying-a-step) +- Trigger integration with Azure Events - [documentation]({{site.baseurl}}/docs/pipelines/triggers/azure-triggers/) ### October 2018 -- Parallel steps and advanced pipeline workflows - [documentation]({{site.baseurl}}/docs/codefresh-yaml/advanced-workflows/) +- Parallel steps and advanced pipeline workflows - [documentation]({{site.baseurl}}/docs/pipelines/advanced-workflows/) - New integration for Azure Helm repositories - [documentation]({{site.baseurl}}/docs/new-helm/add-helm-repository/#private-repository---azure) -- Trigger integration with Quay Events - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/triggers/quay-triggers/) -- Trigger integration with Artifactory Events - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/triggers/jfrog-triggers/) -- Public build logs for open source projects - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/build-status/#public-build-logs) +- Trigger integration with Quay Events - [documentation]({{site.baseurl}}/docs/pipelines/triggers/quay-triggers/) +- Trigger integration with Artifactory Events - [documentation]({{site.baseurl}}/docs/pipelines/triggers/jfrog-triggers/) +- Public build logs for open source projects - [documentation]({{site.baseurl}}/docs/pipelines/build-status/#public-build-logs) ### September 2018 -- New ability to group steps into pipeline steps - [documentation]({{site.baseurl}}/docs/codefresh-yaml/stages/) -- New dedicated *Pipelines* view for pipelines not linked to GIT repositories - [documentation]({{site.baseurl}}/docs/configure-ci-cd-pipeline/pipelines/#pipeline-creation-modes) +- New ability to group steps into pipeline steps - [documentation]({{site.baseurl}}/docs/pipelines/stages/) +- New dedicated *Pipelines* view for pipelines not linked to GIT repositories - [documentation]({{site.baseurl}}/docs/pipelines/pipelines/#pipeline-creation-modes) - New redesigned Logs view with persistent header and icons for steps - ARM build support (alpha) - [documentation]({{site.baseurl}}/docs/incubation/arm-support/) -- New pipeline variables for GitHub releases - [documentation]({{site.baseurl}}/docs/codefresh-yaml/variables/#github-release-variables) +- New pipeline variables for GitHub releases - [documentation]({{site.baseurl}}/docs/pipelines/variables/#github-release-variables) ### August 2018 @@ -572,7 +572,7 @@ toc: true - can visually see differences between releases - Misc: - UI and bug fixes. - - reorganized Helm docs, including samples on how package charts and push to registry: [Create Helm artifacts using Codefresh pipeline]({{site.baseurl}}/docs/new-helm/create-helm-artifacts-using-codefresh-pipeline/) + - reorganized Helm docs, including samples on how package charts and push to registry: [Create Helm artifacts using Codefresh pipeline]({{site.baseurl}}/docs/deployments/helm/using-helm-in-codefresh-pipeline/) - Pre-release of our brand new CLI at [https://github.com/codefresh-io/cli](https://github.com/codefresh-io/cli) - Using our new cli, you can now execute many pipelines in parallel with different configurations for each. diff --git a/images/examples/ruby/preview.png b/images/examples/ruby/preview.png new file mode 100644 index 000000000..90de349c9 Binary files /dev/null and b/images/examples/ruby/preview.png differ