GitLab vendor logo

Vendor

GitLab

Product

Method

REST

Category

CI/CD

Project Type

Workflow Project


View Repository
Workflow

GitLab - Modular Automations

Overview

The integration of Itential and GitLab enables network teams to utilize GitLab's REST API to build automations that can include common tasks for version control of assets. This is a library of related automations that can be used as modular components in your own larger, end-to-end workflows.

Workflows

NameOverview
Create Branch - GitLab - RESTWorkflow to create a new branch for an existing repository in GitLab.
Create Merge Request - GitLab - RESTWorkflow that creates a new merge request for an existing branch in GitLab.
Create Project - GitLab - RESTThis workflow creates a new GitLab repository with or without using a template.
Get Branch - GitLab - RESTWorkflow to get a branch for an existing repository in GitLab.
Get Diff for Merge - GitLab - RESTWorkflow that gets a diff for a merge request in GitLab.
Get File - GitLab - RESTWorkflow that get a file from a repository in GitLab.
Push Commit to Branch - GitLab - RESTPush a commit to a branch in Gitlab
Update Project Variables - GitLab - RESTWorkflow to update CI/CD variables in GitLab

For further technical details on how to install and use this Workflow Project, please click the Technical Documentation tab.

Table of Contents

Getting Started

This section is helpful for deployments as it provides you with pertinent information on prerequisites and properties.

Helpful Background Information

Workflows often include logic that varies from business to business. As a result, we often find that our Workflow Projects are more useful as modular components that can be incorporated into a larger process. In addition, they often can add value as a learning tool on how we integrate with other systems and how we do things within the Itential Automation Platform.

While these can be utilized, you may find more value in using them as a starting point to build around.

Prerequisites

Itential Workflow Projects are built and tested on particular versions of IAP. In addition, Workflow Projects are often dependent on external systems and as such, these Workflow Projects will have dependencies on these other systems. This version of GitLab - REST has been tested with:

  • IAP 2023.2

External Dependencies

NameOS VersionAPI Version
Gitlab16.8

Adapters

NameVersionConfiguration Notes
adapter-gitlab0.13.1

How to Install

To install the Workflow Project:

  • Verify you are running a supported version of the Itential Automation Platform (IAP) as listed above in the Supported IAP Versions section in order to install the Example Project.
  • Import the Example Project in Admin Essentials.

Testing

Cypress is generally used to test all Itential Example Projects. While Cypress is an opensource tool, at Itential we have internal libraries that have been built around Cypress to allow us to test with a deployed IAP.

When certifying our Example Projects for a release of IAP we run these tests against the particular version of IAP and create a release branch in GitLab. If you do not see the Example Project available in your version of IAP please contact Itential.

While Itential tests this Example Project and its capabilities, it is often the case the customer environments offer their own unique circumstances. Therefore, it is our recommendation that you deploy this Example Project into a development/testing environment in which you can test the Example Project.

Using this Workflow Project

Workflow Projects contain 1 or more workflows. Each of these workflows have different inputs and outputs.

Create Branch - GitLab - REST

Workflow to create a new branch for an existing repository in GitLab.

Capabilities include:

  • Create a branch in a GitLab repository.

Entry Point IAP Component

The primary IAP component to run Create Branch - GitLab - REST is listed below:

IAP Component NameIAP Component Type
Create Branch - GitLab - RESTWorkflow

Inputs

The following table lists the inputs for Create Branch - GitLab - REST:

NameTypeRequiredDescriptionExample Value
adapterIdstringyesId of the GitLab adapter instance to use.
gitlab
branchNamestringyesName of new branch to create.
new-feature
sourceBranchNamestringyesName of branch to create the new branch from.
master
projectPathstringyesFull path to the gitlab repository including subgroups. Can optionally use project id instead.
itentialopensource/adapters/devops-netops/adapter-gitlab

Outputs

The following table lists the outputs for Create Branch - GitLab - REST:

NameTypeDescriptionExample Value
createdBranchobjectResponse from successful branch creation.
{
  "icode": "AD.201",
  "response": {
    "name": "my_branch",
    "commit": {
      "id": "fffb9e7b72d22929fb239ff56158",
      "short_id": "fffb9e7b",
      "created_at": "2024-01-25T22:03:03.000+00:00",
      "parent_ids": [
        "e3ca3a503703c35801e7416e654"
      ],
      "title": "update test",
      "message": "update test",
      "author_name": "Test User",
      "author_email": "test.user@itential.com",
      "authored_date": "2024-01-25T22:03:03.000+00:00",
      "committer_name": "Test User",
      "committer_email": "test.user@itential.com",
      "committed_date": "2024-01-25T22:03:03.000+00:00",
      "trailers": {},
      "extended_trailers": {},
      "web_url": "https://gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test/-/commit/fffb9e7b72d22929b1c24cd99ceffb239ff56158"
    },
    "merged": false,
    "protected": false,
    "developers_can_push": false,
    "developers_can_merge": false,
    "can_push": true,
    "default": false,
    "web_url": "https://gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test/-/tree/my_branch"
  }
}
gitlabErrorobjectError response from branch creation failure.
{
  "icode": "AD.500",
  "IAPerror": {
    "origin": "gitlab-connectorRest-handleEndResponse",
    "displayString": "Error 404 received on request",
    "recommendation": "Verify the request is accurate via debug logs and postman",
    "code": 404,
    "raw_response": {
      "status": "success",
      "code": 404,
      "headers": {
        "date": "Fri, 26 Jan 2024 17:31:52 GMT",
        "content-type": "application/json",
        "content-length": 36,
        "connection": "close",
        "cache-control": "no-cache",
        "content-security-policy": "default-src 'none'",
        "vary": "Origin",
        "x-content-type-options": "nosniff",
        "x-frame-options": "SAMEORIGIN",
        "x-runtime": 0.074492,
        "strict-transport-security": "max-age=31536000",
        "referrer-policy": "strict-origin-when-cross-origin",
        "cf-cache-status": "DYNAMIC",
        "group": "cf-nel",
        "max_age": 604800
      },
      "nel": {
        "success_fraction": 0.01,
        "report_to": "cf-nel",
        "max_age": 604800
      }
    },
    "response": {
      "message": "404 Project Not Found"
    },
    "redirects": 0,
    "tripTime": "208ms",
    "reqHdr": {
      "Content-Type": "application/json",
      "Accept": "application/json",
      "Content-length": 161,
      "Private-Token": "****"
    }
  },
  "response": {
    "message": "404 Project Not Found"
  }
}

Query Output

No object to query upon success

Example Inputs and Outputs

Example 1

Input:

{
  "adapterId": "gitlab",
  "branchName": "my_branch",
  "sourceBranchName": "main",
  "projectPath": "itentialopensource/pre-built-automations/staging/pre-built-test/test_repo"
} 

Output:

{
  "createdBranch": {
    "icode": "AD.201",
    "response": {
      "name": "my_branch",
      "commit": {
        "id": "fffb9e7b72d22929fb239ff56158",
        "short_id": "fffb9e7b",
        "created_at": "2024-01-25T22:03:03.000+00:00",
        "parent_ids": [
          "e3ca3a503703c35801e7416e654"
        ],
        "title": "update test",
        "message": "update test",
        "author_name": "Test User",
        "author_email": "test.user@itential.com",
        "authored_date": "2024-01-25T22:03:03.000+00:00",
        "committer_name": "Test User",
        "committer_email": "test.user@itential.com",
        "committed_date": "2024-01-25T22:03:03.000+00:00",
        "trailers": {},
        "extended_trailers": {},
        "web_url": "https://gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test/-/commit/fffb9e7b72d22929b1c24cd99ceffb239ff56158"
      },
      "merged": false,
      "protected": false,
      "developers_can_push": false,
      "developers_can_merge": false,
      "can_push": true,
      "default": false,
      "web_url": "https://gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test/-/tree/my_branch"
    }
  }
} 

API Links

API NameAPI Documentation LinkAPI Link Visibility
Branches API - GitLabhttps://docs.gitlab.com/ee/api/branches.htmlPublic

Create Merge Request - GitLab - REST

Workflow that creates a new merge request for an existing branch in GitLab.

Capabilities include:

  • Create a new merge request in a GitLab repository.

Entry Point IAP Component

The primary IAP component to run Create Merge Request - GitLab - REST is listed below:

IAP Component NameIAP Component Type
Create Merge Request - GitLab - RESTWorkflow

Inputs

The following table lists the inputs for Create Merge Request - GitLab - REST:

NameTypeRequiredDescriptionExample Value
adapterIdstringyesId of the GitLab adapter instance to use.
gitlab
sourceBranchstringyesName of branch to merge.
new-feature
targetBranchstringyesName of branch to merge into.
master
mergeRequestTitlestringyesTitle for merge request
New Feature for XYZ
projectPathstringyesFull path to the gitlab repository including subgroups. Can optionally use project id instead.
itentialopensource/adapters/devops-netops/adapter-gitlab

Outputs

The following table lists the outputs for Create Merge Request - GitLab - REST:

NameTypeDescriptionExample Value
gitlabErrorobjectError response from create merge request failure.
{
  "icode": "AD.500",
  "IAPerror": {
    "origin": "gitlab-connectorRest-handleEndResponse",
    "displayString": "Error 404 received on request",
    "recommendation": "Verify the request is accurate via debug logs and postman",
    "code": 404,
    "raw_response": {
      "status": "success",
      "code": 404,
      "headers": {
        "date": "Fri, 26 Jan 2024 17:31:52 GMT",
        "content-type": "application/json",
        "content-length": 36,
        "connection": "close",
        "cache-control": "no-cache",
        "content-security-policy": "default-src 'none'",
        "vary": "Origin",
        "x-content-type-options": "nosniff",
        "x-frame-options": "SAMEORIGIN",
        "x-runtime": 0.074492,
        "strict-transport-security": "max-age=31536000",
        "referrer-policy": "strict-origin-when-cross-origin",
        "cf-cache-status": "DYNAMIC",
        "group": "cf-nel",
        "max_age": 604800
      },
      "nel": {
        "success_fraction": 0.01,
        "report_to": "cf-nel",
        "max_age": 604800
      }
    },
    "response": {
      "message": "404 Project Not Found"
    },
    "redirects": 0,
    "tripTime": "208ms",
    "reqHdr": {
      "Content-Type": "application/json",
      "Accept": "application/json",
      "Content-length": 161,
      "Private-Token": "****"
    }
  },
  "response": {
    "message": "404 Project Not Found"
  }
}

Query Output

There are no query output examples for Create Merge Request - GitLab - REST.

Example Inputs and Outputs

Example 1

Input:

{
  "adapterId": "gitlab",
  "sourceBranch": "my_branch",
  "targetBranch": "main",
  "mergeRequestTitle": "merge into main",
  "projectPath": "itentialopensource/pre-built-automations/staging/pre-built-test/test_repo"
} 

API Links

API NameAPI Documentation LinkAPI Link Visibility
Merge Requests API - GitLabhttps://docs.gitlab.com/ee/api/merge_requests.htmlPublic

Create Project - GitLab - REST

This workflow creates a new GitLab repository with or without using a template.

Capabilities include:

  • Create a new GitLab repository.

Entry Point IAP Component

The primary IAP component to run Create Project - GitLab - REST is listed below:

IAP Component NameIAP Component Type
Create Project - GitLab - RESTWorkflow

Inputs

The following table lists the inputs for Create Project - GitLab - REST:

NameTypeRequiredDescriptionExample Value
group_idstringyesGroup ID for group to create the new project within
36426787
new_project_namestringyesName for the new project.
my_repo
adapterIdstringyesId of the GitLab adapter instance to use.
gitlab
template_namestringyesName for the template to create the project from. If not using a template provide an empty string ("")
template_a
project_descriptionstringyesDescription for the repository
Project for use case x.
template_group_idstringyesGroup Id for project template. If not using a template provide an empty string ("")
123532

Outputs

The following table lists the outputs for Create Project - GitLab - REST:

NameTypeDescriptionExample Value
ReturnStatusobjectReturn status from gitlab for project creation
{
  "status": "SUCCESS",
  "message": "Project Created Successfully",
  "errors": [],
  "response": {
    "create_project": {
      "icode": "AD.201",
      "response": {
        "pathParam": "test",
        "tagList": [],
        "createdAt": "2024-01-25T20:28:55.636Z",
        "id": 54252513,
        "description": "Migration test",
        "name": "test",
        "name_with_namespace": "Itential Open Source / pre-built automations / staging / Pre-Built Test / test",
        "path_with_namespace": "itentialopensource/pre-built-automations/staging/pre-built-test/test",
        "default_branch": "main",
        "topics": [],
        "ssh_url_to_repo": "git@gitlab.com:itentialopensource/pre-built-automations/staging/pre-built-test/test.git",
        "http_url_to_repo": "https://gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test.git",
        "web_url": "https://gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test",
        "readme_url": null,
        "forks_count": 0,
        "avatar_url": null,
        "star_count": 0,
        "last_activity_at": "2024-01-25T20:28:55.636Z",
        "namespace": {
          "id": 67722271,
          "name": "Pre-Built Test",
          "path": "pre-built-test",
          "kind": "group",
          "full_path": "itentialopensource/pre-built-automations/staging/pre-built-test",
          "parent_id": 6535607,
          "avatar_url": null,
          "web_url": "https://gitlab.com/groups/itentialopensource/pre-built-automations/staging/pre-built-test"
        },
        "container_registry_image_prefix": "registry.gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test",
        "_links": {
          "self": "https://gitlab.com/api/v4/projects/54252513",
          "issues": "https://gitlab.com/api/v4/projects/54252513/issues",
          "merge_requests": "https://gitlab.com/api/v4/projects/54252513/merge_requests",
          "repo_branches": "https://gitlab.com/api/v4/projects/54252513/repository/branches",
          "labels": "https://gitlab.com/api/v4/projects/54252513/labels",
          "events": "https://gitlab.com/api/v4/projects/54252513/events",
          "members": "https://gitlab.com/api/v4/projects/54252513/members",
          "cluster_agents": "https://gitlab.com/api/v4/projects/54252513/cluster_agents"
        },
        "code_suggestions": true,
        "packages_enabled": true,
        "empty_repo": true,
        "archived": false,
        "visibility": "private",
        "resolve_outdated_diff_discussions": false,
        "container_expiration_policy": {
          "cadence": "1d",
          "enabled": false,
          "keep_n": 10,
          "older_than": "90d",
          "name_regex": ".*",
          "name_regex_keep": null,
          "next_run_at": "2024-01-26T20:28:55.672Z"
        },
        "issues_enabled": true,
        "merge_requests_enabled": true,
        "wiki_enabled": true,
        "jobs_enabled": true,
        "snippets_enabled": true,
        "container_registry_enabled": true,
        "service_desk_enabled": true,
        "service_desk_address": "contact-project+itentialopensource-pre-built-automations-staging-pre-built-test-54252513-issue-@incoming.gitlab.com",
        "can_create_merge_request_in": true,
        "issues_access_level": "enabled",
        "repository_access_level": "enabled",
        "merge_requests_access_level": "enabled",
        "forking_access_level": "enabled",
        "wiki_access_level": "enabled",
        "builds_access_level": "enabled",
        "snippets_access_level": "enabled",
        "pages_access_level": "private",
        "analytics_access_level": "enabled",
        "container_registry_access_level": "enabled",
        "security_and_compliance_access_level": "private",
        "releases_access_level": "enabled",
        "environments_access_level": "enabled",
        "feature_flags_access_level": "enabled",
        "infrastructure_access_level": "enabled",
        "monitor_access_level": "enabled",
        "model_experiments_access_level": "enabled",
        "model_registry_access_level": "enabled",
        "emails_disabled": false,
        "emails_enabled": true,
        "shared_runners_enabled": true,
        "lfs_enabled": true,
        "creator_id": 9009869,
        "import_url": null,
        "import_type": null,
        "import_status": "none",
        "import_error": null,
        "open_issues_count": 0,
        "description_html": "

Migration test

", "updated_at": "2024-01-25T20:28:55.636Z", "ci_default_git_depth": 20, "ci_forward_deployment_enabled": true, "ci_forward_deployment_rollback_allowed": true, "ci_job_token_scope_enabled": false, "ci_separated_caches": true, "ci_allow_fork_pipelines_to_run_in_parent_project": true, "build_git_strategy": "fetch", "keep_latest_artifact": true, "restrict_user_defined_variables": false, "runners_token": "GR1348941bZnCnAomMJmVT3RzWypG", "runner_token_expiration_interval": null, "group_runners_enabled": true, "auto_cancel_pending_pipelines": "enabled", "build_timeout": 3600, "auto_devops_enabled": false, "auto_devops_deploy_strategy": "continuous", "ci_config_path": "", "public_jobs": true, "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, "allow_merge_on_skipped_pipeline": null, "request_access_enabled": true, "only_allow_merge_if_all_discussions_are_resolved": false, "remove_source_branch_after_merge": true, "printing_merge_request_link_enabled": true, "merge_method": "merge", "squash_option": "default_off", "enforce_auth_checks_on_uploads": true, "suggestion_commit_message": null, "merge_commit_template": null, "squash_commit_template": null, "issue_branch_template": null, "autoclose_referenced_issues": true, "approvals_before_merge": 0, "mirror": false, "external_authorization_classification_label": "", "marked_for_deletion_at": null, "marked_for_deletion_on": null, "requirements_enabled": true, "requirements_access_level": "enabled", "security_and_compliance_enabled": true, "compliance_frameworks": [], "issues_template": null, "merge_requests_template": null, "ci_restrict_pipeline_cancellation_role": "developer", "merge_pipelines_enabled": false, "merge_trains_enabled": false, "merge_trains_skip_train_allowed": false, "only_allow_merge_if_all_status_checks_passed": false, "allow_pipeline_trigger_approve_deployment": false, "prevent_merge_without_jira_issue": false } } }, "group_id": 67722271, "project_id": 54252513 }

Query Output

There are no query output examples for Create Project - GitLab - REST.

Example Inputs and Outputs

Example 1

Input:

{
  "group_id": "67722271",
  "new_project_name": "project_test",
  "adapterId": "gitlab",
  "template_name": "",
  "project_description": "My test",
  "template_group_id": "",
  "verbose": true
} 

Output:

{
  "ReturnStatus": {
    "status": "SUCCESS",
    "message": "Project Created Successfully",
    "errors": [],
    "response": {
      "create_project": {
        "icode": "AD.201",
        "response": {
          "pathParam": "test",
          "tagList": [],
          "createdAt": "2024-01-25T20:28:55.636Z",
          "id": 54252513,
          "description": "Migration test",
          "name": "test",
          "name_with_namespace": "Itential Open Source / pre-built automations / staging / Pre-Built Test / test",
          "path_with_namespace": "itentialopensource/pre-built-automations/staging/pre-built-test/test",
          "default_branch": "main",
          "topics": [],
          "ssh_url_to_repo": "git@gitlab.com:itentialopensource/pre-built-automations/staging/pre-built-test/test.git",
          "http_url_to_repo": "https://gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test.git",
          "web_url": "https://gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test",
          "readme_url": null,
          "forks_count": 0,
          "avatar_url": null,
          "star_count": 0,
          "last_activity_at": "2024-01-25T20:28:55.636Z",
          "namespace": {
            "id": 67722271,
            "name": "Pre-Built Test",
            "path": "pre-built-test",
            "kind": "group",
            "full_path": "itentialopensource/pre-built-automations/staging/pre-built-test",
            "parent_id": 6535607,
            "avatar_url": null,
            "web_url": "https://gitlab.com/groups/itentialopensource/pre-built-automations/staging/pre-built-test"
          },
          "container_registry_image_prefix": "registry.gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test",
          "_links": {
            "self": "https://gitlab.com/api/v4/projects/54252513",
            "issues": "https://gitlab.com/api/v4/projects/54252513/issues",
            "merge_requests": "https://gitlab.com/api/v4/projects/54252513/merge_requests",
            "repo_branches": "https://gitlab.com/api/v4/projects/54252513/repository/branches",
            "labels": "https://gitlab.com/api/v4/projects/54252513/labels",
            "events": "https://gitlab.com/api/v4/projects/54252513/events",
            "members": "https://gitlab.com/api/v4/projects/54252513/members",
            "cluster_agents": "https://gitlab.com/api/v4/projects/54252513/cluster_agents"
          },
          "code_suggestions": true,
          "packages_enabled": true,
          "empty_repo": true,
          "archived": false,
          "visibility": "private",
          "resolve_outdated_diff_discussions": false,
          "container_expiration_policy": {
            "cadence": "1d",
            "enabled": false,
            "keep_n": 10,
            "older_than": "90d",
            "name_regex": ".*",
            "name_regex_keep": null,
            "next_run_at": "2024-01-26T20:28:55.672Z"
          },
          "issues_enabled": true,
          "merge_requests_enabled": true,
          "wiki_enabled": true,
          "jobs_enabled": true,
          "snippets_enabled": true,
          "container_registry_enabled": true,
          "service_desk_enabled": true,
          "service_desk_address": "contact-project+itentialopensource-pre-built-automations-staging-pre-built-test-54252513-issue-@incoming.gitlab.com",
          "can_create_merge_request_in": true,
          "issues_access_level": "enabled",
          "repository_access_level": "enabled",
          "merge_requests_access_level": "enabled",
          "forking_access_level": "enabled",
          "wiki_access_level": "enabled",
          "builds_access_level": "enabled",
          "snippets_access_level": "enabled",
          "pages_access_level": "private",
          "analytics_access_level": "enabled",
          "container_registry_access_level": "enabled",
          "security_and_compliance_access_level": "private",
          "releases_access_level": "enabled",
          "environments_access_level": "enabled",
          "feature_flags_access_level": "enabled",
          "infrastructure_access_level": "enabled",
          "monitor_access_level": "enabled",
          "model_experiments_access_level": "enabled",
          "model_registry_access_level": "enabled",
          "emails_disabled": false,
          "emails_enabled": true,
          "shared_runners_enabled": true,
          "lfs_enabled": true,
          "creator_id": 9009869,
          "import_url": null,
          "import_type": null,
          "import_status": "none",
          "import_error": null,
          "open_issues_count": 0,
          "description_html": "

Migration test

", "updated_at": "2024-01-25T20:28:55.636Z", "ci_default_git_depth": 20, "ci_forward_deployment_enabled": true, "ci_forward_deployment_rollback_allowed": true, "ci_job_token_scope_enabled": false, "ci_separated_caches": true, "ci_allow_fork_pipelines_to_run_in_parent_project": true, "build_git_strategy": "fetch", "keep_latest_artifact": true, "restrict_user_defined_variables": false, "runners_token": "GR1348941bZnCnAomMJmVT3RzWypG", "runner_token_expiration_interval": null, "group_runners_enabled": true, "auto_cancel_pending_pipelines": "enabled", "build_timeout": 3600, "auto_devops_enabled": false, "auto_devops_deploy_strategy": "continuous", "ci_config_path": "", "public_jobs": true, "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, "allow_merge_on_skipped_pipeline": null, "request_access_enabled": true, "only_allow_merge_if_all_discussions_are_resolved": false, "remove_source_branch_after_merge": true, "printing_merge_request_link_enabled": true, "merge_method": "merge", "squash_option": "default_off", "enforce_auth_checks_on_uploads": true, "suggestion_commit_message": null, "merge_commit_template": null, "squash_commit_template": null, "issue_branch_template": null, "autoclose_referenced_issues": true, "approvals_before_merge": 0, "mirror": false, "external_authorization_classification_label": "", "marked_for_deletion_at": null, "marked_for_deletion_on": null, "requirements_enabled": true, "requirements_access_level": "enabled", "security_and_compliance_enabled": true, "compliance_frameworks": [], "issues_template": null, "merge_requests_template": null, "ci_restrict_pipeline_cancellation_role": "developer", "merge_pipelines_enabled": false, "merge_trains_enabled": false, "merge_trains_skip_train_allowed": false, "only_allow_merge_if_all_status_checks_passed": false, "allow_pipeline_trigger_approve_deployment": false, "prevent_merge_without_jira_issue": false } } }, "group_id": 67722271, "project_id": 54252513 } }

API Links

API NameAPI Documentation LinkAPI Link Visibility
Projects API - GitLabhttps://docs.gitlab.com/ee/api/projects.htmlPublic

Get Branch - GitLab - REST

Workflow to get a branch for an existing repository in GitLab.

Capabilities include:

  • Get branch details from a GitLab repository.

Entry Point IAP Component

The primary IAP component to run Get Branch - GitLab - REST is listed below:

IAP Component NameIAP Component Type
Get Branch - GitLab - RESTWorkflow

Inputs

The following table lists the inputs for Get Branch - GitLab - REST:

NameTypeRequiredDescriptionExample Value
adapterIdstringyesId of the GitLab adapter instance to use.
gitlab
projectPathstringyesFull path to the gitlab repository including subgroups. Can optionally use project id instead.
itentialopensource/adapters/devops-netops/adapter-gitlab
branchNamestringyesName of branch to get
master

Outputs

The following table lists the outputs for Get Branch - GitLab - REST:

NameTypeDescriptionExample Value
gitLabBranchobjectGitlab response for get branch call.
{
  "icode": "AD.200",
  "response": {
    "name": "my_branch",
    "commit": {
      "id": "11d41003f393d3118336966b04c5612f9515bdcd",
      "short_id": "11d41003",
      "created_at": "2024-01-25T22:05:42.000+00:00",
      "parent_ids": [
        "fffb9e7b72d22929b1c24cd99ceffb239ff56158"
      ],
      "title": "here's a new file",
      "message": "here's a new file",
      "author_name": "Test User",
      "author_email": "test.user@itential.com",
      "authored_date": "2024-01-25T22:05:42.000+00:00",
      "committer_name": "Test User",
      "committer_email": "test.user@itential.com",
      "committed_date": "2024-01-25T22:05:42.000+00:00",
      "trailers": {},
      "extended_trailers": {},
      "web_url": "https://gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test/-/commit/11d41003f393d3118336966b04c5612f9515bdcd"
    },
    "merged": false,
    "protected": false,
    "developers_can_push": false,
    "developers_can_merge": false,
    "can_push": true,
    "default": false,
    "web_url": "https://gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test/-/tree/my_branch"
  }
}
gitlabErrorobjectError response from branch get failure.
{
  "icode": "AD.500",
  "IAPerror": {
    "origin": "gitlab-connectorRest-handleEndResponse",
    "displayString": "Error 404 received on request",
    "recommendation": "Verify the request is accurate via debug logs and postman",
    "code": 404,
    "raw_response": {
      "status": "success",
      "code": 404,
      "headers": {
        "date": "Fri, 26 Jan 2024 17:31:52 GMT",
        "content-type": "application/json",
        "content-length": 36,
        "connection": "close",
        "cache-control": "no-cache",
        "content-security-policy": "default-src 'none'",
        "vary": "Origin",
        "x-content-type-options": "nosniff",
        "x-frame-options": "SAMEORIGIN",
        "x-runtime": 0.074492,
        "strict-transport-security": "max-age=31536000",
        "referrer-policy": "strict-origin-when-cross-origin",
        "cf-cache-status": "DYNAMIC",
        "group": "cf-nel",
        "max_age": 604800
      },
      "nel": {
        "success_fraction": 0.01,
        "report_to": "cf-nel",
        "max_age": 604800
      }
    },
    "response": {
      "message": "404 Branch Not Found"
    },
    "redirects": 0,
    "tripTime": "208ms",
    "reqHdr": {
      "Content-Type": "application/json",
      "Accept": "application/json",
      "Content-length": 161,
      "Private-Token": "****"
    }
  },
  "metrics": {
    "code": 404,
    "timeouts": 0,
    "redirects": 0,
    "retries": 0,
    "tripTime": 208,
    "isThrottling": false,
    "capabilityTime": "577ms"
  },
  "response": {
    "message": "404 Branch Not Found"
  }
}

Query Output

There are no query output examples for Get Branch - GitLab - REST.

Example Inputs and Outputs

Example 1

Input:

{
  "projectPath": "itentialopensource/pre-built-automations/staging/pre-built-test/test",
  "adapterId": "gitlab",
  "branchName": "my_branch"
} 

Output:

{
  "gitLabBranch": {
    "icode": "AD.200",
    "response": {
      "name": "my_branch",
      "commit": {
        "id": "11d41003f393d3118336966b04c5612f9515bdcd",
        "short_id": "11d41003",
        "created_at": "2024-01-25T22:05:42.000+00:00",
        "parent_ids": [
          "fffb9e7b72d22929b1c24cd99ceffb239ff56158"
        ],
        "title": "here's a new file",
        "message": "here's a new file",
        "author_name": "Test User",
        "author_email": "test.user@itential.com",
        "authored_date": "2024-01-25T22:05:42.000+00:00",
        "committer_name": "Test User",
        "committer_email": "test.user@itential.com",
        "committed_date": "2024-01-25T22:05:42.000+00:00",
        "trailers": {},
        "extended_trailers": {},
        "web_url": "https://gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test/-/commit/11d41003f393d3118336966b04c5612f9515bdcd"
      },
      "merged": false,
      "protected": false,
      "developers_can_push": false,
      "developers_can_merge": false,
      "can_push": true,
      "default": false,
      "web_url": "https://gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test/-/tree/my_branch"
    }
  }
} 

API Links

API NameAPI Documentation LinkAPI Link Visibility
Branches API - GitLabhttps://docs.gitlab.com/ee/api/branches.htmlPublic

Get Diff for Merge - GitLab - REST

Workflow that gets a diff for a merge request in GitLab.

Capabilities include:

  • Get diff between a source and target branch in a GitLab merge request.

Entry Point IAP Component

The primary IAP component to run Get Diff for Merge - GitLab - REST is listed below:

IAP Component NameIAP Component Type
Get Diff for Merge - GitLab - RESTWorkflow

Inputs

The following table lists the inputs for Get Diff for Merge - GitLab - REST:

NameTypeRequiredDescriptionExample Value
projectIdstringyesId of the GitLab project
36426787
mergeRequestIidstringyesInstance id of merge request
2
adapterIdstringyesId of the GitLab adapter instance to use.
gitlab
verbosebooleanyesWhether or not to use zero touch mode (manual tasks)
true

Outputs

The following table lists the outputs for Get Diff for Merge - GitLab - REST:

NameTypeDescriptionExample Value
ReturnStatusobjectReturn status from gitlab for diff
{
  "status": "SUCCESS",
  "message": "Diff found",
  "errors": [],
  "response": {
    "get a project": {
      "icode": "AD.200",
      "response": {
        "pathParam": "test",
        "tagList": [],
        "createdAt": "2024-01-25T20:28:55.636Z",
        "id": 54252513,
        "description": "Migration test",
        "name": "test",
        "name_with_namespace": "Itential Open Source / pre-built automations / staging / Pre-Built Test / test",
        "path_with_namespace": "itentialopensource/pre-built-automations/staging/pre-built-test/test",
        "default_branch": "main",
        "topics": [],
        "ssh_url_to_repo": "git@gitlab.com:itentialopensource/pre-built-automations/staging/pre-built-test/test.git",
        "http_url_to_repo": "https://gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test.git",
        "web_url": "https://gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test",
        "readme_url": null,
        "forks_count": 0,
        "avatar_url": null,
        "star_count": 0,
        "last_activity_at": "2024-01-25T21:57:57.890Z",
        "namespace": {
          "id": 67722271,
          "name": "Pre-Built Test",
          "path": "pre-built-test",
          "kind": "group",
          "full_path": "itentialopensource/pre-built-automations/staging/pre-built-test",
          "parent_id": 6535607,
          "avatar_url": null,
          "web_url": "https://gitlab.com/groups/itentialopensource/pre-built-automations/staging/pre-built-test"
        },
        "container_registry_image_prefix": "registry.gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test",
        "_links": {
          "self": "https://gitlab.com/api/v4/projects/54252513",
          "issues": "https://gitlab.com/api/v4/projects/54252513/issues",
          "merge_requests": "https://gitlab.com/api/v4/projects/54252513/merge_requests",
          "repo_branches": "https://gitlab.com/api/v4/projects/54252513/repository/branches",
          "labels": "https://gitlab.com/api/v4/projects/54252513/labels",
          "events": "https://gitlab.com/api/v4/projects/54252513/events",
          "members": "https://gitlab.com/api/v4/projects/54252513/members",
          "cluster_agents": "https://gitlab.com/api/v4/projects/54252513/cluster_agents"
        },
        "code_suggestions": true,
        "packages_enabled": true,
        "empty_repo": false,
        "archived": false,
        "visibility": "private",
        "resolve_outdated_diff_discussions": false,
        "container_expiration_policy": {
          "cadence": "1d",
          "enabled": false,
          "keep_n": 10,
          "older_than": "90d",
          "name_regex": ".*",
          "name_regex_keep": null,
          "next_run_at": "2024-01-26T20:28:55.672Z"
        },
        "permissions": {
          "project_access": null,
          "group_access": {
            "access_level": 40,
            "notification_level": 3
          }
        }
      }
    },
    "get diff for a specific committ": {
      "icode": "AD.200",
      "response": [
        {
          "diff": "@@ -0,0 +1 @@\n+hello world\n\\ No newline at end of file\n",
          "new_path": "newfile.txt",
          "old_path": "newfile.txt",
          "a_mode": "0",
          "b_mode": "100644",
          "new_file": true,
          "renamed_file": false,
          "deleted_file": false,
          "generated_file": null
        }
      ]
    }
  },
  "mergeRequestId": "1"
}
resultarrayResult containing the diff for the MR
[
  [
    {
      "diff": "@@ -0,0 +1 @@\n+hello world\n\\ No newline at end of file\n",
      "new_path": "newfile.txt",
      "old_path": "newfile.txt",
      "a_mode": "0",
      "b_mode": "100644",
      "new_file": true,
      "renamed_file": false,
      "deleted_file": false,
      "generated_file": null
    }
  ]
]

Query Output

There are no query output examples for Get Diff for Merge - GitLab - REST.

Example Inputs and Outputs

Example 1

Input:

{
  "projectId": "54252513",
  "mergeRequestIid": "1",
  "adapterId": "gitlab",
  "verbose": true
} 

Output:

{
  "ReturnStatus": {
    "status": "SUCCESS",
    "message": "Diff found",
    "errors": [],
    "response": {
      "get a project": {
        "icode": "AD.200",
        "response": {
          "pathParam": "test",
          "tagList": [],
          "createdAt": "2024-01-25T20:28:55.636Z",
          "id": 54252513,
          "description": "Migration test",
          "name": "test",
          "name_with_namespace": "Itential Open Source / pre-built automations / staging / Pre-Built Test / test",
          "path_with_namespace": "itentialopensource/pre-built-automations/staging/pre-built-test/test",
          "default_branch": "main",
          "topics": [],
          "ssh_url_to_repo": "git@gitlab.com:itentialopensource/pre-built-automations/staging/pre-built-test/test.git",
          "http_url_to_repo": "https://gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test.git",
          "web_url": "https://gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test",
          "readme_url": null,
          "forks_count": 0,
          "avatar_url": null,
          "star_count": 0,
          "last_activity_at": "2024-01-25T21:57:57.890Z",
          "namespace": {
            "id": 67722271,
            "name": "Pre-Built Test",
            "path": "pre-built-test",
            "kind": "group",
            "full_path": "itentialopensource/pre-built-automations/staging/pre-built-test",
            "parent_id": 6535607,
            "avatar_url": null,
            "web_url": "https://gitlab.com/groups/itentialopensource/pre-built-automations/staging/pre-built-test"
          },
          "container_registry_image_prefix": "registry.gitlab.com/itentialopensource/pre-built-automations/staging/pre-built-test/test",
          "_links": {
            "self": "https://gitlab.com/api/v4/projects/54252513",
            "issues": "https://gitlab.com/api/v4/projects/54252513/issues",
            "merge_requests": "https://gitlab.com/api/v4/projects/54252513/merge_requests",
            "repo_branches": "https://gitlab.com/api/v4/projects/54252513/repository/branches",
            "labels": "https://gitlab.com/api/v4/projects/54252513/labels",
            "events": "https://gitlab.com/api/v4/projects/54252513/events",
            "members": "https://gitlab.com/api/v4/projects/54252513/members",
            "cluster_agents": "https://gitlab.com/api/v4/projects/54252513/cluster_agents"
          },
          "code_suggestions": true,
          "packages_enabled": true,
          "empty_repo": false,
          "archived": false,
          "visibility": "private",
          "resolve_outdated_diff_discussions": false,
          "container_expiration_policy": {
            "cadence": "1d",
            "enabled": false,
            "keep_n": 10,
            "older_than": "90d",
            "name_regex": ".*",
            "name_regex_keep": null,
            "next_run_at": "2024-01-26T20:28:55.672Z"
          },
          "permissions": {
            "project_access": null,
            "group_access": {
              "access_level": 40,
              "notification_level": 3
            }
          }
        }
      },
      "get diff for a specific committ": {
        "icode": "AD.200",
        "response": [
          {
            "diff": "@@ -0,0 +1 @@\n+hello world\n\\ No newline at end of file\n",
            "new_path": "newfile.txt",
            "old_path": "newfile.txt",
            "a_mode": "0",
            "b_mode": "100644",
            "new_file": true,
            "renamed_file": false,
            "deleted_file": false,
            "generated_file": null
          }
        ]
      }
    },
    "mergeRequestId": "1"
  },
  "result": [
    [
      {
        "diff": "@@ -0,0 +1 @@\n+hello world\n\\ No newline at end of file\n",
        "new_path": "newfile.txt",
        "old_path": "newfile.txt",
        "a_mode": "0",
        "b_mode": "100644",
        "new_file": true,
        "renamed_file": false,
        "deleted_file": false,
        "generated_file": null
      }
    ]
  ],
  "current_item": {}
} 

API Links

API NameAPI Documentation LinkAPI Link Visibility
Merge Requests API - GitLabhttps://docs.gitlab.com/ee/api/merge_requests.htmlPublic

Get File - GitLab - REST

Workflow that get a file from a repository in GitLab.

Capabilities include:

  • Get a file in a GitLab repository.

Entry Point IAP Component

The primary IAP component to run Get File - GitLab - REST is listed below:

IAP Component NameIAP Component Type
Get File - GitLab - RESTWorkflow

Inputs

The following table lists the inputs for Get File - GitLab - REST:

NameTypeRequiredDescriptionExample Value
filePathstringyesPath to file not including file name
documentation/data
projectPathstringyesFull path to the gitlab repository including subgroups. Can optionally use project id instead.
itentialopensource/adapters/devops-netops/adapter-gitlab
adapterIdstringyesId of the GitLab adapter instance to use.
gitlab
fileNamestringyesName of the file to get
test.txt

Outputs

The following table lists the outputs for Get File - GitLab - REST:

NameTypeDescriptionExample Value
resultobjectFile contents
{
  "response": "Hello world!",
  "result": "success",
  "code": 200
}

Query Output

There are no query output examples for Get File - GitLab - REST.

Example Inputs and Outputs

Example 1

Input:

{
  "filePath": "report",
  "adapterId": "gitlab",
  "projectPath": "itentialopensource/adapters/cloud/adapter-aws_ec2",
  "fileName": "adapterInfo.json"
} 

Output:

{  
"result": {
    "response": {
      "version": "0.7.3",
      "configLines": 64140,
      "scriptLines": 1783,
      "codeLines": 49891,
      "testLines": 26311,
      "testCases": 1400,
      "totalCodeLines": 77985,
      "wfTasks": 854
    },
    "result": "success",
    "code": 200
  }
} 

API Links

API NameAPI Documentation LinkAPI Link Visibility
Repository Files API - GitLabhttps://docs.gitlab.com/ee/api/repository_files.htmlPublic

Push Commit to Branch - GitLab - REST

Push a commit to a branch in Gitlab

Capabilities include:

  • Make commit to an existing branch in a GitLab repository.

Entry Point IAP Component

The primary IAP component to run Push Commit to Branch - GitLab - REST is listed below:

IAP Component NameIAP Component Type
Push Commit to Branch - GitLab - RESTWorkflow

Inputs

The following table lists the inputs for Push Commit to Branch - GitLab - REST:

NameTypeRequiredDescriptionExample Value
filePathstringyesPath to file including file name
documentation/data.txt
branchNamestringyesName of the branch to commit to
new-feature
adapterIdstringyesId of the GitLab adapter instance to use.
gitlab
projectPathstringyesFull path to the gitlab repository including subgroups. Can optionally use project id instead.
itentialopensource/adapters/devops-netops/adapter-gitlab
commitMessagestringyesMessage to include with the commit
Update to file x
fileContentstringyesContent for file to add or update
hello world!

Outputs

The following table lists the outputs for Push Commit to Branch - GitLab - REST:

NameTypeDescriptionExample Value
gitlabErrorobjectError response from Gitlab failure.
{
  "icode": "AD.500",
  "IAPerror": {
    "origin": "gitlab-connectorRest-handleEndResponse",
    "displayString": "Error 404 received on request",
    "recommendation": "Verify the request is accurate via debug logs and postman",
    "code": 404,
    "raw_response": {
      "status": "success",
      "code": 404,
      "headers": {
        "date": "Fri, 26 Jan 2024 17:31:52 GMT",
        "content-type": "application/json",
        "content-length": 36,
        "connection": "close",
        "cache-control": "no-cache",
        "content-security-policy": "default-src 'none'",
        "vary": "Origin",
        "x-content-type-options": "nosniff",
        "x-frame-options": "SAMEORIGIN",
        "x-runtime": 0.074492,
        "strict-transport-security": "max-age=31536000",
        "referrer-policy": "strict-origin-when-cross-origin",
        "cf-cache-status": "DYNAMIC",
        "group": "cf-nel",
        "max_age": 604800
      },
      "nel": {
        "success_fraction": 0.01,
        "report_to": "cf-nel",
        "max_age": 604800
      }
    },
    "response": {
      "message": "404 Project Not Found"
    },
    "redirects": 0,
    "tripTime": "208ms",
    "reqHdr": {
      "Content-Type": "application/json",
      "Accept": "application/json",
      "Content-length": 161,
      "Private-Token": "****"
    }
  },
  "response": {
    "message": "404 Project Not Found"
  }
}

Query Output

There are no query output examples for Push Commit to Branch - GitLab - REST.

Example Inputs and Outputs

Example 1

Input:

{
  "filePath": "newfile.txt",
  "branchName": "my_branch",
  "adapterId": "gitlab",
  "projectPath": "itentialopensource/pre-built-automations/staging/pre-built-test/my_test",
  "commitMessage": "new file",
  "fileContent": "hello world"
} 

API Links

API NameAPI Documentation LinkAPI Link Visibility
Commits API - GitLabhttps://docs.gitlab.com/ee/api/commits.htmlPublic

Update Project Variables - GitLab - REST

Workflow to update CI/CD variables in GitLab

Capabilities include:

  • Update CI/CD variables in GitLab

Entry Point IAP Component

The primary IAP component to run Update Project Variables - GitLab - REST is listed below:

IAP Component NameIAP Component Type
Update Project Variables - GitLab - RESTWorkflow

Inputs

The following table lists the inputs for Update Project Variables - GitLab - REST:

NameTypeRequiredDescriptionExample Value
projectPathstringyesFull path to the gitlab repository including subgroups. Can optionally use project id instead.
itentialopensource/adapters/devops-netops/adapter-gitlab
adapterIdstringyesId of the GitLab adapter instance to use.
gitlab
variablesArrayarrayyesArray of variables to update in repository.
[
  {
    "variable_type": "env_var",
    "key": "test",
    "value": "updated value",
    "protected": true,
    "masked": false,
    "raw": false,
    "environment_scope": "*",
    "description": "null"
  }
]

Outputs

The following table lists the outputs for Update Project Variables - GitLab - REST:

NameTypeDescriptionExample Value
gitlabErrorobjectError response from update variables failure
{
  "icode": "AD.500",
  "IAPerror": {
    "origin": "gitlab-connectorRest-handleEndResponse",
    "displayString": "Error 404 received on request",
    "recommendation": "Verify the request is accurate via debug logs and postman",
    "code": 404,
    "raw_response": {
      "status": "success",
      "code": 404,
      "response": {
        "message": "404 Variable Not Found"
      },
      "redirects": 0,
      "tripTime": "208ms",
      "reqHdr": {
        "Content-Type": "application/json",
        "Accept": "application/json",
        "Content-length": 161,
        "Private-Token": "****"
      }
    }
  },
  "response": {
    "message": "404 Variable Not Found"
  }
}

Query Output

There are no query output examples for Update Project Variables - GitLab - REST.

Example Inputs and Outputs

Example 1

Input:

{
  "projectPath": "itentialopensource/pre-built-automations/staging/pre-built-test/my_test",
  "adapterId": "gitlab",
  "variablesArray": [
    {
      "variable_type": "env_var",
      "key": "test_var",
      "value": "updated value",
      "protected": true,
      "masked": false,
      "raw": false,
      "environment_scope": "*",
      "description": "null"
    }
  ]
} 

API Links

API NameAPI Documentation LinkAPI Link Visibility
Instance-level CI/CD variables APIhttps://docs.gitlab.com/ee/api/instance_level_ci_variables.htmlPublic

Additional Information

Support

Please use your Itential Customer Success account if you need support when using this Workflow Project.