#!/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. # Set the GITLAB_TOKEN environment variable to a GitLab access token. # Set at least one of IRIS_REV or STDPP_REV to control which branches of these projects to build against # (default to `master`). 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) 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'] }, ] 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']))