From cdb90fa223b11dff4c93d0e232f1f0935a193f70 Mon Sep 17 00:00:00 2001
From: Ralf Jung <jung@mpi-sws.org>
Date: Fri, 24 May 2019 22:24:28 +0200
Subject: [PATCH] rewrite build-all in python

---
 build-all | 49 ++++++++++++++++++++++++-------------------------
 1 file changed, 24 insertions(+), 25 deletions(-)

diff --git a/build-all b/build-all
index cb81c68ff..6d68a2339 100755
--- a/build-all
+++ b/build-all
@@ -1,5 +1,6 @@
-#!/bin/bash
-set -eo pipefail
+#!/usr/bin/python3
+import sys, os
+import requests
 
 # A script to build Iris' reverse-dependencies (the one that usually get built every night against Iris master)
 # against a branch of your choice.
@@ -7,28 +8,26 @@ set -eo pipefail
 # Set at least one of IRIS_REV or STDPP_REV to control which branches of these projects to build against
 # (default to `master`).
 
-if [[ -z "$GITLAB_TOKEN" ]]; then
-    echo "You need to set the GITLAB_TOKEN environment variable to a GitLab access token."
-    echo "You can create such tokens at <https://gitlab.mpi-sws.org/profile/personal_access_tokens>."
-    echo "Make sure you grant access to the 'api' scope."
-    exit 1
-fi
+if not "GITLAB_TOKEN" in os.environ:
+    print("You need to set the GITLAB_TOKEN environment variable to a GitLab access token.")
+    print("You can create such tokens at <https://gitlab.mpi-sws.org/profile/personal_access_tokens>.")
+    print("Make sure you grant access to the 'api' scope.")
+    sys.exit(1)
 
-IRIS_REV=${IRIS_REV:-master}
-STDPP_REV=${STDPP_REV:-master}
+GITLAB_TOKEN = os.environ["GITLAB_TOKEN"]
+PROJECTS = [
+    { 'name': 'lambda-rust', 'branch': 'master', 'vars': ['STDPP_REV', 'IRIS_REV'] },
+    { 'name': 'lambda-rust', 'branch': 'ci/weak_mem', 'vars': ['STDPP_REV', 'IRIS_REV', 'ORC11_REV', 'GPFSL_REV'] },
+    { 'name': 'iron', 'branch': 'master', 'vars': ['STDPP_REV', 'IRIS_REV'] },
+]
 
-curl --fail -sS -X POST https://gitlab.mpi-sws.org/api/v4/projects/iris%2Flambda-rust/pipeline \
-     --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \
-     --header "Content-Type: application/json" \
-     --data '{ "ref": "master", "variables": [ {"key": "STDPP_REV", "value": "'"$STDPP_REV"'"}, {"key": "IRIS_REV", "value": "'"$IRIS_REV"'"} ] }'
-echo
-curl --fail -sS -X POST https://gitlab.mpi-sws.org/api/v4/projects/iris%2Flambda-rust/pipeline \
-     --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \
-     --header "Content-Type: application/json" \
-     --data '{ "ref": "ci/weak_mem", "variables": [ {"key": "STDPP_REV", "value": "'"$STDPP_REV"'"}, {"key": "IRIS_REV", "value": "'"$IRIS_REV"'"}, {"key": "ORC11_REV", "value": "master"}, {"key": "GPFSL_REV", "value": "master"} ] }'
-echo
-curl --fail -sS -X POST https://gitlab.mpi-sws.org/api/v4/projects/iris%2Firon/pipeline \
-     --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \
-     --header "Content-Type: application/json" \
-     --data '{ "ref": "master", "variables": [ {"key": "STDPP_REV", "value": "'"$STDPP_REV"'"}, {"key": "IRIS_REV", "value": "'"$IRIS_REV"'"} ] }'
-echo
+for project in PROJECTS:
+    print("Triggering build for {}{}...".format(project['name'], '' if project['branch'] == 'master' else ':'+project['branch']))
+    url = "https://gitlab.mpi-sws.org/api/v4/projects/iris%2F{}/pipeline".format(project['name'])
+    json = {
+        'ref': project['branch'],
+        'variables': list(map(lambda var: { 'key': var, 'value': os.environ.get(var, "master") }, project['vars'])),
+    }
+    r = requests.post(url, headers={'PRIVATE-TOKEN': GITLAB_TOKEN}, json=json)
+    r.raise_for_status()
+    print("    Pipeline running at {}".format(r.json()['web_url']))
-- 
GitLab