Search documentation
karat

+

K

products overview

Products, Releases, and versions

Products are the software components that are deployable in Apollo. The Product concept is designed to be flexible to encompass all of the individual services that are installed in Environments.

Each version of a Product is created as a Release in Apollo. Releases include the Product's code and the metadata that Apollo uses to manage that Product.

This page describes Products and Releases in detail and how they relate to other key concepts in Apollo.

Maven coordinates

Apollo uses Maven coordinates to identify Products and Releases. A Maven coordinate has three components:

  • group: The group represents the organization that owns the Product. You should choose a group that represents your own organization. For example, com.palantir is a valid group. The group can be the same for multiple Products.
  • artifactId: The artifact ID is the name of the Product. For example, wordpress and apollo-demo-app are both valid artifact IDs. This field must be unique per group, meaning that a group can only own one Product with a given artifact ID. We recommend that artifact IDs are generally unique in Apollo.
  • version: This field represents the version of the Product that is running on your Entities. For example, 1.1.0 and 1.1.0-rc1 are both valid versions. Refer to the Product Version Specification for more information on versions in Apollo.

Below are examples of valid Maven coordinates:

com.palantir.apollo-developers:apollo-demo-app:1.0.0
com.helmcharts.bitnami.redis:redis:1.1.3-rc1
com.hashicorp:vault:15.8.6

Products

Products are uniquely identified by a Maven coordinate's group:artifactId, referred to as the ProductId in Apollo. For example, a Product called new-product could have the ProductId com.palantir.example:new-product.

Apollo supports Helm charts and Assets as Product types.

Products can be sourced from an internal repository and published as part of a Continuous Integration (CI) pipeline or pulled directly from an open source artifact store. Every Product has an owning Team in Apollo, whose members are responsible for managing Product maintenance windows and the Product's promotion pipeline configuration.

Learn more about managing Products.

Product Releases

A Product Release is a versioned code artifact that is published to the Product catalog. Each Product Release is identified by a Maven coordinate, where each version represents a different Release of the Product. For example:

com.palantir.apollo-developers:apollo-demo-app:1.0.0
com.palantir.apollo-developers:apollo-demo-app:1.1.0
com.palantir.apollo-developers:apollo-demo-app:1.2.0

Apollo displays all Releases that have been published with the same ProductId on the Product home page. Generally, a Team will be responsible for all Product Releases with a given ProductId.

You can view a Product and its associated Product Releases by selecting the Product name in the left menu panel and navigating to the Releases tab.

A Product page that displays three Product Releases.

Product catalog

The Product catalog is an inventory of all Products that have been published to an Apollo Hub. The catalog contains details for every Product Release, including existing dependencies, recall information, and the Release Channels to which it belongs.

Explore the Product catalog by selecting Products in the left menu panel. You can filter the list of Products to view Products without a contact team, Palantir Products, and Products linked to a specific contact team.

The Product catalog and the menu to filter Products by contact team.

Versions

Some Apollo functionality is only available if a version is orderable. For example, an Entity's reported version must be orderable so that Apollo can identify newer versions to which the Entity can be upgraded.

Apollo supports version numbers in the following formats:

Version TypeOrderableExampleRegex
Releaseyes1.0.0^[0-9]+\.[0-9]+\.[0-9]+$
Release Snapshotyes1.0.0-1-gaaaaaaa^[0-9]+\.[0-9]+\.[0-9]+-[0-9]+-g[a-f0-9]+$
Release Candidate (rc)yes1.0.0-rc1^[0-9]+\.[0-9]+\.[0-9]+-rc[0-9]+$
Release Candidate (rc) Snapshotyes1.0.0-rc1-1-gaaaaaaa^[0-9]+\.[0-9]+\.[0-9]+-rc[0-9]+-[0-9]+-g[a-f0-9]+$
Non-orderableno0.0.1-custom-description-42^[0-9]+\.[0-9]+\.[0-9]+(-[a-z0-9-]+)?(\.dirty)?$

Specifics of how versions are ordered are defined in the Apollo Product Spec - Product Version Specification. The example below illustrates how versions of different types interact with each other.

1.0.0-rc1 < 1.0.0-rc2 < 1.0.0-rc2-4-gaaaaaaa < 1.0.0-rc2-5-gccccccc < 1.0.0 < 1.0.1 < 1.1.0 < 2.0.0 < 2.0.0-3-gbbbbbb < 2.0.0-4-gaaaaaa < 2.1.0-rc1