Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ issues][3] for the Apache Arrow project. Comment on the issue and/or contact
[dev@arrow.apache.org](https://lists.apache.org/list.html?dev@arrow.apache.org)
with your questions and ideas.

If you’d like to report a bug but don’t have time to fix it, you can still post
it on JIRA, or email the mailing list
If you’d like to report a bug but don’t have time to fix it, you can still create
a GitHub issue, or email the mailing list
[dev@arrow.apache.org](https://lists.apache.org/list.html?dev@arrow.apache.org)

To contribute a patch:
Expand All @@ -57,8 +57,8 @@ harder to merge in a large change with a lot of disjoint features.
GitHub](https://github.com/apache/arrow/issues).
3. Submit the patch as a GitHub pull request against the main branch. For a
tutorial, see the GitHub guides on [forking a repo](https://help.github.com/en/articles/fork-a-repo)
and [sending a pull request](https://help.github.com/en/articles/creating-a-pull-request-from-a-fork). So that your pull request syncs with the JIRA issue, prefix your pull request
name with the JIRA issue id (ex: [ARROW-767: [C++] Filesystem abstraction](https://github.com/apache/arrow/pull/4225))
and [sending a pull request](https://help.github.com/en/articles/creating-a-pull-request-from-a-fork). Prefix your pull request
name with the GitHub issue id (ex: [GH-767: [C++] Filesystem abstraction](https://github.com/apache/arrow/pull/4225))
4. Make sure that your code passes the unit tests. You can find instructions
how to run the unit tests for each Arrow component in its respective README
file.
Expand Down
4 changes: 0 additions & 4 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,6 @@ or

MINOR: [${COMPONENT}] ${SUMMARY}

In the case of PARQUET issues on JIRA the title also supports:

PARQUET-${JIRA_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

-->

### Rationale for this change
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ jobs:
shell: bash
run: |
gem install test-unit
pip install "cython>=0.29.31" setuptools pytest jira setuptools-scm
pip install "cython>=0.29.31" setuptools pytest requests setuptools-scm
- name: Run Release Test
env:
ARROW_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/dev_pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
ref: main
persist-credentials: false

- name: Comment JIRA link
- name: Add Issue link
if: |
(github.event.action == 'opened' ||
github.event.action == 'edited')
Expand Down
31 changes: 2 additions & 29 deletions .github/workflows/dev_pr/helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,8 @@ const https = require('https');
* @returns {Issue} or null if no issue detected.
*
* @typedef {Object} Issue
* @property {string} kind - The kind of issue: minor, jira or github
* @property {string} id - The id of the issue:
* PARQUET-XXXX for jira
* The numeric issue id for github
* @property {string} kind - The kind of issue: minor or github
* @property {string} id - The numeric issue id of the issue
*/
function detectIssue(title) {
if (!title) {
Expand All @@ -36,38 +34,13 @@ function detectIssue(title) {
if (title.startsWith("MINOR: ")) {
return {"kind": "minor"};
}
const matched_jira = /^(WIP:?\s*)?((PARQUET)-\d+)/.exec(title);
if (matched_jira) {
return {"kind": "jira", "id": matched_jira[2]};
}
const matched_gh = /^(WIP:?\s*)?GH-(\d+)/.exec(title);
if (matched_gh) {
return {"kind": "github", "id": matched_gh[2]};
}
return null;
}

/**
* Retrieves information about a JIRA issue.
* @param {String} jiraID
* @returns {Object} the information about a JIRA issue.
*/
async function getJiraInfo(jiraID) {
const jiraURL = `https://issues.apache.org/jira/rest/api/2/issue/${jiraID}`;

return new Promise((resolve) => {
https.get(jiraURL, res => {
let data = '';

res.on('data', chunk => { data += chunk })

res.on('end', () => {
resolve(JSON.parse(data));
})
})
});
}

/**
* Retrieves information about a GitHub issue.
* @param {String} issueID
Expand Down
91 changes: 1 addition & 90 deletions .github/workflows/dev_pr/issue_check.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,91 +17,6 @@

const helpers = require("./helpers.js");

/**
* Performs checks on the JIRA Issue:
* - The issue is started in JIRA.
* - The issue contains components.
*
* @param {Object} github
* @param {Object} context
* @param {String} pullRequestNumber
* @param {String} jiraID
*/
async function verifyJIRAIssue(github, context, pullRequestNumber, jiraID) {
const ticketInfo = await helpers.getJiraInfo(jiraID);
if(!ticketInfo["fields"]["components"].length) {
await commentMissingComponents(github, context, pullRequestNumber);
}

if(ticketInfo["fields"]["status"]["id"] == 1) {
// "status": {"name":"Open","id":"1"
// "description":"The issue is open and ready for the assignee to start work on it.",
await commentNotStartedTicket(github, context, pullRequestNumber);
}
}

/**
* Adds a comment to add components on the JIRA ticket.
*
* @param {Object} github
* @param {Object} context
* @param {String} pullRequestNumber
*/
async function commentMissingComponents(github, context, pullRequestNumber) {
const {data: comments} = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pullRequestNumber,
per_page: 100
});

var found = false;
for(var i=0; i<comments.length; i++) {
if (comments[i].body.includes("has no components in JIRA")) {
found = true;
}
}
if (!found) {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pullRequestNumber,
body: ":warning: Ticket **has no components in JIRA**, make sure you assign one."
});
}
}

/**
* Adds a comment to start the ticket in JIRA.
*
* @param {Object} github
* @param {Object} context
* @param {String} pullRequestNumber
*/
async function commentNotStartedTicket(github, context, pullRequestNumber) {
const {data: comments} = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pullRequestNumber,
per_page: 100
});

var found = false;
for(var i=0; i<comments.length; i++) {
if (comments[i].body.includes("has not been started in JIRA")) {
found = true;
}
}
if (!found) {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pullRequestNumber,
body: ":warning: Ticket **has not been started in JIRA**, please click 'Start Progress'."
});
}
}

/**
* Assigns the GitHub Issue to the PR creator.
*
Expand Down Expand Up @@ -164,10 +79,6 @@ module.exports = async ({github, context}) => {
const title = context.payload.pull_request.title;
const issue = helpers.detectIssue(title)
if (issue){
if (issue.kind == "jira") {
await verifyJIRAIssue(github, context, pullRequestNumber, issue.id);
} else if(issue.kind == "github") {
await verifyGitHubIssue(github, context, pullRequestNumber, issue.id);
}
await verifyGitHubIssue(github, context, pullRequestNumber, issue.id);
}
};
30 changes: 1 addition & 29 deletions .github/workflows/dev_pr/link.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,30 +47,6 @@ async function haveComment(github, context, pullRequestNumber, message) {
return false;
}

/**
* Adds a comment on the Pull Request linking the JIRA issue.
*
* @param {Object} github
* @param {Object} context
* @param {String} pullRequestNumber
* @param {String} jiraID
*/
async function commentJIRAURL(github, context, pullRequestNumber, jiraID) {
const issueInfo = await helpers.getJiraInfo(jiraID);
const jiraURL = `https://issues.apache.org/jira/browse/${jiraID}`;
if (await haveComment(github, context, pullRequestNumber, jiraURL)) {
return;
}
if (issueInfo){
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pullRequestNumber,
body: jiraURL
});
}
}

/**
* Adds a comment on the Pull Request linking the GitHub issue.
*
Expand Down Expand Up @@ -102,10 +78,6 @@ module.exports = async ({github, context}) => {
const title = context.payload.pull_request.title;
const issue = helpers.detectIssue(title);
if (issue){
if (issue.kind == "jira") {
await commentJIRAURL(github, context, pullRequestNumber, issue.id);
} else if (issue.kind == "github") {
await commentGitHubURL(github, context, pullRequestNumber, issue.id);
}
await commentGitHubURL(github, context, pullRequestNumber, issue.id);
}
};
4 changes: 0 additions & 4 deletions .github/workflows/dev_pr/title_check.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,6 @@ or

MINOR: [${COMPONENT}] ${SUMMARY}

In the case of PARQUET issues on JIRA the title also supports:

PARQUET-${JIRA_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

See also:

* [Other pull requests](https://github.com/apache/arrow/pulls/)
Expand Down
3 changes: 1 addition & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@ To be assigned to an issue, add a comment "take" to that issue.

Before you create a new bug entry, we recommend you first search among existing
Arrow issues in
[Jira](https://issues.apache.org/jira/issues/?jql=project%20%3D%20ARROW%20AND%20status%20%3D%20Open)
or [GitHub](https://github.com/apache/arrow/issues).
[GitHub](https://github.com/apache/arrow/issues).

We conventionally prefix the issue title with the component
name in brackets, such as "[C++][Python] Ensure no validity bitmap in
Expand Down
9 changes: 1 addition & 8 deletions dev/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,7 @@ you'll have to install Python dependencies yourself and then run
The merge script requires tokens for access control. There are two options
for configuring your tokens: environment variables or a configuration file.

> Note: Arrow only requires a GitHub token. Parquet can use GitHub or
JIRA tokens.
> Note: Arrow and Parquet only requires a GitHub token.

#### Pass tokens via Environment Variables

Expand All @@ -61,12 +60,6 @@ The merge script uses the GitHub REST API. You must set a
[Personal Access Token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token).
You need to add `workflow` scope to the Personal Access Token.

You can specify the
[Personal Access Token](https://confluence.atlassian.com/enterprise/using-personal-access-tokens-1026032365.html)
of your JIRA account in the
`APACHE_JIRA_TOKEN` environment variable.
If the variable is not set, the script will ask you for it.

#### Pass tokens via configuration file

```
Expand Down
4 changes: 0 additions & 4 deletions dev/merge.conf.sample
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,6 @@
# Configuration for the merge_arrow_pr.py tool
# Install a copy of this file at ~/.config/arrow/merge.conf

[jira]
# issues.apache.org Jira personal access token
token=abc123

[github]
# GitHub's personal access token. "workflow" scope is needed.
api_token=ghp_ABC
Loading
Loading