Setup Blueprints
Define blueprint schemas to begin building your software catalog.
What is a blueprint?โ
A Blueprint is the generic building block in Port. It represents assets that can be managed in Port, such as Microservice
, Environments
, Packages
, Clusters
, Databases
, and many more.
Blueprints are completely customizable, and they support any number of properties the user chooses, all of which can be modified as you go.
๐ก Common blueprintsโ
Blueprints can be used to represent any asset in your software catalog, for example:
- Microservices;
- Packages;
- Package versions;
- CI jobs;
- K8s Clusters;
- Cloud accounts;
- Cloud environments;
- Developer environments;
- Service deployment;
- Pods;
- VMs;
- etc.
In this live demo example, we can see the DevPortal Builder page with all of the blueprints. ๐ฌ
Blueprint structureโ
Each blueprint is represented by a Json schema, as shown in the following section:
{
"identifier": "myIdentifier",
"title": "My title",
"description": "My description",
"icon": "My icon",
"calculationProperties": {},
"schema": {
"properties": {
"myProp1": {
"type": "my_type",
"title": "My title"
},
"myProp2": {
"type": "my_special_type",
"title": "My special title"
}
},
"required": []
},
"relations": {}
}
Structure tableโ
Field | Description | Notes |
---|---|---|
identifier | Unique identifier | Required. The identifier is used for API calls, programmatic access and distinguishing between different blueprints |
title | Name | Required. Human-readable name for the blueprint |
description | Description | The value is visible as a tooltip to users when hovering over the info icon in the UI |
icon | Icon for the blueprint and entities of the blueprint. | See the full icon list below |
calculationProperties | Contains the properties defined using calculation properties | Required |
mirrorProperties | Contains the properties defined using mirror properties | |
schema | An object containing two nested fields: properties and required . | Required. See the schema structure here |
All available properties are listed in the properties page
Schema objectโ
"schema": {
"properties": {},
"required": []
}
Schema field | Description |
---|---|
properties | See the properties section for more details. |
required | A list of the required properties, out of the properties object list. These are mandatory fields to fill in the UI form. |
Configure blueprints in Portโ
- API
- Terraform
- Pulumi
- UI
{
"identifier": "myIdentifier",
"title": "My title",
"description": "My description",
"icon": "My icon",
"calculationProperties": {},
"schema": {
"properties": {},
"required": []
},
"relations": {}
}
Check out Port's API reference to learn more.
resource "port_blueprint" "myBlueprint" {
title = "My blueprint"
icon = "My icon"
identifier = "myIdentifier"
description = "My description"
properties {
string_props = {
"myProperty" = {
type = "string"
title = "My Property"
}
"myUrlProperty" = {
title = "URL Property"
format = "url"
}
}
}
}
For full example, check the Terraform-Managed Blueprint Example page.
- Python
- TypeScript
- JavaScript
- GO
"""A Python Pulumi program"""
impor t pulumi
from port_pulumi import Blueprint
blueprint = Blueprint(
"myBlueprint",
identifier="myBlueprint",
title="My Blueprint",
icon="My icon",
description="My description",
properties=port.BlueprintPropertiesArgs(
string_props={
"myStringProp": port.BlueprintPropertiesStringPropsArgs(
title="My string", required=False
),
"myUrlProp": port.BlueprintPropertiesStringPropsArgs(
title="My url", required=False, format="url"
),
"myEmailProp": port.BlueprintPropertiesStringPropsArgs(
title="My email", required=False, format="email"
),
"myUserProp": port.BlueprintPropertiesStringPropsArgs(
title="My user", required=False, format="user"
),
"myTeamProp": port.BlueprintPropertiesStringPropsArgs(
title="My team", required=False, format="team"
),
"myDatetimeProp": port.BlueprintPropertiesStringPropsArgs(
title="My datetime", required=False, format="date-time"
),
"myTimerProp": port.BlueprintPropertiesStringPropsArgs(
title="My timer", required=False, format="timer"
),
"myYAMLProp": port.BlueprintPropertiesStringPropsArgs(
title="My yaml", required=False, format="yaml"
),
}
)
)
import * as pulumi from "@pulumi/pulumi";
import * as port from "@port-labs/port";
export const blueprint = new port.Blueprint("myBlueprint", {
identifier: "myBlueprint",
title: "My Blueprint",
icon: "My icon",
description: "My description",
properties: [
{
identifier: "language",
title: "Language",
type: "string",
required: true,
},
],
});
"use strict";
const pulumi = require("@pulumi/pulumi");
const port = require("@port-labs/port");
const entity = new port.Blueprint("myBlueprint", {
title: "My Blueprint",
identifier: "myBlueprint",
icon: "My icon",
description: "My description",
properties: [
{
name: "language",
value: "Node",
},
],
});
exports.title = entity.title;
package main
import (
"github.com/port-labs/pulumi-port/sdk/go/port"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
blueprint, err := port.NewBlueprint(ctx, "myBlueprint", &port.BlueprintArgs{
Identifier: pulumi.String("myBlueprint"),
Title: pulumi.String("My Blueprint"),
Icon: pulumi.String("My icon"),
Description: pulumi.String("My description"),
Properties: port.BlueprintPropertiesArgs{
StringProps: port.BlueprintPropertiesStringPropsMap{
"myStringProp": port.BlueprintPropertiesStringPropsArgs{
Title: pulumi.String("My string"),
Required: pulumi.Bool(false),
},
},
},
})
ctx.Export("blueprint", blueprint.Title)
if err != nil {
return err
}
return nil
})
}
For a full example, check the Pulumi-Managed Blueprint Example page.
- Go to the DevPortal Builder page;
- Click on Add blueprint at the top right hand corner;
- Configure your blueprint using the from:
Full icon listโ
API, Airflow, AmazonEKS, Ansible, ApiDoc, Aqua, Argo, ArgoRollouts, Aws, Azure, BitBucket, Bucket, Buddy, CPU, CPlusPlus, CSharp, Clickup, Cloud, Cluster, Codefresh, Confluence, Coralogix, Crossplane, Datadog, Day2Operation, DeployedAt, Deployment, DevopsTool, EC2, EU, Environment, Falcosidekick, Fluxcd, GKE, GPU, Git, GitLab, GitVersion, Github, GithubActions, Go, Google, GoogleCloud, GoogleCloudPlatform, GoogleComputeEngine, Grafana, Graphql, HashiCorp, Infinity, Istio, Jenkins, Jira, Kafka, Kiali, Kotlin, Lambda, Launchdarkly, Link, Lock, LucidCharts, Matlab, Microservice, MongoDb, Moon, NewRelic, Node, NodeJS, Notion, Okta, Package, Pearl, PostgreSQL, Prometheus, Pulumi, Python, R, React, RestApi, Ruby, S3, SDK, SQL, Scala, Sentry, Server, Service, Slack, Swagger, Swift, TS, Terraform, TwoUsers, Youtrack, Zipkin, checkmarx, css3, html5, java, js, kibana, logz, pagerduty, php, port, sonarqube, spinnaker