jirasetcomponentcsv/setComponentCSV.sh
2025-01-22 12:53:51 -08:00

49 lines
1.8 KiB
Bash

#!/bin/bash
# Jira Cloud base URL (replace <your-domain> with your actual site)
jira_base_url="https://<your-domain>.atlassian.net"
# Jira Cloud credentials: email + API token
username="email@example.com"
api_token="YOUR_API_TOKEN"
# The CSV file containing project key, component name, and user account ID
csv_file="components.csv"
# Read the CSV file line by line
# Format: projectKey|componentName|accountID
while IFS='|' read -r project_key component_name user_id; do
# Remove any carriage return characters from the component_name
component_name=$(echo "$component_name" | tr -d '\r')
# 1. Get the list of components for the project
raw_data=$(curl -s -X GET \
-u "$username:$api_token" \
-H "Content-Type: application/json" \
"$jira_base_url/rest/api/3/project/$project_key/components")
# 2. Extract the component ID by matching the component name
component_id=$(echo "$raw_data" \
| jq -r --arg component_name "$component_name" \
'.[] | select(.name == $component_name) | .id')
if [ -z "$component_id" ]; then
echo "Error: Could not find component '$component_name' in project '$project_key'."
continue
fi
echo "Updating project '$project_key', component '$component_name' with new lead '$user_id'..."
# 3. Update the component lead
# Note: On Jira Cloud, you'll generally need the user's accountId in the field `leadAccountId`.
curl -s -X PUT \
-u "$username:$api_token" \
-H "Content-Type: application/json" \
-d "{\"leadAccountId\":\"$user_id\", \"assigneeType\": \"COMPONENT_LEAD\"}" \
"$jira_base_url/rest/api/3/component/$component_id" > /dev/null
# 4. Log the update
timestamp=$(date '+%Y-%m-%d %H:%M:%S')
echo "Updated project '$project_key', component '$component_name' with new lead '$user_id' at $timestamp"
done < "$csv_file"