Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Product settings #1031

Open
wants to merge 23 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions _data/nav.yml
Original file line number Diff line number Diff line change
Expand Up @@ -457,6 +457,23 @@
- title: Pipeline definitions YAML
url: "/what-is-the-codefresh-yaml"

- title: Products
url: "/products"
pages:
- title: About Products
url: "/about-products"
- title: Create Products
url: "/create-product"
- title: Configure Product Settings
url: "/configure-product-settings"
- title: Assigning applications
url: "/assign-applications"
- title: Configuring app version and promoted properties
url: "/promotion-version-properties"
- title: Configuring promotion flows
url: "/promotion-flow-triggers"



- title: Testing
url: "/testing"
Expand Down
434 changes: 59 additions & 375 deletions _docs/dashboards/gitops-products.md

Large diffs are not rendered by default.

422 changes: 422 additions & 0 deletions _docs/pipelines/specifications-latest-version.md

Large diffs are not rendered by default.

131 changes: 131 additions & 0 deletions _docs/products/about-products.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
---
title: "About Products"
description: "Create Products to group and deploy applications"
group: products
toc: true
---



>**NOTE**
This feature is currently in Beta.

Explore the power of Products for Argo CD applications and deployments in Codefresh GitOps.

Managing complex applications across multiple environments is a common challenge faced by developers and platform engineers. The diverse nature of applications and the variety of environments they deploy to can lead to fragmented management and deployment processes.
In Codefresh GitOps, Products serve as a strategic layer that bridges this gap. Products group different yet interconnected applications based on their similarities and dependencies.
By grouping applications, Products enhance Environments, allowing complete visibility for efficient deployment across them.

{% include
image.html
lightbox="true"
file="/images/gitops-products/expanded-view.png"
url="/images/gitops-products/expanded-view.png"
alt="GitOps Products dashboard (expanded view)"
caption="GitOps Products dashboard (expanded view)"
max-width="70%"
%}

Read more on the first dashboard for GitOps Environments and Products in this [blog](https://codefresh.io/blog/introducing-the-worlds-first-dashboard-for-gitops-environments/){:target="\_blank"}.


>**NOTE**
In the documentation, both Product (capitalized) and product (lowercase) refer to the same entity in Codefresh GitOps. They are used interchangeably for readability and consistency across the text.

## What is a Product in Codefresh GitOps?
In Codefresh GitOps, a Product is a custom entity that allows you to group interconnected Argo CD applications, providing a cohesive view of the applications as they progress through the development and deployment lifecycle.

Consider a practical scenario of numerous applications connected to billing or payment. Instead of monitoring and promoting each application separately, creating a Product for this enables you to track and manage them collectively.

The diagram illustrates how Argo CD applications connected to a Product are grouped by that product and organized by environments. It also shows applications not assigned to any Product.

{% include
image.html
lightbox="true"
file="/images/gitops-products/apps-grouped-by-product.png"
url="/images/gitops-products/apps-grouped-by-product.png"
alt="Argo CD applications grouped by Products and organized by Environments"
caption="Argo CD applications grouped by Products and organized by Environments"
max-width="70%"
%}

## Benefits of Products
* **Unified application management**
Managing complex Argo CD applications across multiple environments can be challenging.
By grouping similar Argo CD applications into a unit, Products allow you to also efficiently manage them cohesively.

* **Bridging applications and environments**
Products act as a bridge between applications and their respective environments. By linking applications to Products, you can easily track their deployment across different environments, providing clarity and control over your deployment pipelines.

* **Deployment visibility**
Deploying a Product generates a release that provides a comprehensive view of the entire deployment process. This includes visualization of Promotion Workflows across all environments, and detailed insights into issue tracking, Git activity, and other actions that led to the deployment, giving developers and stakeholders a clear understanding of the process.

* **Effortless creation**
As with Environments, creating a Product is equally straightforward. You can create Products from the UI, or declaratively through annotations in your application manifests.

* **Real-time insights with integrated views**
The Product Dashboard offers three distinct views-Pods, Git, and Features. These views provide real-time insights into the changes in the application repo, deployment details, code changes, and feature tracking. Whether you're a developer tracking the latest commits or a project manager monitoring feature releases, these integrated views offer valuable insights tailored to your role.



## Work with Products & applications

We have made it simple to work with Products and applications in environments.

##### Create
Begin by [Creating a Product]({{site.baseurl}}/docs/products/create-product/).



##### View
Once you create a product, you can see it in the Products page. Select the Product to drill down into the [Product Dashboard]({{site.baseurl}}/docs/dashboards/gitops-products/). The Product Dashboard offers a clear view of its applications in their respective environments, with additional information on the application.

{% include
image.html
lightbox="true"
file="/images/gitops-products/apps-grouped-by-product.png"
url="/images/gitops-products/apps-grouped-by-product.png"
alt="Argo CD applications grouped by products and organized in environments"
caption="Argo CD applications grouped by products and organized in environments"
max-width="70%"
%}


##### Configure

Once you create a Product, everything else you need to define for the Product, including its applications and promotion definitions are available in the Product Settings tab.

* [Assigning applications to the Product]({{site.baseurl}}/docs/products/assign-applications/)
Bring your applications into the picture by linking them to the product.

* [Configuring promotion settings]({{site.baseurl}}/docs/products/configure-product-settings/)
Fine-tune the promotion process by configuring the version source and specifying the attributes that should be promoted within applications in the product. This ensures that the correct versions and components are consistently promoted through each stage of deployment.

* [Configuring promotion flows and triggers]({{site.baseurl}}/docs/products/promotion-flow-triggers/)
Select specific Promotion Flows that match the Product, and customize the conditions that trigger each of these flows, automating and controlling when and how applications in the product are promoted.

{% include
image.html
lightbox="true"
file="/images/gitops-products/settings/product-settings-general.png"
url="/images/gitops-products/settings/product-settings-general.png"
alt="Product Settings tab to connect applications and configure promotion settings"
caption="Product Settings tab to connect applications and configure promotion settings"
max-width="70%"
%}

##### Monitor
[Monitor and track]({{site.baseurl}}/docs/promotions/releases) the Product's ongoing and historical promotions and deployments in the Releases tab.

{% include
image.html
lightbox="true"
file="/images/gitops-products/releases/product-releases-tab.png"
url="/images/gitops-products/releases/product-releases-tab.png"
alt="Product Release tab to monitor promotions"
caption="Product Release tab to monitor promotions"
max-width="70%"
%}


For how-to instructions, see [Configure product settings]({{site.baseurl}}/docs/products/configure-product-settings/).
126 changes: 126 additions & 0 deletions _docs/products/assign-applications.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
---
title: "Assigning applications to products"
description: "Manually or declaratively connect applications to Products"
group: products
toc: true
---

After creating products, the next step is to assign applications to it.
Assigning applications to products groups these applications into a single cohesive entity, enabling efficient management for promotions and deployments.

There are two methods of assigning applications to a product:

* Declarative assignment
Defines an annotation with the Product name in the application's manifest. If the Product doesn’t exist, Codefresh automatically creates it for you.
The annotation is committed and saved in Git as part of the application definition.
Fully GitOps-compatible, this is the preferred method.
For how-to instructions, see [Connect applications to products with annotations]({{site.baseurl}}/docs/products/configure-product-settings/#connect-applications-to-product-with-annotations).

* Manual assignment
A one-click action for quick assignment within Product Settings.
Unlike other UI actions, manual assignment does not require a commit action. Applications assigned to a product are not stored in the product's resource definition.
Recommended for testing purposes and not as the preferred method.
For how-to instructions, see [Manually assign unassigned applications]({{site.baseurl}}/docs/products/configure-product-settings/#manually-assign-unassigned-applications).

You can always unassign an application from a product, for declaratively assigned applications by [removing the annotation](#unassign-application-by-removing-annotation), and for manually assigned applications, by removing them through [Product Settings](#unassign-application-from-product-settings) .


<!---
Described in how to topic so no need to duplicate here
## Use annotations to connect applications to products
Connect an application to a product declaratively by adding the predefined annotation to the application's manifest.

This is one of two methods for assigning applications to products. The other method is to [manually assign applications to the product](#manually-assign-applications-to-products).

### Step 1: Copy the product's annotation
1. In the Codefresh UI, from the sidebar, select **Products**.
1. Do one of the following:
* Mouse over the row with the Product to which to assign the application, and click {::nomarkdown}<img src="../../../images/icons/edit.png?display=inline-block">{:/}.
* Click the Product for which to assign applications.
The **General** section in the Settings tab is displayed.
1. Below Connect Applications, copy the annotation to add to the application's manifest.


{% include
image.html
lightbox="true"
file="/images/gitops-products/settings/general-copy-annotation.png"
url="/images/gitops-products/settings/general-copy-annotation.png"
alt="Copy annotation for Product"
caption="Copy annotation for Product"
max-width="60%"
%}

### Step 2: Add the annotation to the application's manifest
1. Click the **Product Dashboard** tab.
1. From the context menu of the application to which to add the application, select **Application Info > Go to application**.
1. Click the **Configuration** tab, and switch to **YAML** mode.
1. Paste below `metadata.annotations`.

{% include
image.html
lightbox="true"
file="/images/gitops-products/app-with-annotation.png"
url="/images/gitops-products/app-with-annotation.png"
alt="Add annotation to application manifest"
caption="Add annotation to application manifest"
max-width="60%"
%}

{:start="7"}
1. Commit to save the changes.

If you return to the Products page and expand the product, you'll now see that the application is part of the Product.

## Manually assign applications to Products

Manually assign an application through the Product's Settings.

This is one of two methods for assigning applications to Products. The other method involves [adding annotations to the application's manifest](#use-annotations-to-connect-applications-to-products).


1. In the Codefresh UI, from the sidebar, select **Products**.
1. If needed, search for the application, or filter by Application or Environment.
1. Do one of the following:
* Mouse over the row with the Product to which to assign the application, and click {::nomarkdown}<img src="../../../images/icons/settings.png?display=inline-block">{:/}.
* Click the name of the Product for which to assign application.
The list of Unassigned apps is displayed in **Settings > Manage Applications**.

{% include
image.html
lightbox="true"
file="/images/gitops-products/unassigned-apps-in-product.png"
url="/images/gitops-products/unassigned-apps-in-product.png"
alt="Unassigned applications in Product"
caption="Unassigned applications in Product"
max-width="60%"
%}

{:start="4"}
1. If needed, again search for applications or filter unassigned applications by **Environment**.
1. To assign an application, click {::nomarkdown}<img src="../../../images/icons/runtime-topology-add-cluster.png?display=inline-block">{:/}.
1. To confirm the assignment, click **Save**.
If you have defined an Environment for the application, the application is automatically added to the Environment defined for it.


{% include
image.html
lightbox="true"
file="/images/gitops-products/assign-app-to-env.png"
url="/images/gitops-products/assign-app-to-env.png"
alt="Application assigned to Product in defined Environment"
caption="Application assigned to Product in defined Environment"
max-width="60%"
%}

-->




## Related articles
[Configuring promotion flows and triggers for products]({{site.baseurl}}/docs/products/promotion-flow-triggers/)
[Configuring version and promotable properties for products]({{site.baseurl}}/docs/products/manage-products/promotion-version-properties/)
[Tracking deployments for products]({{site.baseurl}}/docs/products/product-releases/)
[Product Dashboard]({{site.baseurl}}/docs/dashboards/gitops-products/)
[Creating products]({{site.baseurl}}/docs/products/create-product/)
Loading