-
Notifications
You must be signed in to change notification settings - Fork 3.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into dask/ranker
- Loading branch information
Showing
75 changed files
with
1,959 additions
and
967 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
#!/bin/bash | ||
# | ||
# [description] | ||
# Update comment appending a given body to the specified original comment. | ||
# | ||
# [usage] | ||
# append_comment.sh <COMMENT_ID> <BODY> | ||
# | ||
# COMMENT_ID: ID of comment that should be modified. | ||
# | ||
# BODY: Text that will be appended to the original comment body. | ||
|
||
set -e | ||
|
||
if [ -z "$GITHUB_ACTIONS" ]; then | ||
echo "Must be run inside GitHub Actions CI" | ||
exit -1 | ||
fi | ||
|
||
if [ $# -ne 2 ]; then | ||
echo "Usage: $0 <COMMENT_ID> <BODY>" | ||
exit -1 | ||
fi | ||
|
||
comment_id=$1 | ||
body=$2 | ||
|
||
old_comment_body=$( | ||
curl -sL \ | ||
-H "Accept: application/vnd.github.v3+json" \ | ||
-H "Authorization: token $SECRETS_WORKFLOW" \ | ||
"${GITHUB_API_URL}/repos/microsoft/LightGBM/issues/comments/$comment_id" | \ | ||
jq '.body' | ||
) | ||
body=${body/failure/failure ❌} | ||
body=${body/error/failure ❌} | ||
body=${body/cancelled/failure ❌} | ||
body=${body/timed_out/failure ❌} | ||
body=${body/success/success ✔️} | ||
data=$( | ||
jq -n \ | ||
--argjson body "${old_comment_body%?}\r\n\r\n$body\"" \ | ||
'{"body":$body}' | ||
) | ||
curl -sL \ | ||
-X PATCH \ | ||
-H "Accept: application/vnd.github.v3+json" \ | ||
-H "Authorization: token $SECRETS_WORKFLOW" \ | ||
-d "$data" \ | ||
"${GITHUB_API_URL}/repos/microsoft/LightGBM/issues/comments/$comment_id" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
# coding: utf-8 | ||
"""Get the most recent status of workflow for the current PR. | ||
[usage] | ||
python get_workflow_status.py TRIGGER_PHRASE | ||
TRIGGER_PHRASE: Code phrase that triggers workflow. | ||
""" | ||
import json | ||
from os import environ | ||
from sys import argv, exit | ||
from time import sleep | ||
try: | ||
from urllib import request | ||
except ImportError: | ||
import urllib2 as request | ||
|
||
|
||
def get_runs(trigger_phrase): | ||
"""Get all triggering workflow comments in the current PR. | ||
Parameters | ||
---------- | ||
trigger_phrase : string | ||
Code phrase that triggers workflow. | ||
Returns | ||
------- | ||
pr_runs : list | ||
List of comment objects sorted by the time of creation in decreasing order. | ||
""" | ||
pr_runs = [] | ||
if environ.get("GITHUB_EVENT_NAME", "") == "pull_request": | ||
pr_number = int(environ.get("GITHUB_REF").split('/')[-2]) | ||
req = request.Request(url="{}/repos/microsoft/LightGBM/issues/{}/comments".format(environ.get("GITHUB_API_URL"), | ||
pr_number), | ||
headers={"Accept": "application/vnd.github.v3+json"}) | ||
url = request.urlopen(req) | ||
data = json.loads(url.read().decode('utf-8')) | ||
url.close() | ||
pr_runs = [i for i in data | ||
if i['author_association'].lower() in {'owner', 'member', 'collaborator'} | ||
and i['body'].startswith('/gha run {}'.format(trigger_phrase))] | ||
return pr_runs[::-1] | ||
|
||
|
||
def get_status(runs): | ||
"""Get the most recent status of workflow for the current PR. | ||
Parameters | ||
---------- | ||
runs : list | ||
List of comment objects sorted by the time of creation in decreasing order. | ||
Returns | ||
------- | ||
status : string | ||
The most recent status of workflow. | ||
Can be 'success', 'failure' or 'in-progress'. | ||
""" | ||
status = 'success' | ||
for run in runs: | ||
body = run['body'] | ||
if "Status: " in body: | ||
if "Status: skipped" in body: | ||
continue | ||
if "Status: failure" in body: | ||
status = 'failure' | ||
break | ||
if "Status: success" in body: | ||
status = 'success' | ||
break | ||
else: | ||
status = 'in-progress' | ||
break | ||
return status | ||
|
||
|
||
if __name__ == "__main__": | ||
trigger_phrase = argv[1] | ||
while True: | ||
status = get_status(get_runs(trigger_phrase)) | ||
if status != 'in-progress': | ||
break | ||
sleep(60) | ||
if status == 'failure': | ||
exit(1) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
#!/bin/bash | ||
# | ||
# [description] | ||
# Rerun specified workflow for given pull request. | ||
# | ||
# [usage] | ||
# rerun_workflow.sh <WORKFLOW_ID> <PR_NUMBER> <PR_BRANCH> | ||
# | ||
# WORKFLOW_ID: Identifier (config name of ID) of a workflow to be rerun. | ||
# | ||
# PR_NUMBER: Number of pull request for which workflow should be rerun. | ||
# | ||
# PR_BRANCH: Name of pull request's branch. | ||
|
||
set -e | ||
|
||
if [ -z "$GITHUB_ACTIONS" ]; then | ||
echo "Must be run inside GitHub Actions CI" | ||
exit -1 | ||
fi | ||
|
||
if [ $# -ne 3 ]; then | ||
echo "Usage: $0 <WORKFLOW_ID> <PR_NUMBER> <PR_BRANCH>" | ||
exit -1 | ||
fi | ||
|
||
workflow_id=$1 | ||
pr_number=$2 | ||
pr_branch=$3 | ||
|
||
runs=$( | ||
curl -sL \ | ||
-H "Accept: application/vnd.github.v3+json" \ | ||
-H "Authorization: token $SECRETS_WORKFLOW" \ | ||
"${GITHUB_API_URL}/repos/microsoft/LightGBM/actions/workflows/${workflow_id}/runs?event=pull_request&branch=${pr_branch}" | \ | ||
jq '.workflow_runs' | ||
) | ||
runs=$(echo $runs | jq --arg pr_number "$pr_number" --arg pr_branch "$pr_branch" 'map(select(.event == "pull_request" and ((.pull_requests | length) != 0 and (.pull_requests[0].number | tostring) == $pr_number or .head_branch == $pr_branch)))') | ||
runs=$(echo $runs | jq 'sort_by(.run_number) | reverse') | ||
|
||
if [[ $(echo $runs | jq 'length') -gt 0 ]]; then | ||
curl -sL \ | ||
-X POST \ | ||
-H "Accept: application/vnd.github.v3+json" \ | ||
-H "Authorization: token $SECRETS_WORKFLOW" \ | ||
"${GITHUB_API_URL}/repos/microsoft/LightGBM/actions/runs/$(echo $runs | jq '.[0].id')/rerun" | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
#!/bin/bash | ||
# | ||
# [description] | ||
# Set a status with a given name to the specified commit. | ||
# | ||
# [usage] | ||
# set_commit_status.sh <NAME> <STATUS> <SHA> | ||
# | ||
# NAME: Name of status. | ||
# Status with existing name overwrites a previous one. | ||
# | ||
# STATUS: Status to be set. | ||
# Can be "error", "failure", "pending" or "success". | ||
# | ||
# SHA: SHA of a commit to set a status on. | ||
|
||
set -e | ||
|
||
if [ -z "$GITHUB_ACTIONS" ]; then | ||
echo "Must be run inside GitHub Actions CI" | ||
exit -1 | ||
fi | ||
|
||
if [ $# -ne 3 ]; then | ||
echo "Usage: $0 <NAME> <STATUS> <SHA>" | ||
exit -1 | ||
fi | ||
|
||
name=$1 | ||
|
||
status=$2 | ||
status=${status/error/failure} | ||
status=${status/cancelled/failure} | ||
status=${status/timed_out/failure} | ||
status=${status/in_progress/pending} | ||
status=${status/queued/pending} | ||
|
||
sha=$3 | ||
|
||
data=$( | ||
jq -n \ | ||
--arg state $status \ | ||
--arg url "${GITHUB_SERVER_URL}/microsoft/LightGBM/actions/runs/${GITHUB_RUN_ID}" \ | ||
--arg name "$name" \ | ||
'{"state":$state,"target_url":$url,"context":$name}' | ||
) | ||
|
||
curl -sL \ | ||
-X POST \ | ||
-H "Accept: application/vnd.github.v3+json" \ | ||
-H "Authorization: token $SECRETS_WORKFLOW" \ | ||
-d "$data" \ | ||
"${GITHUB_API_URL}/repos/microsoft/LightGBM/statuses/$sha" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.