You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by mo...@apache.org on 2017/03/04 06:34:43 UTC
zeppelin git commit: [ZEPPELIN-2123] [branch-0.7] backport
travis_check.py to branch-0.7
Repository: zeppelin
Updated Branches:
refs/heads/branch-0.7 ec3d0d32b -> f0ef74b11
[ZEPPELIN-2123] [branch-0.7] backport travis_check.py to branch-0.7
### What is this PR for?
ZEPPELIN-2123 introduces travis_check.py to scale out CI capacity.
However travis_check.py does not exists in branch-0.7, and PR to branch-0.7 marked as a green without regardless of the actual build result.
Since we're planning to make more releases from branch-0.7 and target branch of some PRs are branch-0.7, i think we need travis_check.py on branch-0.7, too.
### What type of PR is it?
Feature
### Todos
* [x] - bring travis_check.py to branch-0.7
### What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-2123
### How should this be tested?
Check Jenkins successfully read build status from travis for PR targeting branch-0.7. (this PR)
### Questions:
* Does the licenses files need update? no
* Is there breaking changes for older versions? no
* Does this needs documentation? no
Author: Lee moon soo <mo...@apache.org>
Closes #2082 from Leemoonsoo/branch-0.7_travis_check_backport and squashes the following commits:
f24a5e0 [Lee moon soo] Lambda to function
1c5559f [Lee moon soo] make 3rd param override check interval. usage in the comment
ab31b21 [Lee moon soo] increase polling count. beautifulize output
92577b5 [Lee moon soo] Flush output
7267943 [Lee moon soo] branch name is not really necessary
bf655a1 [Lee moon soo] Add some comments and remove test code
f30c3c1 [Lee moon soo] Travis build status check script
Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/f0ef74b1
Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/f0ef74b1
Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/f0ef74b1
Branch: refs/heads/branch-0.7
Commit: f0ef74b119f8d7ea7c5f7d0f9eaa74a50eb69d25
Parents: ec3d0d3
Author: Lee moon soo <mo...@apache.org>
Authored: Sat Feb 18 14:25:38 2017 +0900
Committer: Lee moon soo <mo...@apache.org>
Committed: Sat Mar 4 15:34:15 2017 +0900
----------------------------------------------------------------------
travis_check.py | 122 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 122 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/f0ef74b1/travis_check.py
----------------------------------------------------------------------
diff --git a/travis_check.py b/travis_check.py
new file mode 100644
index 0000000..a2fa288
--- /dev/null
+++ b/travis_check.py
@@ -0,0 +1,122 @@
+#
+# 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.
+
+#
+# This script checks build status of given pullrequest identified by author and commit hash.
+#
+# usage)
+# python travis_check.py [author] [commit hash] [check interval (optional)]
+#
+# example)
+# # full hash
+# python travis_check.py Leemoonsoo 1f2549a38f440ebfbfe2d32a041684e3e39b496c
+#
+# # with short hash
+# python travis_check.py Leemoonsoo 1f2549a
+#
+# # with custom check interval
+# python travis_check.py Leemoonsoo 1f2549a 5,60,60
+
+import os, sys, getopt, traceback, json, requests, time
+
+author = sys.argv[1]
+commit = sys.argv[2]
+
+# check interval in sec
+check = [5, 60, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 600, 600, 600, 600, 600, 600]
+
+if len(sys.argv) > 3:
+ check = map(lambda x: int(x), sys.argv[3].split(","))
+
+def info(msg):
+ print("[" + time.strftime("%Y-%m-%d %H:%M:%S") + "] " + msg)
+ sys.stdout.flush()
+
+info("Author: " + author + ", commit: " + commit)
+
+
+def getBuildStatus(author, commit):
+ travisApi = "https://api.travis-ci.org/"
+
+ # get latest 25 builds
+ resp = requests.get(url=travisApi + "/repos/" + author + "/zeppelin/builds")
+ data = json.loads(resp.text)
+
+ build = None
+ for b in data:
+ if b["commit"][:len(commit)] == commit:
+ resp = requests.get(url=travisApi + "/repos/" + author + "/zeppelin/builds/" + str(b["id"]))
+ build = json.loads(resp.text)
+ break
+
+ return build
+
+def status(index, msg, jobId):
+ return '{:20}'.format("[" + str(index+1) + "] " + msg) + "https://travis-ci.org/" + author + "/zeppelin/jobs/" + str(jobId)
+
+def printBuildStatus(build):
+ failure = 0
+ running = 0
+
+ for index, job in enumerate(build["matrix"]):
+ result = job["result"]
+ jobId = job["id"]
+
+ if job["started_at"] == None and result == None:
+ print(status(index, "Not started", jobId))
+ running = running + 1
+ elif job["started_at"] != None and job["finished_at"] == None:
+ print(status(index, "Running ...", jobId))
+ running = running + 1
+ elif job["started_at"] != None and job["finished_at"] != None:
+ if result == None:
+ print(status(index, "Not completed", jobId))
+ failure = failure + 1
+ elif result == 0:
+ print(status(index, "OK", jobId))
+ else:
+ print(status(index, "Error " + str(result), jobId))
+ failure = failure + 1
+ else:
+ print(status(index, "Unknown state", jobId))
+ failure = failure + 1
+
+ return failure, running
+
+
+for sleep in check:
+ info("--------------------------------")
+ time.sleep(sleep);
+ info("Get build status ...")
+ build = getBuildStatus(author, commit)
+ if build == None:
+ info("Can't find build for commit= " + commit)
+ sys.exit(1)
+
+ print("Build https://travis-ci.org/" + author + "/zeppelin/builds/" + str(build["id"]))
+ failure, running = printBuildStatus(build)
+
+ print(str(failure) + " job(s) failed, " + str(running) + " job(s) running/pending")
+
+ if failure != 0:
+ sys.exit(1)
+
+ if failure == 0 and running == 0:
+ info("CI Green!")
+ sys.exit(0)
+
+info("Timeout")
+sys.exit(1)