Skip to content
Snippets Groups Projects
build-all 2.31 KiB
Newer Older
Ralf Jung's avatar
Ralf Jung committed
#!/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`).

Ralf Jung's avatar
Ralf Jung committed
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)
Ralf Jung's avatar
Ralf Jung committed
if not "IRIS_REV" in os.environ:
    print("Please set IRIS_REV, STDPP_REV, ORC11_REV and GPFSL_REV environment variables to the branch/tag/commit of the respective project that you want to use.")
    print("Only IRIS_REV is mandatory, the rest defaults to 'master'.")
    sys.exit(1)
Ralf Jung's avatar
Ralf Jung committed
GITLAB_TOKEN = os.environ["GITLAB_TOKEN"]
PROJECTS = [
Ralf Jung's avatar
Ralf Jung committed
    { 'name': 'examples', 'branch': 'master', 'vars': ['STDPP_REV', 'IRIS_REV'] },
Ralf Jung's avatar
Ralf Jung committed
    { 'name': 'lambda-rust', 'branch': 'master', 'vars': ['STDPP_REV', 'IRIS_REV'] },
Ralf Jung's avatar
Ralf Jung committed
    { 'name': 'lambda-rust', 'branch': 'ci/weak_mem', 'vars': ['STDPP_REV', 'IRIS_REV', 'ORC11_REV', 'GPFSL_REV'] }, # covers GPFSL and ORC11
Ralf Jung's avatar
Ralf Jung committed
    { 'name': 'iron', 'branch': 'master', 'vars': ['STDPP_REV', 'IRIS_REV'] },
Ralf Jung's avatar
Ralf Jung committed
    { 'name': 'ora', 'branch': 'master', 'vars': ['STDPP_REV', 'IRIS_REV'] },
    { 'name': 'reloc', 'branch': 'master', 'vars': ['STDPP_REV', 'IRIS_REV'] },
    { 'name': 'c', 'branch': 'master', 'vars': ['STDPP_REV', 'IRIS_REV'] },
    { 'name': 'tutorial-popl18', 'branch': 'master', 'vars': ['STDPP_REV', 'IRIS_REV'] },
Ralf Jung's avatar
Ralf Jung committed
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']))