Backend types
Port's self-service actions and automations support a variety of backends that can be used when triggered.
The process contains the following steps:
- The action is triggered in Port - the trigger can either be a user executing a self-service action via the UI, or an automation triggering an action.
- The payload is sent to your backend - the payload, as defined by the action's creator, is sent to your backend. The backend can be a URL, a dedicated Kafka topic or one of your CI/CD workflows/pipelines.
- Your backend receives the payload and handles the request - depending on the action, your backend might open a PR, create a cloud resource, provision a new environment, or perform any other logic you would like.
- Your backend updates Port on the status of the execution - You can enrich the action run object in Port by adding logs, attaching links to other workflows or pipelines that help fulfill the request and add a final success/fail status once the action is complete.
Supported backendsโ
Port supports the backends listed below.
Examples can be found under each type, under the Self-service examples
section in the sidebar.
๐๏ธ Webhook
8 items
๐๏ธ GitHub workflow
1 item
๐๏ธ GitLab pipeline
2 items
๐๏ธ Jenkins Pipeline
The Jenkins backend allows you to trigger Jenkins pipelines for your self-service actions and automations, using webhooks.
๐๏ธ Azure Pipeline
The Azure backend can trigger Azure pipelines for both self-service actions and automations, using incoming webhook triggers.
๐๏ธ Create/update entity
In some cases, we don't want to run complex logic via a workflow or pipeline, but rather want our backend to simply create or update an entity in our software catalog.
๐๏ธ Send Slack message
The Send Slack message backend type allows you to send a message to a Slack channel, using a webhook URL.
JSON structureโ
For both self-service actions and automations, the backend is defined under the invocationMethod
object.
The following example shows a backend definition that uses a GitHub workflow:
{
"invocationMethod": {
"type": "GITHUB",
"org": "Port-samples",
"repo": "Port-actions",
"workflow": "reportBug.yaml",
"workflowInputs": {
"port_context": {
"user_first_name": "{{ .trigger.by.user.firstName }}",
"user_last_name": "{{ .trigger.by.user.lastName }}",
"runId": "{{.run.id}}"
},
"short_title": "{{ .inputs.short_title }}",
"description": "{{ .inputs.description }}"
},
"reportWorkflowStatus": true
},
}
Invocation method structure fieldsโ
The type
field defines the action's backend type, and can have one of the following values: WEBHOOK
, GITHUB
, GITLAB
, KAFKA
, UPSERT_ENTITY
.
Depending on the backend type you choose, the available fields will be different:
- Webhook
- Github
- Gitlab
- Azure DevOps
- Kafka
- Create/update entity
invocationMethod.type
should be set to WEBHOOK
.
Field | Type | Description | Example values |
---|---|---|---|
agent | boolean | Defines whether to use Port Agent for execution or not. | true or false |
url | string | Defines the webhook URL to which Port will send the action via an HTTP POST request. | https://example.com |
method | string | Defines the HTTP method to be used for the request. | POST , PUT , DELETE , PATCH |
synchronized | boolean | If true, the action will be executed synchronously. | true or false |
headers | object | An object containing the payload headers to be sent to the webhook in each execution, in "key":"value" pairs. | |
body | object | Defines the payload that will be sent to the backend upon execution of the action. An object containing "key":"value" pairs. |
invocationMethod.type
should be set to GITHUB
.
Field | Type | Description | Example values |
---|---|---|---|
org | string | The GitHub organization name. | port-labs |
repo | string | The GitHub repository name. | port-docs |
workflow | string | Defines the GitHub workflow ID to run (You can also pass the workflow file name as a string). | workflow.yml |
reportWorkflowStatus | boolean | A flag to control whether to automatically update the Port run object status (SUCCESS/FAILURE) at the end of the workflow (default: true ). | true or false |
workflowInputs | object | Defines the payload that will be sent to the backend upon execution of the action. An object containing "key":"value" pairs. |
invocationMethod.type
should be set to GITLAB
.
Field | Type | Description | Example values |
---|---|---|---|
defaultRef | string | The default ref (branch/tag name) we want the action to use. defaultRef can be overridden dynamically, by adding ref as user input. Can only be used if type is set to GITLAB . | |
projectName | string | The GitLab project name. Can only be used if type is set to GITLAB . | port |
groupName | string | The GitLab group name. Can only be used if type is set to GITLAB . | port-labs |
pipelineVariables | object | Defines the payload that will be sent to the backend upon execution of the action. An object containing "key":"value" pairs. |
invocationMethod.type
should be set to AZURE_DEVOPS
.
Field | Type | Description | Example values |
---|---|---|---|
webhook | string | The name of the webhook resource in the Azure YAML pipeline file. | |
org | string | The Azure DevOps organization in which the pipeline is located. | port-labs |
payload | object | Defines the payload that will be sent to the backend upon execution of the action. An object containing "key":"value" pairs. |
invocationMethod.type
should be set to KAFKA
.
Field | Type | Description | Example values |
---|---|---|---|
payload | object | Defines the payload that will be sent to the backend upon execution of the action. An object containing "key":"value" pairs. |
invocationMethod.type
should be set to UPSERT_ENTITY
.
Field | Type | Description | Example values |
---|---|---|---|
blueprintIdentifier | string | The identifier of the blueprint from which the entity will be created/updated. | service |
mapping | object | Defines the properties of the entity that will be created/updated. | {"name":"newEntityName"} |