This is an automated email from the ASF dual-hosted git repository.

dongjoon pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/orc.git


The following commit(s) were added to refs/heads/main by this push:
     new 64fdbd692 ORC-2080: Add `create_orc_jira.py` script
64fdbd692 is described below

commit 64fdbd692e86dc984e731e53acf1096fcf1b0ef4
Author: Dongjoon Hyun <[email protected]>
AuthorDate: Fri Feb 6 13:36:55 2026 -0800

    ORC-2080: Add `create_orc_jira.py` script
    
    ### What changes were proposed in this pull request?
    
    This PR aims to add `create_orc_jira.py` script.
    
    ### Why are the changes needed?
    
    To help the developer.
    1. Create ASF JIRA ID.
    2. Create a branch with the generated JIRA ID.
    3. Create a commit with the ORC community style commit title: `$JIRA_ID: 
JIRA_ISSUE_TITLE`.
    
    ### How was this patch tested?
    
    Manually.
    
    ```
    dev/create_orc_jira.py 'Add `create_orc_jira.py` script'
    ```
    
    ### Was this patch authored or co-authored using generative AI tooling?
    
    Generated-by: `Gemini 3 Pro (High)` on `Antigravity`
    
    Closes #2518 from dongjoon-hyun/ORC-2080.
    
    Authored-by: Dongjoon Hyun <[email protected]>
    Signed-off-by: Dongjoon Hyun <[email protected]>
---
 dev/create_orc_jira.py | 112 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 112 insertions(+)

diff --git a/dev/create_orc_jira.py b/dev/create_orc_jira.py
new file mode 100755
index 000000000..8559c0255
--- /dev/null
+++ b/dev/create_orc_jira.py
@@ -0,0 +1,112 @@
+#!/usr/bin/env python3
+
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+import os
+import subprocess
+import sys
+import traceback
+
+try:
+    import jira.client
+
+    JIRA_IMPORTED = True
+except ImportError:
+    JIRA_IMPORTED = False
+
+# ASF JIRA access token
+JIRA_ACCESS_TOKEN = os.environ.get("JIRA_ACCESS_TOKEN")
+JIRA_API_BASE = "https://issues.apache.org/jira";
+
+
+def fail(msg):
+    print(msg)
+    sys.exit(-1)
+
+
+def run_cmd(cmd):
+    print(cmd)
+    if isinstance(cmd, list):
+        return subprocess.check_output(cmd).decode("utf-8")
+    else:
+        return subprocess.check_output(cmd.split(" ")).decode("utf-8")
+
+
+def create_jira_issue(title):
+    asf_jira = jira.client.JIRA(
+        {"server": JIRA_API_BASE},
+        token_auth=JIRA_ACCESS_TOKEN
+    )
+
+    issue_dict = {
+        'project': {'key': 'ORC'},
+        'summary': title,
+        'description': '',
+        'issuetype': {'name': 'Improvement'},
+    }
+
+    try:
+        new_issue = asf_jira.create_issue(fields=issue_dict)
+        return new_issue.key
+    except Exception as e:
+        fail("Failed to create JIRA issue: %s" % e)
+
+
+def create_and_checkout_branch(jira_id):
+    try:
+        run_cmd("git checkout -b %s" % jira_id)
+        print("Created and checked out branch: %s" % jira_id)
+    except subprocess.CalledProcessError as e:
+        fail("Failed to create branch %s: %s" % (jira_id, e))
+
+
+def create_commit(jira_id, title):
+    try:
+        run_cmd(['git', 'commit', '-m', '%s: %s' % (jira_id, title)])
+        print("Created a commit with message: %s: %s" % (jira_id, title))
+    except subprocess.CalledProcessError as e:
+        fail("Failed to create commit: %s" % e)
+
+
+def main():
+    if not JIRA_IMPORTED:
+        fail("Could not find jira-python library. Run 'sudo pip3 install jira' 
to install.")
+
+    if not JIRA_ACCESS_TOKEN:
+        fail("The env-var JIRA_ACCESS_TOKEN is not set.")
+
+    if len(sys.argv) < 2:
+        fail("Usage: %s <JIRA title>" % sys.argv[0])
+
+    title = sys.argv[1]
+    print("Creating JIRA issue with title: %s" % title)
+
+    jira_id = create_jira_issue(title)
+    print("Created JIRA issue: %s" % jira_id)
+
+    create_and_checkout_branch(jira_id)
+
+    create_commit(jira_id, title)
+
+
+if __name__ == "__main__":
+    try:
+        main()
+    except BaseException:
+        traceback.print_exc()
+        sys.exit(-1)

Reply via email to