aboutsummaryrefslogtreecommitdiff
path: root/run-jjb.py
blob: 1df8a92379bef6cada212b8310b84a0044b42006 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/python

import os
import shutil
import signal
import string
import subprocess
import sys
from distutils.spawn import find_executable

jjb_cmd = find_executable('jenkins-job-builder') or sys.exit('jenkins-job-builder is not found.')

try:
    arguments = ['git', 'diff', '--name-only',
                 os.environ.get('GIT_PREVIOUS_COMMIT'),
                 os.environ.get('GIT_COMMIT')]
    proc = subprocess.Popen(arguments,
                            stdin=subprocess.PIPE,
                            stdout=subprocess.PIPE,
                            universal_newlines=False,
                            preexec_fn=lambda:
                            signal.signal(signal.SIGPIPE, signal.SIG_DFL))
except (OSError, ValueError) as e:
    raise ValueError("%s" % e)

data = proc.communicate()[0]
if proc.returncode != 0:
    raise ValueError("command has failed with code '%s'" % proc.returncode)

for conf_filename in data.splitlines():
    if conf_filename.endswith('.yaml') and '/' not in conf_filename:
        with open(conf_filename) as f:
            buffer = f.read()
            template = string.Template(buffer)
        buffer = template.safe_substitute(
            PUBLISH_KEY=os.environ.get('PUBLISH_KEY') or
                        sys.exit('Key is not defined.'),
            AUTH_TOKEN=os.environ.get('AUTH_TOKEN'),
            PRIVATE_KEY=os.environ.get('PRIVATE_KEY'),
            COVERITY_TOKEN_ODP=os.environ.get('COVERITY_TOKEN_ODP'),
            COVERITY_TOKEN_ODP_DPDK=os.environ.get('COVERITY_TOKEN_ODP_DPDK'),
            COVERITY_TOKEN_ODP_KS2=os.environ.get('COVERITY_TOKEN_ODP_KS2'),
            COVERITY_TOKEN_ODP_NETMAP=os.environ.get('COVERITY_TOKEN_ODP_NETMAP'),
            LT_QCOM_KEY=os.environ.get('LT_QCOM_KEY'),
            LT_QUALCOMM_PRIVATE_KEY=os.environ.get('LT_QUALCOMM_PRIVATE_KEY'),
            LAVA_USER=os.environ.get('LAVA_USER'),
            LAVA_TOKEN=os.environ.get('LAVA_TOKEN'))
        with open('template.yaml', 'w') as f:
            f.write(buffer)
        try:
            arguments = [jjb_cmd, 'update', 'template.yaml']
            # arguments = [jjb_cmd, 'test', conf_filename, '-o', 'out']
            proc = subprocess.Popen(arguments,
                                    stdin=subprocess.PIPE,
                                    stdout=subprocess.PIPE,
                                    universal_newlines=False,
                                    preexec_fn=lambda:
                                    signal.signal(signal.SIGPIPE, signal.SIG_DFL))
        except (OSError, ValueError) as e:
            raise ValueError("%s" % e)

        data = proc.communicate()[0]
        if proc.returncode != 0:
            raise ValueError("command has failed with code '%s'" % proc.returncode)

        os.remove('template.yaml')
        #shutil.rmtree('out')