Skip to content

Update Humanitec integration docs to contain newly supported resources #2502

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

Merged
merged 22 commits into from
Aug 5, 2025
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
b8629d5
Enhance Humanitec integration documentation by adding new templates f…
lordsarcastic Jul 2, 2025
7dee5c9
Update Humanitec integration documentation to include additional enti…
lordsarcastic Jul 2, 2025
c7caa0d
Merge branch 'main' into digcs-43
lordsarcastic Jul 2, 2025
8ebad67
Merge branch 'main' into digcs-43
lordsarcastic Jul 3, 2025
76c3589
Update humanitec-integration.md
kodjomiles Jul 3, 2025
a22b10c
Enhance Humanitec integration guide with detailed prerequisites, comm…
lordsarcastic Jul 8, 2025
f6334fe
Chore: Spaced instructions
lordsarcastic Jul 8, 2025
7e66ce9
Merge branch 'main' into digcs-43
lordsarcastic Jul 8, 2025
a17ba11
Merge branch 'main' into digcs-43
lordsarcastic Jul 8, 2025
79f8bf9
Refine Humanitec integration guide by updating the introduction for c…
lordsarcastic Jul 21, 2025
a639dd9
Merge remote-tracking branch 'origin/main' into digcs-43
lordsarcastic Jul 21, 2025
29e0c82
Merge branch 'main' into digcs-43
lordsarcastic Jul 22, 2025
72e734f
Merge branch 'main' into digcs-43
lordsarcastic Jul 22, 2025
041e658
Merge branch 'main' into digcs-43
lordsarcastic Jul 29, 2025
b026830
Fix: Indentation and period at the end of points
lordsarcastic Jul 29, 2025
7416c98
Merge branch 'main' into digcs-43
lordsarcastic Jul 29, 2025
27c5856
Merge branch 'main' into digcs-43
kodjomiles Aug 1, 2025
374dbca
Fix indentation so it falls under the right point
lordsarcastic Aug 1, 2025
b447f7c
Merge branch 'digcs-43' of github.com:port-labs/port-docs into digcs-43
lordsarcastic Aug 1, 2025
c2845f0
Merge branch 'main' into digcs-43
hadar-co Aug 5, 2025
f630ec9
Update docs/guides/all/humanitec-integration.md
kodjomiles Aug 5, 2025
0601b2b
Update docs/guides/all/humanitec-integration.md
kodjomiles Aug 5, 2025
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
111 changes: 84 additions & 27 deletions docs/guides/all/humanitec-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,44 @@ import HumanitecExporterMainScript from "/docs/guides/templates/humanitec/_human
import HumanitecExporterRequirements from "/docs/guides/templates/humanitec/_humanitec_exporter_requirements.mdx";
import HumanitecExporterPortClient from "/docs/guides/templates/humanitec/_humanitec_exporter_port_client.mdx";
import HumanitecExporterHumanitecClient from "/docs/guides/templates/humanitec/_humanitec_exporter_humanitec_client.mdx";
import HumanitecGroups from "/docs/guides/templates/humanitec/_humanitec_groups.mdx";
import HumanitecUsers from "/docs/guides/templates/humanitec/_humanitec_users.mdx";
import HumanitecPipelines from "/docs/guides/templates/humanitec/_humanitec_pipelines.mdx";
import HumanitecDeploymentDeltas from "/docs/guides/templates/humanitec/_humanitec_deployment_deltas.mdx";
import HumanitecDeploymentSets from "/docs/guides/templates/humanitec/_humanitec_deployment_sets.mdx";
import HumanitecSecretStores from "/docs/guides/templates/humanitec/_humanitec_secret_stores.mdx";
import HumanitecValueSetVersions from "/docs/guides/templates/humanitec/_humanitec_value_set_versions.mdx";
import HumanitecSharedValues from "/docs/guides/templates/humanitec/_humanitec_shared_values.mdx";


# Humanitec Integration

## Overview
In this guide, you are going to create a GitHub worklow integration to facilitate the ingestion of Humanitec applications, environments, workloads, resources, resource graphs, pipelines, deployment deltas, deployment sets, secret stores, shared values, value set versions, users, groups into your Port catalog on schedule.

In this example, you are going to create a github worklow integration to facilitate the ingestion of Humanitec applications, environments, workloads, resources and resource graphs into your port catalog on schedule
<img src="/img/guides/humanitecEnvironment.png" alt="Humanitec Integration" width="75%" border="1px" />

:::info Prerequisites
## Common use cases

1. In your GitHub repository, [go to **Settings > Secrets**](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository) and add the following secrets:
- `HUMANITEC_API_KEY` - [Humanitec API Key](https://developer.humanitec.com/platform-orchestrator/reference/api-references/#authentication)
- `HUMANITEC_ORG_ID` - [Humanitec Organization ID](https://developer.humanitec.com/concepts/organizations/)
- `PORT_CLIENT_ID` - Your port `client id` [How to get the credentials](https://docs.port.io/build-your-software-catalog/sync-data-to-catalog/api/#find-your-port-credentials).
- `PORT_CLIENT_SECRET` - Your port `client secret` [How to get the credentials](https://docs.port.io/build-your-software-catalog/sync-data-to-catalog/api/#find-your-port-credentials).
:::
- Empower platform teams to gain visibility and advanced insights into your Humanitec entities including application, environments, users, and groups from Port among other entities
- Track the status of changes to your Humanitec entities from Port
- Prepare your Port environment to build useful experiences for Platform Engineering teams with Self Service Actions.

## Prerequisites

## Port blueprints
This guide assumes the following:
- You have a Port account and have completed the [onboarding process](https://docs.port.io/getting-started/overview)
- You have a Humanitec account and a [Service User created](https://developer.humanitec.com/platform-orchestrator/docs/platform-orchestrator/security/service-users/) (You need an Administrator or Manager privilege to create a Service User)
- You have a GitHub account and a repository

Create the following blueprint definitions in port:

## Set up data model

As a first step, you need to create blueprint definitions in Port for the Humanitec entities you want to ingest. To do this follow the steps below:

1. Go to the [Builder](https://app.getport.io/settings/data-model/data-model) page in your Port organization
2. Click on the **+ Blueprint** button at the top of the page
3. Click on `{...} Edit JSON` button at the top right corner
4. Copy and paste the following blueprint JSON into the editor, repeating the process for each blueprint:

<HumanitecApplicationBlueprint/>

Expand All @@ -45,68 +64,106 @@ Create the following blueprint definitions in port:

<HumanitecResourceBlueprint/>

<HumanitecSecretStores/>

<HumanitecSharedValues/>

<HumanitecValueSetVersions/>

<HumanitecDeploymentSets/>

<HumanitecPipelines/>

<HumanitecDeploymentDeltas/>

<HumanitecUsers/>

<HumanitecGroups/>


:::tip Blueprint Properties
You may select the blueprints depending on what you want to track in your Humanitec account.
:::

## GitHub Workflow
## Set up the integration

:::tip
Fork our [humanitec integration repository](https://github.com/port-labs/humanitec-integration-script.git) to get started.
:::
1. Create the following Python files in a folder name `integration` folder at the root of your GitHub repository:
1. `main.py` - Orchestrates the synchronization of data from Humanitec to Port, ensuring that resource entities are accurately mirrored and updated on your port catalog.
2. `requirements.txt` - This file contains the dependencies or necessary external packages need to run the integration


### Add secrets to your GitHub repository

In your GitHub repository, [go to **Settings > Secrets**](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository) and add the following secrets:
- `HUMANITEC_API_KEY` - [Humanitec API Key](https://developer.humanitec.com/platform-orchestrator/docs/platform-orchestrator/security/service-users/#generate-an-api-token-from-a-service-user)
- `HUMANITEC_ORG_ID` - [Humanitec Organization ID](https://developer.humanitec.com/concepts/organizations/)
- `PORT_CLIENT_ID` - Your Port `client id` [How to get the credentials](https://docs.port.io/build-your-software-catalog/sync-data-to-catalog/api/#find-your-port-credentials).
- `PORT_CLIENT_SECRET` - Your Port `client secret` [How to get the credentials](https://docs.port.io/build-your-software-catalog/sync-data-to-catalog/api/#find-your-port-credentials).


### Create the Python files

1. Create the following Python files in a folder named `integration` at the base directory of your GitHub repository:
- `main.py` - Orchestrates the synchronization of data from Humanitec to Port, ensuring that resource entities are accurately mirrored and updated on your Port catalog.
- `requirements.txt` - This file contains the dependencies or necessary external packages need to run the integration



<details>
<summary>Main Executable Script</summary>
<summary><b>Main Executable Script (Click to expand)</b></summary>

<HumanitecExporterMainScript/>

</details>


<details>
<summary>Requirements</summary>
<summary><b>Requirements (Click to expand)</b></summary>

<HumanitecExporterRequirements/>

</details>


2. Create the following Python files in a folder named `clients` at the base directory of the `integration` folder:
1. `port_client.py` – Manages authentication and API requests to Port, facilitating the creation and updating of entities within Port's system.
2. `humanitec_client.py` – Handles API interactions with Humanitec, including retrieving data with caching mechanisms to optimize performance.
3. `cache.py` - Provides an in-memory caching mechanism with thread-safe operations for setting, retrieving, and deleting cache entries asynchronously.
- `port_client.py` – Manages authentication and API requests to Port, facilitating the creation and updating of entities within Port's system.
- `humanitec_client.py` – Handles API interactions with Humanitec, including retrieving data with caching mechanisms to optimize performance.
- `cache.py` - Provides an in-memory caching mechanism with thread-safe operations for setting, retrieving, and deleting cache entries asynchronously.



<details>
<summary>Port Client</summary>
<summary><b>Port Client (Click to expand)</b></summary>

<HumanitecExporterPortClient/>

</details>

<details>
<summary>Humanitec Client</summary>
<summary><b>Humanitec Client (Click to expand)</b></summary>

<HumanitecExporterHumanitecClient/>

</details>


<details>
<summary>Cache</summary>
<summary><b>Cache (Click to expand)</b></summary>

<HumanitecExporterCacheScript/>

</details>

3. Create the file `.github/workflows/humanitec-exporter.yaml` in the `.github/workflows` folder of your repository.
### Create the GitHub workflow

Create the file `.github/workflows/humanitec-exporter.yaml` in the `.github/workflows` folder of your repository.

:::tip Cron
Adjust the cron expression to fit your schedule. By default, the workflow is set to run at 2:00 AM every Monday ('0 2 * * 1').
:::


<details>
<summary>GitHub Workflow</summary>
<summary><b>GitHub Workflow (Click to expand)</b></summary>

```yaml showLineNumbers title="humanitec-exporter.yaml"
name: Ingest Humanitec Integration Resources
Expand Down Expand Up @@ -146,5 +203,5 @@ jobs:
</details>


Done! Any change that happens to your application, environment, workloads or resources in Humanitec will be synced to Port on the schedule interval defined in the GitHub workflow.
Done! Any change that happens to your application, environment, workloads, resources, resource graphs, pipelines, deployment deltas, deployment sets, secret stores, shared values, value set versions, users, groups in Humanitec will be synced to Port on the schedule interval defined in the GitHub workflow.

Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<details>
<summary>Humanitec Application Blueprint</summary>
<summary><b>Humanitec Application Blueprint (Click to expand)</b></summary>

```json showLineNumbers
{
Expand Down
59 changes: 59 additions & 0 deletions docs/guides/templates/humanitec/_humanitec_deployment_deltas.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<details>
<summary><b>Humanitec Deployment Deltas (Click to expand)</b></summary>

```json showLineNumbers
{
"identifier": "humanitecDeploymentDelta",
"title": "Humanitec Deployment Delta",
"icon": "Deployment",
"schema": {
"properties": {
"status": {
"title": "Status",
"description": "The status of the deployment delta",
"type": "string",
"icon": "DefaultProperty"
},
"createdAt": {
"title": "Created At",
"description": "The date and time when the deployment delta was created",
"type": "string",
"format": "date-time",
"icon": "DefaultProperty"
},
"createdBy": {
"title": "Created By",
"description": "The user who created the deployment delta",
"type": "string",
"icon": "DefaultProperty"
},
"comment": {
"title": "Comment",
"description": "Comment for the deployment delta",
"type": "string",
"icon": "DefaultProperty"
},
"environment": {
"title": "Environment",
"description": "The environment for the deployment delta",
"type": "string",
"icon": "DefaultProperty"
}
},
"required": []
},
"mirrorProperties": {},
"calculationProperties": {},
"aggregationProperties": {},
"relations": {
"humanitecApplication": {
"title": "Application",
"target": "humanitecApplication",
"required": false,
"many": false
}
}
}
```

</details>
53 changes: 53 additions & 0 deletions docs/guides/templates/humanitec/_humanitec_deployment_sets.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<details>
<summary><b>Humanitec Deployment Sets (Click to expand)</b></summary>

```json showLineNumbers
{
"identifier": "humanitecDeploymentSet",
"title": "Humanitec Deployment Set",
"icon": "Deployment",
"schema": {
"properties": {
"version": {
"title": "Version",
"description": "The version of the deployment set",
"type": "string",
"icon": "DefaultProperty"
},
"createdAt": {
"title": "Created At",
"description": "The date and time when the deployment set was created",
"type": "string",
"format": "date-time",
"icon": "DefaultProperty"
},
"createdBy": {
"title": "Created By",
"description": "The user who created the deployment set",
"type": "string",
"icon": "DefaultProperty"
},
"comment": {
"title": "Comment",
"description": "Comment for the deployment set",
"type": "string",
"icon": "DefaultProperty"
}
},
"required": []
},
"mirrorProperties": {},
"calculationProperties": {},
"aggregationProperties": {},
"relations": {
"humanitecApplication": {
"title": "Application",
"target": "humanitecApplication",
"required": false,
"many": false
}
}
}
```

</details>
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<details>
<summary> Humanitec Environment Blueprint</summary>
<summary><b>Humanitec Environment Blueprint (Click to expand)</b></summary>

```json showLineNumbers

Expand Down
Loading