Dev onboarding: User access

This Workflow automatically sets up new developers with access to GitHub, PagerDuty, and Jira.

Step 1: Start creating the Workflow

Follow the steps in the documentation to create a Workflow and configure its basic settings.

Step 2: Add blocks to the Workflow

The instructions on this page describe how to create this Workflow in the Cortex UI, but it is also possible to copy the Workflow YAML and add it to your workspace via the Cortex CLI. This allows you to quickly set up the example configuration then iterate on it for your own use case. Expand the tile below to learn more.

Workflow YAML instructions

To upload the Workflow example YAML into your workspace:

  1. Save the Workflow example YAML file below:

name: "Dev Onboarding: User Access"
tag: dev-onboarding-user-access
description: "Automatically sets up new developers with access to GitHub, PagerDuty,\
  \ and Jira."
isDraft: false
filter:
  type: GLOBAL
runResponseTemplate: null
failedRunResponseTemplate: null
restrictActionCompletionToRunnerUser: false
actions:
- name: Get GH Username
  slug: get-gh-username
  schema:
    inputs:
    - name: GitHub Username
      description: Enter your personal GitHub username.
      key: github-username
      required: false
      defaultValue: null
      placeholder: null
      validationRegex: "^[^\\s]+$"
      type: INPUT_FIELD
    inputOverrides: []
    type: USER_INPUT
  outgoingActions:
  - add-user-to-org
  isRootAction: true
- name: Add user to GH org
  slug: add-user-to-org
  schema:
    inputs:
      org: cortexapps
      role: member
      username: actions.get-gh-username.outputs.github-username
    integrationAlias: cortex
    actionIdentifier: github.addUserToOrg
    type: ADVANCED_HTTP_REQUEST
  outgoingActions:
  - add-user-to-pd
  isRootAction: false
- name: Add user to PagerDuty
  slug: add-user-to-pd
  schema:
    headers:
      Accept: application/vnd.pagerduty+json;version=2
      Authorization: "Bearer {{context.secrets.pd_token}}"
    httpMethod: POST
    payload: |-
      {
        "user": {
          "type": "user",
          "name": "{{context.initiatedBy.name}}",
          "email": "{{context.initiatedBy.email}}"
        }
      }
    url: https://api.pagerduty.com/users
    type: HTTP_REQUEST
  outgoingActions:
  - add-user-to-jira
  isRootAction: false
- name: Add user to Jira
  slug: add-user-to-jira
  schema:
    headers: {}
    httpMethod: POST
    payload: |-
      {
        "emailAddress": "{{context.initiatedBy.email}}",
        "displayName": "{{context.initiatedBy.name}}"
      }`
    url: https://cortex.atlassian.net/rest/api/3/user
    type: HTTP_REQUEST
  outgoingActions:
  - send-message
  isRootAction: false
- name: Send message
  slug: send-message
  schema:
    channel: social
    message: "{{context.initiatedBy.name}} has been added to GitHub, PagerDuty, and\
      \ Jira."
    type: SLACK
  outgoingActions: []
  isRootAction: false
runRestrictionPolicies: []
iconTag: AndroidLogo
variables: []
  1. Use the Cortex CLI to run this command, using the path to your Workflow YAML file: cortex workflows create -f <path-to-your-workflow.yaml>

Expand the tiles below to learn about each block in this Workflow and how to configure them in the Cortex UI:

User input

In this example, we add a User Input block to obtain the user's GitHub username.

  1. Click + in the center of the page. In the block library modal, choose User input.

  2. In the block configuration side panel, enter a name and unique slug for this block.

    1. In this example, we use the name Get GH Username and the slug get-gh-username.

  3. Click +Add user input. Add the following:

    • Name: GitHub Username

    • Key: github-username

    • Description: Enter your personal GitHub username.

    • Type: Text

    • Click Add input.

  4. At the bottom of the side panel, click Save.

Add user to GitHub org

This block adds a user to a GitHub organization.

  1. Click + in the center of the page. In the block library modal, select the GitHub > Add user to org block.

  2. In the side panel, enter a name and unique slug for the block.

    • In this example, we use the name Add user to GH org and the slug add-user-to-org.

  3. Configure the block:

    • Alias: Choose which GitHub configuration to use.

    • Organization: Enter your GitHub organization name.

    • Username: Enter the handle for the user's GitHub account.

      • In our example, we use templating to take the output of the previous step and set it as the value for this field: actions.get-gh-username.outputs.github-username

    • Role: Select the role of the user in the organization.

  4. At the bottom of the side panel, click Save.

HTTP requests

There are two HTTP requests that perform the following actions: Adding the user to PagerDuty and adding the user to Jira.

Add the user to PagerDuty

  1. Click + in the center of the page. In the block library modal, select the HTTP request block.

  2. In the side panel, enter a name and unique slug for the block.

    • In this example, we use the name Add user to PagerDuty and the slug add-user-to-pd.

  3. Configure the block:

    1. HTTP method: POST

    2. URL: In our example, we set this to https://api.pagerduty.com/users.

    3. Headers: Set the following headers:

      • Accept: application/vnd.pagerduty+json;version=2

      • Authorization: Bearer {{ context.secrets.pd_token }}

    4. Payload: In our example, we enter the following:

{
  "user": {
    "type": "user",
    "name": "{{context.initiatedBy.name}}",
    "email": "{{context.initiatedBy.email}}"
  }
}
  1. Save the block.

Add the user to Jira

  1. Click + in the center of the page. In the block library modal, select the HTTP request block.

  2. In the side panel, enter a name and unique slug for the block.

    • In this example we use the name Add user to Jira and the slug add-user-to-jira.

  3. Configure the block:

    1. HTTP method: POST

    2. URL: In our example, we set this to: https://cortex.atlassian.net/rest/api/3/user

    3. Payload: In our example, we enter the following:

{
  "emailAddress": "{{context.initiatedBy.email}}",
  "displayName": "{{context.initiatedBy.name}}"
}`
  1. Save the block.

Slack message

In this step, we send a templated message via Slack informing the user that they have been added to GitHub, PageryDuty, and Jira.

  1. Click + in the center of the page. In the block library modal, select the Slack block.

  2. In the side panel, enter a name and unique slug for the block.

    • In this example we use the name Send message and the slug send-message.

  3. Select a Slack channel name.

  4. Enter text for the message that will be sent via Slack. In our example, we use the following:

{{context.initiatedBy.name}} has been added to GitHub, PagerDuty, and Jira.
  1. Save the block.

Step 3: Run the Workflow

When you run the Workflow, the following events happen:

  • The Workflow pauses to collect a response from the user during the User Input block.

  • The "Add user to org" block runs. It uses the output of the previous block as the username, then automatically adds to that user to the specified GitHub org.

  • The first HTTP request runs. Using the name and email address of the user who initiated the Workflow, it creates a user in PagerDuty.

  • The second HTTP request runs. Using the name and email address of the user who initiated the Workflow, it creates a user in Jira.

  • The Slack block runs, which sends a Slack message to the user to let them know that their GitHub, PagerDuty, and Jira accounts are ready.

Last updated

Was this helpful?