Articles in this section

How to utilize the CLI to modify already existing Git integrations

Goal

To learn how to use the CLI for getting more information on a Git integration, also how to modify certain configuration options.

Assumptions

  • Access to a project hosted on Upsun
  • Your project account has administrator rights
  • Knowledge on using the Upsun CLI

Problems

None in particular. This How to is about raising awareness to the usefulness of the CLI tool.

Steps

1. Check what “integration” commands are available

upsun list | grep integration  
integration
  integration:activity:get                                      View detailed information on a single integration activity
  integration:activity:list (integration:activities)            Get a list of activities for an integration
  integration:activity:log                                      Display the log for an integration activity
  integration:add                                               Add an integration to the project
  integration:delete                                            Delete an integration from a project
  integration:get                                               View details of an integration
  integration:list (integrations)                               View a list of project integration(s)
  integration:update                                            Update an integration
  integration:validate                                          Validate an existing integration

2. List the integrations added to your project

upsun integration:list

+------------------+--------+-----------------------------------------------------------------------------------------------------+
| ID               | Type   | Summary                                                                                             |
+------------------+--------+-----------------------------------------------------------------------------------------------------+
| <integration id> | github | Repository: ...                                                                                     |
|                  |        | Hook URL: https://<region>.platform.sh/api/projects/<project id>/integrations/<integration id>/hook |
+------------------+--------+-----------------------------------------------------------------------------------------------------+

View integration details with: upsun integration:get [id]

Add a new integration with: upsun integration:add
Delete an integration with: upsun integration:delete [id]

3. Get the integration details

upsun integration:get <integration id>

+---------------------------------+-------------------------------------------------------------------------------------------+
| Property                        | Value                                                                                     |
+---------------------------------+-------------------------------------------------------------------------------------------+
| id                              | <integration id>                                                                          |
| type                            | github                                                                                    |
| token                           | ******                                                                                    |
| repository                      | ...                                                                                       |
| fetch_branches                  | true                                                                                      |
| prune_branches                  | true                                                                                      |
| build_pull_requests             | true                                                                                      |
| build_pull_requests_post_merge  | false                                                                                     |
| pull_requests_clone_parent_data | true                                                                                      |
| hook_url                        | https://<region>.platform.sh/api/projects/<project id>/integrations/<integration id>/hook |
+---------------------------------+-------------------------------------------------------------------------------------------+

4. Check the options and select which ones to modify

upsun integration:update --help

Command: integration:update
Description: Update an integration

Usage:
 upsun integration:update [--type TYPE] [--base-url BASE-URL] [--bitbucket-url BITBUCKET-URL] [--username USERNAME] [--token TOKEN] [--key KEY] [--secret SECRET] [--license-key LICENSE-KEY] [--server-project SERVER-PROJECT] [--repository REPOSITORY] [--build-merge-requests BUILD-MERGE-REQUESTS] [--build-pull-requests BUILD-PULL-REQUESTS] [--build-draft-pull-requests BUILD-DRAFT-PULL-REQUESTS] [--build-pull-requests-post-merge BUILD-PULL-REQUESTS-POST-MERGE] [--build-wip-merge-requests BUILD-WIP-MERGE-REQUESTS] [--merge-requests-clone-parent-data MERGE-REQUESTS-CLONE-PARENT-DATA] [--pull-requests-clone-parent-data PULL-REQUESTS-CLONE-PARENT-DATA] [--resync-pull-requests RESYNC-PULL-REQUESTS] [--fetch-branches FETCH-BRANCHES] [--prune-branches PRUNE-BRANCHES] [--resources-init RESOURCES-INIT] [--url URL] [--shared-key SHARED-KEY] [--file FILE] [--events EVENTS] [--states STATES] [--environments ENVIRONMENTS] [--excluded-environments EXCLUDED-ENVIRONMENTS] [--from-address FROM-ADDRESS] [--recipients RECIPIENTS] [--channel CHANNEL] [--routing-key ROUTING-KEY] [--category CATEGORY] [--index INDEX] [--sourcetype SOURCETYPE] [--protocol PROTOCOL] [--syslog-host SYSLOG-HOST] [--syslog-port SYSLOG-PORT] [--facility FACILITY] [--message-format MESSAGE-FORMAT] [--auth-mode AUTH-MODE] [--auth-token AUTH-TOKEN] [--verify-tls VERIFY-TLS] [--header HEADER] [-p|--project PROJECT] [-W|--no-wait] [--wait] [--] [<id>]

Arguments:
  id                                                                       The ID of the integration to update

Options:
      --type=TYPE                                                          The integration type ('bitbucket', 'bitbucket_server', 'github', 'gitlab', 'webhook', 'health.email', 'health.pagerduty', 'health.slack', 'health.webhook', 'httplog', 'script', 'newrelic', 'splunk', 'sumologic', 'syslog', 'otlplog')
      --base-url=BASE-URL                                                  The base URL of the server installation
      --bitbucket-url=BITBUCKET-URL                                        The base URL of the Bitbucket Server installation
      --username=USERNAME                                                  The Bitbucket Server username
      --token=TOKEN                                                        An authentication or access token for the integration
      --key=KEY                                                            A Bitbucket OAuth consumer key
      --secret=SECRET                                                      A Bitbucket OAuth consumer secret
      --license-key=LICENSE-KEY                                            The New Relic Logs license key
      --server-project=SERVER-PROJECT                                      The project (e.g. 'namespace/repo')
      --repository=REPOSITORY                                              The repository to track (e.g. 'owner/repository')
      --build-merge-requests=BUILD-MERGE-REQUESTS                          GitLab: build merge requests as environments [default: true]
      --build-pull-requests=BUILD-PULL-REQUESTS                            Build every pull request as an environment [default: true]
      --build-draft-pull-requests=BUILD-DRAFT-PULL-REQUESTS                Build draft pull requests [default: true]
      --build-pull-requests-post-merge=BUILD-PULL-REQUESTS-POST-MERGE      Build pull requests based on their post-merge state [default: false]
      --build-wip-merge-requests=BUILD-WIP-MERGE-REQUESTS                  GitLab: build WIP merge requests [default: true]
      --merge-requests-clone-parent-data=MERGE-REQUESTS-CLONE-PARENT-DATA  GitLab: clone data for merge requests [default: true]
      --pull-requests-clone-parent-data=PULL-REQUESTS-CLONE-PARENT-DATA    Clone the parent environment's data for pull requests [default: true]
      --resync-pull-requests=RESYNC-PULL-REQUESTS                          Re-sync pull request environment data on every build [default: false]
      --fetch-branches=FETCH-BRANCHES                                      Fetch all branches from the remote (as inactive environments) [default: true]
      --prune-branches=PRUNE-BRANCHES                                      Delete branches that do not exist on the remote [default: true]
      --resources-init=RESOURCES-INIT                                      The resources to use when initializing a new service ('minimum', 'default', 'manual', 'parent') [default: "parent"]
      --url=URL                                                            The URL or API endpoint for the integration
      --shared-key=SHARED-KEY                                              Webhook: the JWS shared secret key
      --file=FILE                                                          The name of a local file that contains the script to upload
      --events=EVENTS                                                      A list of events to act on, e.g. environment.push [default: ["*"]] (multiple values allowed)
      --states=STATES                                                      A list of states to act on, e.g. pending, in_progress, complete [default: ["complete"]] (multiple values allowed)
      --environments=ENVIRONMENTS                                          The environment IDs to include [default: ["*"]] (multiple values allowed)
      --excluded-environments=EXCLUDED-ENVIRONMENTS                        The environment IDs to exclude (multiple values allowed)
      --from-address=FROM-ADDRESS                                          [Optional] Custom From address for alert emails
      --recipients=RECIPIENTS                                              The recipient email address(es) (multiple values allowed)
      --channel=CHANNEL                                                    The Slack channel
      --routing-key=ROUTING-KEY                                            The PagerDuty routing key
      --category=CATEGORY                                                  The Sumo Logic category, used for filtering
      --index=INDEX                                                        The Splunk index
      --sourcetype=SOURCETYPE                                              The Splunk event source type
      --protocol=PROTOCOL                                                  Syslog transport protocol ('tcp', 'udp', 'tls') [default: "tls"]
      --syslog-host=SYSLOG-HOST                                            Syslog relay/collector host
      --syslog-port=SYSLOG-PORT                                            Syslog relay/collector port
      --facility=FACILITY                                                  Syslog facility [default: 1]
      --message-format=MESSAGE-FORMAT                                      Syslog message format ('rfc3164' or 'rfc5424') [default: "rfc5424"]
      --auth-mode=AUTH-MODE                                                Authentication mode ('prefix' or 'structured_data') [default: "prefix"]
      --auth-token=AUTH-TOKEN                                              Authentication token
      --verify-tls=VERIFY-TLS                                              Whether HTTPS certificate verification should be enabled (recommended) [default: true]
      --header=HEADER                                                      HTTP header(s) to use in POST requests. Separate names and values with a colon (:). (multiple values allowed)
  -p, --project=PROJECT                                                    The project ID or URL
  -W, --no-wait                                                            Do not wait for the operation to complete
      --wait                                                               Wait for the operation to complete (default)
  -h, --help                                                               Display this help message
  -V, --version                                                            Display this application version
  -q, --quiet                                                              Only print necessary output; suppress other messages and errors. This implies --no-interaction. It is ignored in verbose mode.
  -y, --yes                                                                Answer "yes" to confirmation questions; accept the default value for other questions; disable interaction
      --no-interaction                                                     Do not ask any interactive questions; accept default values. Equivalent to using the environment variable: UPSUN_CLI_NO_INTERACTION=1
  -v|vv|vvv, --verbose                                                     Increase the verbosity of messages

Examples:
 Switch on the "fetch branches" option for a specific integration:
   upsun integration:update ZXhhbXBsZSB --fetch-branches 1

Conclusion

The CLI is a very handy tool for listing information about integrations, also for adding new ones (or modifying those already existing).

Was this article helpful?
0 out of 0 found this helpful

Comments

0 comments

Please sign in to leave a comment.