summaryrefslogtreecommitdiff
path: root/hacking/shippable/get_recent_coverage_runs.py
diff options
context:
space:
mode:
Diffstat (limited to 'hacking/shippable/get_recent_coverage_runs.py')
-rwxr-xr-xhacking/shippable/get_recent_coverage_runs.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/hacking/shippable/get_recent_coverage_runs.py b/hacking/shippable/get_recent_coverage_runs.py
new file mode 100755
index 0000000000..88f5b3a985
--- /dev/null
+++ b/hacking/shippable/get_recent_coverage_runs.py
@@ -0,0 +1,68 @@
+#!/usr/bin/env python
+
+# (c) 2020 Red Hat, Inc.
+#
+# This file is part of Ansible
+#
+# Ansible is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Ansible is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+
+import requests
+import sys
+
+BRANCH = 'temp-2.10-devel'
+
+if len(sys.argv) > 1:
+ BRANCH = sys.argv[1]
+
+
+def get_coverage_runs():
+ response = requests.get(
+ 'https://api.shippable.com/runs?projectIds=573f79d02a8192902e20e34b'
+ '&branch=%s&limit=1000' % BRANCH)
+
+ if response.status_code != 200:
+ raise Exception(response.content)
+
+ runs = response.json()
+
+ coverage_runs = []
+ criteria = ['COMPLETE="yes"', 'COVERAGE="yes"']
+
+ for run in runs:
+ injected_vars = run.get('cleanRunYml', {}).get('env', {}).get('injected')
+ if not injected_vars:
+ continue
+ if all(criterion in injected_vars for criterion in criteria):
+ coverage_runs.append(run)
+
+ return coverage_runs
+
+
+def pretty_coverage_runs(runs):
+ for run in sorted(runs, key=lambda x: x['endedAt']):
+ if run['statusCode'] == 30:
+ print('🙂 [PASS] https://app.shippable.com/github/ansible/ansible/runs/%s (%s)' % (run['runNumber'], run['endedAt']))
+ else:
+ print('😢 [FAIL] https://app.shippable.com/github/ansible/ansible/runs/%s (%s)' % (run['runNumber'], run['endedAt']))
+
+
+def main():
+ pretty_coverage_runs(get_coverage_runs())
+
+
+if __name__ == '__main__':
+ main()