-
Notifications
You must be signed in to change notification settings - Fork 58
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
base: main
Are you sure you want to change the base?
Changes from all commits
b8629d5
7dee5c9
c7caa0d
8ebad67
76c3589
a22b10c
f6334fe
7e66ce9
a17ba11
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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" /> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. the image doesnt appear, looks like a small typo |
||
|
||
:::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/> | ||
|
||
|
@@ -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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this is quite strange as a callout. What would you like the user to do here? perhaps make this a regular step and clarify |
||
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: | ||
lordsarcastic marked this conversation as resolved.
Show resolved
Hide resolved
|
||
- `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 | ||
|
@@ -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 |
---|---|---|
@@ -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> |
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> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.