From 7899f76a88778f220a3650d6267946be30da85a2 Mon Sep 17 00:00:00 2001 From: YIZIHN Date: Tue, 25 Jun 2024 13:23:09 +0900 Subject: [PATCH] Create Sync GitHub Issues with Jira and Manage Assignees --- ...tHub Issues with Jira and Manage Assignees | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .github/workflows/Sync GitHub Issues with Jira and Manage Assignees diff --git a/.github/workflows/Sync GitHub Issues with Jira and Manage Assignees b/.github/workflows/Sync GitHub Issues with Jira and Manage Assignees new file mode 100644 index 00000000..2fbd1b72 --- /dev/null +++ b/.github/workflows/Sync GitHub Issues with Jira and Manage Assignees @@ -0,0 +1,45 @@ +name: Sync GitHub Issues with Jira and Manage Assignees + +on: + issues: + types: [opened, assigned, unassigned] + +jobs: + manage_issues_and_assignees: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Set up Jira integration + env: + JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} + JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} + JIRA_EMAIL: ${{ secrets.JIRA_EMAIL }} + JIRA_PROJECT_KEY: ${{ secrets.JIRA_PROJECT_KEY }} + run: | + ISSUE_TITLE="${{ github.event.issue.title }}" + ISSUE_BODY="${{ github.event.issue.body }}" + ISSUE_ASSIGNEE="${{ github.event.issue.assignee.login }}" + JIRA_ASSIGNEE_ID=$(curl -s -u $JIRA_EMAIL:$JIRA_API_TOKEN "$JIRA_BASE_URL/rest/api/3/user/search?query=$ISSUE_ASSIGNEE" | jq -r '.[0].accountId') + + # Create or update Jira issue + if [ ${{ github.event.action }} == 'opened' ]; then + RESPONSE=$(curl -s -u $JIRA_EMAIL:$JIRA_API_TOKEN -X POST -H "Content-Type: application/json" \ + --data '{ + "fields": { + "project": {"key": "'$JIRA_PROJECT_KEY'"}, + "summary": "'$ISSUE_TITLE'", + "description": "'$ISSUE_BODY'", + "issuetype": {"name": "Task"}, + "assignee": {"id": "'$JIRA_ASSIGNEE_ID'"} + } + }' "$JIRA_BASE_URL/rest/api/3/issue/") + echo "Jira API response: $RESPONSE" + fi + + # Sync assignee + if [ ${{ github.event.action }} == 'assigned' ] || [ ${{ github.event.action }} == 'unassigned' ]; then + curl -s -u $JIRA_EMAIL:$JIRA_API_TOKEN -X PUT -H "Content-Type: application/json" \ + --data '{"update": {"assignee": [{"set": {"id": "'$JIRA_ASSIGNEE_ID'"}}]}}' "$JIRA_BASE_URL/rest/api/3/issue/${{ env.JIRA_ISSUE_KEY }}" + fi