Compare commits
1 commit
Author | SHA1 | Date | |
---|---|---|---|
890f4b5229 |
1 changed files with 33 additions and 18 deletions
|
@ -1,33 +1,48 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
jira_base_url="https://jira.someserver.com"
|
|
||||||
username="usernName"
|
|
||||||
password="passWord !@#"
|
|
||||||
|
|
||||||
|
# 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"
|
csv_file="components.csv"
|
||||||
|
|
||||||
|
|
||||||
# Read the CSV file line by line
|
# Read the CSV file line by line
|
||||||
|
# Format: projectKey|componentName|accountID
|
||||||
while IFS='|' read -r project_key component_name user_id; do
|
while IFS='|' read -r project_key component_name user_id; do
|
||||||
# Remove carriage return characters from the component_name
|
# Remove any carriage return characters from the component_name
|
||||||
component_name=$(echo "$component_name" | tr -d '\r')
|
component_name=$(echo "$component_name" | tr -d '\r')
|
||||||
|
|
||||||
# Get the component ID from Jira API using project_key and component_name
|
# 1. Get the list of components for the project
|
||||||
raw_data=$(curl -s -X GET \
|
raw_data=$(curl -s -X GET \
|
||||||
-u "$username:$password" \
|
-u "$username:$api_token" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
"$jira_base_url/rest/api/2/project/$project_key/components")
|
"$jira_base_url/rest/api/3/project/$project_key/components")
|
||||||
component_id=$(echo "$raw_data" | jq -r --arg component_name "$component_name" '.[] | select(.name == $component_name) | .id')
|
|
||||||
|
|
||||||
echo "Updating project $project_key, component $component_name with new lead $user_id..."
|
# 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')
|
||||||
|
|
||||||
# Update the component lead using the component ID and user 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 \
|
curl -s -X PUT \
|
||||||
-u "$username:$password" \
|
-u "$username:$api_token" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d "{\"leadUserName\":\"$user_id\", \"assigneeType\": \"COMPONENT_LEAD\"}" \
|
-d "{\"leadAccountId\":\"$user_id\", \"assigneeType\": \"COMPONENT_LEAD\"}" \
|
||||||
"$jira_base_url/rest/api/2/component/$component_id" > /dev/null
|
"$jira_base_url/rest/api/3/component/$component_id" > /dev/null
|
||||||
|
|
||||||
# Output the updated information with a timestamp
|
# 4. Log the update
|
||||||
timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
||||||
echo "Updated project $project_key, component $component_name with new lead $user_id at $timestamp"
|
echo "Updated project '$project_key', component '$component_name' with new lead '$user_id' at $timestamp"
|
||||||
done < "$csv_file"
|
done < "$csv_file"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue