name: Jira creation on: issues: types: [opened] issue_comment: types: [created] jobs: create-issue: runs-on: ubuntu-latest permissions: issues: write if: ((github.event_name == 'issue_comment' && github.event.comment.body == 'recreate jira' && github.event.comment.user.login == 'sfc-gh-mkeller') || (github.event_name == 'issues' && github.event.pull_request.user.login != 'whitesource-for-github-com[bot]')) steps: - name: Create JIRA Ticket id: create env: JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} run: | # Escape special characters in title and body TITLE=$(echo '${{ github.event.issue.title }}' | sed 's/"/\\"/g' | sed "s/'/\\\'/g") BODY=$(echo '${{ github.event.issue.body }}' | sed 's/"/\\"/g' | sed "s/'/\\\'/g") # Create JIRA issue using REST API RESPONSE=$(curl -s -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -u "$JIRA_USER_EMAIL:$JIRA_API_TOKEN" \ "$JIRA_BASE_URL/rest/api/2/issue" \ -d '{ "fields": { "project": { "key": "SNOW" }, "issuetype": { "name": "Bug" }, "summary": "'"$TITLE"'", "description": "'"$BODY"' \\\\ \\\\ _Created from GitHub Action_ for ${{ github.event.issue.html_url }}", "customfield_11401": {"id": "14723"}, "assignee": {"id": "712020:e527ae71-55cc-4e02-9217-1ca4ca8028a2"}, "components": [{"id": "19292"}], "labels": ["oss"], "priority": {"id": "10001"} } }') # Extract JIRA issue key from response JIRA_KEY=$(echo "$RESPONSE" | jq -r '.key') if [ "$JIRA_KEY" = "null" ] || [ -z "$JIRA_KEY" ]; then echo "Failed to create JIRA issue" echo "Response: $RESPONSE" exit 1 fi echo "Created JIRA issue: $JIRA_KEY" echo "jira_key=$JIRA_KEY" >> $GITHUB_OUTPUT - name: Update GitHub Issue env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | # Add comment to GitHub issue with JIRA link curl -s -X POST \ -H "Authorization: token $GITHUB_TOKEN" \ -H "Accept: application/vnd.github.v3+json" \ "https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/comments" \ -d '{ "body": "JIRA ticket created: [${{ steps.create.outputs.jira_key }}](${{ secrets.JIRA_BASE_URL }}/browse/${{ steps.create.outputs.jira_key }})" }'