Port product updates: December 2023

December 31, 2023

Port product updates: December 2023

Ready to start?

Port Product Updates: December 2023

2023 was a breakout year for Port, and these release notes mark the end of a year that was spent making Port better, together with our community. Since opening the roadmap (see here) we’ve received numerous insights about what you need us to do in Port. In 2024 we hope to do more, better and faster, so that you can deliver exceptional developer experience and productivity using Port.

Biggest

Drive engineering standards across the organization with initiative & scorecard dashboards 📊

We added ready-made and easy-to-create dashboards so that you can simply track engineering scorecards and initiatives. Once defined, the dashboards will appear in the catalog section.

  1. Scorecard dashboards track the status and progress of an entire scorecard, such as production readiness, security, quality, etc.
  2. Initiative dashboards track the status and progress of specific scorecard rules.

Just like any other page in Port, you can customize these dashboards to your liking (such as adding/removing dashboard widgets) ✨

You can create these dashboards by clicking on the “New” button in the “Catalog” section.

Initiative dashboard
New dashboard

Visualize your Kubernetes runtime with the improved Kubernetes integration🔌

We’ve improved Port’s Kubernetes integration and made it simpler with the following:

  1. The management of the integration configuration is now done via Port’s UI/API instead of saving a “Config.yaml” file in the Kubernetes cluster’s config map.
  2. Ability to resync the integration automatically after updating its configuration.
  3. Upon installing the integration, Port will automatically create several blueprints, pages, and dashboards out of the box, letting you easily get started visualizing your K8s with Port.

See how to visualize your Kubernetes runtime.

Kubernetes

View action run history with the action run widget⚡️

The “Action run” widget allows you to display a table with the run history of a specific self-service action. This new widget can be added to any dashboard.

The widget will display as columns the general details of each run (ID, status, start, end) and also the specific inputs of the action that was filled by the user who executed it.

Action run
Widget

Mediums

New integrations

We have added more integrations that are powered by Ocean 🌊

  1. ServiceNow - incident management (install here, see docs here).
  2. Terraform Cloud - track infrastructure and run status (install here, see docs here).

Dynamic “Me” filter for table

When filtering a user property, you can now select the "Me" option in the "Has any of" operator to display only the entities with the logged-in user in the specific user property.

This is very useful when creating personalized views. For example, creating a personal on-call view containing only the services with the logged-in user in the "On-call" user property.

Filter

Delete and update default pages

When a new blueprint is created, a default catalog page is created automatically.

In some cases, these pages can clutter the catalog side menu. Previously, they couldn't be deleted, and now you can! We hope this change will help you build a more clean and intuitive catalog for users 👩‍💻

Note - you can always re-create pages by clicking the "New" button in the "Catalog" menu and clicking on the "New catalog page" button.

Delete page

Smalls

Manage action permissions using IaC

You can now manage self-service action permissions using IaC. See docs for Terraform & Pulumi.

GitLab integration - support system hooks

When an organization has a lot of projects/repositories, it can be difficult to create an Ocean deployment config that will automatically create the webhooks on all those projects.

Using “System” hooks, the GitLab integration will create a single webhook for the entire GitLab instance.

See how to use system hooks.

Export backup of your Port account

We created a handy script to help you easily back up your entire Port account (blueprints, entities, actions, scorecards, and teams).

See how to export a backup of your account.

Swagger UI property - Async API V3 Support

You can now display V3 Async API specification using the Swagger UI blueprint property type.

Async

Install Port integrations using ArgoCD

We’ve added documentation about how to install the following integrations using ArgoCD - Port self-service actions agent, Kubernetes, and any Ocean integration.

{{cta_1}}

Check out Port's pre-populated demo and see what it's all about.

Check live demo

No email required

{{cta_2}}

Contact sales for a technical product walkthrough

Let’s start
{{cta_3}}

Open a free Port account. No credit card required

Let’s start
{{cta_4}}

Watch Port live coding videos - setting up an internal developer portal & platform

Let’s start
{{cta_5}}

Check out Port's pre-populated demo and see what it's all about.

(no email required)

Let’s start
{{cta_6}}

Contact sales for a technical product walkthrough

Let’s start
{{cta_7}}

Open a free Port account. No credit card required

Let’s start
{{cta_8}}

Watch Port live coding videos - setting up an internal developer portal & platform

Let’s start
{{cta-demo}}
{{reading-box-backstage-vs-port}}

Example JSON block

{
  "foo": "bar"
}

Order Domain

{
  "properties": {},
  "relations": {},
  "title": "Orders",
  "identifier": "Orders"
}

Cart System

{
  "properties": {},
  "relations": {
    "domain": "Orders"
  },
  "identifier": "Cart",
  "title": "Cart"
}

Products System

{
  "properties": {},
  "relations": {
    "domain": "Orders"
  },
  "identifier": "Products",
  "title": "Products"
}

Cart Resource

{
  "properties": {
    "type": "postgress"
  },
  "relations": {},
  "icon": "GPU",
  "title": "Cart SQL database",
  "identifier": "cart-sql-sb"
}

Cart API

{
 "identifier": "CartAPI",
 "title": "Cart API",
 "blueprint": "API",
 "properties": {
   "type": "Open API"
 },
 "relations": {
   "provider": "CartService"
 },
 "icon": "Link"
}

Core Kafka Library

{
  "properties": {
    "type": "library"
  },
  "relations": {
    "system": "Cart"
  },
  "title": "Core Kafka Library",
  "identifier": "CoreKafkaLibrary"
}

Core Payment Library

{
  "properties": {
    "type": "library"
  },
  "relations": {
    "system": "Cart"
  },
  "title": "Core Payment Library",
  "identifier": "CorePaymentLibrary"
}

Cart Service JSON

{
 "identifier": "CartService",
 "title": "Cart Service",
 "blueprint": "Component",
 "properties": {
   "type": "service"
 },
 "relations": {
   "system": "Cart",
   "resources": [
     "cart-sql-sb"
   ],
   "consumesApi": [],
   "components": [
     "CorePaymentLibrary",
     "CoreKafkaLibrary"
   ]
 },
 "icon": "Cloud"
}

Products Service JSON

{
  "identifier": "ProductsService",
  "title": "Products Service",
  "blueprint": "Component",
  "properties": {
    "type": "service"
  },
  "relations": {
    "system": "Products",
    "consumesApi": [
      "CartAPI"
    ],
    "components": []
  }
}

Component Blueprint

{
 "identifier": "Component",
 "title": "Component",
 "icon": "Cloud",
 "schema": {
   "properties": {
     "type": {
       "enum": [
         "service",
         "library"
       ],
       "icon": "Docs",
       "type": "string",
       "enumColors": {
         "service": "blue",
         "library": "green"
       }
     }
   },
   "required": []
 },
 "mirrorProperties": {},
 "formulaProperties": {},
 "calculationProperties": {},
 "relations": {
   "system": {
     "target": "System",
     "required": false,
     "many": false
   },
   "resources": {
     "target": "Resource",
     "required": false,
     "many": true
   },
   "consumesApi": {
     "target": "API",
     "required": false,
     "many": true
   },
   "components": {
     "target": "Component",
     "required": false,
     "many": true
   },
   "providesApi": {
     "target": "API",
     "required": false,
     "many": false
   }
 }
}

Resource Blueprint

{
 “identifier”: “Resource”,
 “title”: “Resource”,
 “icon”: “DevopsTool”,
 “schema”: {
   “properties”: {
     “type”: {
       “enum”: [
         “postgress”,
         “kafka-topic”,
         “rabbit-queue”,
         “s3-bucket”
       ],
       “icon”: “Docs”,
       “type”: “string”
     }
   },
   “required”: []
 },
 “mirrorProperties”: {},
 “formulaProperties”: {},
 “calculationProperties”: {},
 “relations”: {}
}

API Blueprint

{
 "identifier": "API",
 "title": "API",
 "icon": "Link",
 "schema": {
   "properties": {
     "type": {
       "type": "string",
       "enum": [
         "Open API",
         "grpc"
       ]
     }
   },
   "required": []
 },
 "mirrorProperties": {},
 "formulaProperties": {},
 "calculationProperties": {},
 "relations": {
   "provider": {
     "target": "Component",
     "required": true,
     "many": false
   }
 }
}

Domain Blueprint

{
 "identifier": "Domain",
 "title": "Domain",
 "icon": "Server",
 "schema": {
   "properties": {},
   "required": []
 },
 "mirrorProperties": {},
 "formulaProperties": {},
 "calculationProperties": {},
 "relations": {}
}

System Blueprint

{
 "identifier": "System",
 "title": "System",
 "icon": "DevopsTool",
 "schema": {
   "properties": {},
   "required": []
 },
 "mirrorProperties": {},
 "formulaProperties": {},
 "calculationProperties": {},
 "relations": {
   "domain": {
     "target": "Domain",
     "required": true,
     "many": false
   }
 }
}
{{tabel-1}}

Microservices SDLC

  • Scaffold a new microservice

  • Deploy (canary or blue-green)

  • Feature flagging

  • Revert

  • Lock deployments

  • Add Secret

  • Force merge pull request (skip tests on crises)

  • Add environment variable to service

  • Add IaC to the service

  • Upgrade package version

Development environments

  • Spin up a developer environment for 5 days

  • ETL mock data to environment

  • Invite developer to the environment

  • Extend TTL by 3 days

Cloud resources

  • Provision a cloud resource

  • Modify a cloud resource

  • Get permissions to access cloud resource

SRE actions

  • Update pod count

  • Update auto-scaling group

  • Execute incident response runbook automation

Data Engineering

  • Add / Remove / Update Column to table

  • Run Airflow DAG

  • Duplicate table

Backoffice

  • Change customer configuration

  • Update customer software version

  • Upgrade - Downgrade plan tier

  • Create - Delete customer

Machine learning actions

  • Train model

  • Pre-process dataset

  • Deploy

  • A/B testing traffic route

  • Revert

  • Spin up remote Jupyter notebook

{{tabel-2}}

Engineering tools

  • Observability

  • Tasks management

  • CI/CD

  • On-Call management

  • Troubleshooting tools

  • DevSecOps

  • Runbooks

Infrastructure

  • Cloud Resources

  • K8S

  • Containers & Serverless

  • IaC

  • Databases

  • Environments

  • Regions

Software and more

  • Microservices

  • Docker Images

  • Docs

  • APIs

  • 3rd parties

  • Runbooks

  • Cron jobs

Starting with Port is simple, fast and free.

Let’s start