Skip to content

Instantly share code, notes, and snippets.

@vkeenan
Created May 10, 2023 03:35
Show Gist options
  • Save vkeenan/f4113543817a3a5f96c317e4e6700d69 to your computer and use it in GitHub Desktop.
Save vkeenan/f4113543817a3a5f96c317e4e6700d69 to your computer and use it in GitHub Desktop.
Salesforce Devops Jira Integration

Salesforce Devops Jira Integration

Jira Integration

You are an AI pair programmer who is an expert in Salesforce languages and salesforce devops. I need to integrate my Jira instance with activities happening in GitHub Actions. Can you help me with this?

response

Yes, I can help you with integrating your Jira instance with activities happening in GitHub Actions. You can achieve this by using GitHub Actions to create, update, or transition Jira issues based on events happening in your repository.

Here's a high-level overview of the steps you need to follow:

  1. Create a GitHub Actions workflow.
  2. Add the required secrets to your GitHub repository.
  3. Set up the Jira API integration in your GitHub Actions workflow.

First, you need to create a new GitHub Actions workflow file in your repository. In the .github/workflows directory, create a new file named jira_integration.yml:

name: Jira Integration

on:
  # Define the events that will trigger this workflow
  push:
    branches:
      - main
  pull_request:
    types:
      - opened
      - synchronize

jobs:
  jira_integration:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Jira Issue Management
      env:
        JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
        JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
        JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
      run: |
        # Your script to interact with Jira API here

Now, you need to add the following secrets to your GitHub repository to store sensitive information like Jira credentials:

  • JIRA_BASE_URL: The base URL of your Jira instance (e.g., https://yourcompany.atlassian.net).
  • JIRA_API_TOKEN: A Jira API token generated from your Jira account.
  • JIRA_USER_EMAIL: The email address associated with the Jira account. To add these secrets, go to your GitHub repository > Settings > Secrets, and add the secrets one by one.

Once you have added the secrets, you need to create a script that interacts with the Jira API to create, update, or transition issues based on the events happening in your repository. You can write this script using any language supported by GitHub Actions.

Here's an example using Python:

  1. Create a new file in your repository named jira_integration.py.
  2. Add the following code to the jira_integration.py file:
import os
import requests

# Set up Jira API authentication
auth = (os.environ["JIRA_USER_EMAIL"], os.environ["JIRA_API_TOKEN"])
headers = {
    "Content-Type": "application/json"
}

# Replace this function with the desired action (create, update, or transition an issue)
def jira_action():
    # Example: get all projects
    url = f"{os.environ['JIRA_BASE_URL']}/rest/api/3/project/search"
    response = requests.get(url, auth=auth, headers=headers)
    print(response.json())

if __name__ == "__main__":
    jira_action()
  1. Update the run step in your jira_integration.yml workflow to execute the Python script:
run: |
  python jira_integration.py

Now, whenever the specified events occur in your repository (e.g., push to the main branch or opening a pull request), the GitHub Actions workflow will execute the Python script to interact with the Jira API.

You can further customize the Python script to perform the specific Jira actions you need, such as creating, updating, or transitioning issues. You can find the Jira Cloud REST API documentation here: https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/

Make sure to install any required dependencies for the script (e.g., requests for Python) by adding a step to the workflow file before running the script. For example:

- name: Set up Python and install dependencies
  uses: actions/setup-python@v2
  with:
    python-version: '3.x'
- run: pip install requests

Once you have completed these steps, your GitHub Actions workflow should be set up to integrate your Jira instance with activities happening in your repository. You can modify the script and the workflow file to meet your specific requirements and better align with your development process.

Do it in JavaScript

can't we do this with node and javascript?

response

Certainly! You can achieve Jira integration with GitHub Actions using Node.js and JavaScript as well. Here's an example of how to set up the GitHub Actions workflow and a JavaScript script for interacting with the Jira API.

First, update your jira_integration.yml workflow file to set up Node.js and install dependencies:

name: Jira Integration

on:
  # Define the events that will trigger this workflow
  push:
    branches:
      - main
  pull_request:
    types:
      - opened
      - synchronize

jobs:
  jira_integration:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '14'

    - name: Install dependencies
      run: npm ci

    - name: Jira Issue Management
      env:
        JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
        JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
        JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
      run: |
        node jira_integration.js

Next, create a new file in your repository named jira_integration.js and add the following code:

const axios = require('axios');

// Set up Jira API authentication
const auth = {
  username: process.env.JIRA_USER_EMAIL,
  password: process.env.JIRA_API_TOKEN,
};

// Replace this function with the desired action (create, update, or transition an issue)
async function jiraAction() {
  // Example: get all projects
  const url = `${process.env.JIRA_BASE_URL}/rest/api/3/project/search`;
  try {
    const response = await axios.get(url, {
      auth,
      headers: { 'Content-Type': 'application/json' },
    });
    console.log(response.data);
  } catch (error) {
    console.error(`Error: ${error.message}`);
  }
}

jiraAction();

Don't forget to add the axios package to your package.json file and install it:

{
  "dependencies": {
    "axios": "^0.21.1"
  }
}

Now, whenever the specified events occur in your repository (e.g., push to the main branch or opening a pull request), the GitHub Actions workflow will execute the JavaScript script to interact with the Jira API.

You can further customize the JavaScript script to perform the specific Jira actions you need, such as creating, updating, or transitioning issues. You can find the Jira Cloud REST API documentation here: https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment