Esempio n. 1
0
    def setUp(self):
        self.setUpTestReactor()
        # ignore config error if txrequests is not installed
        self.patch(config, '_errors', Mock())
        self.master = fakemaster.make_master(self,
                                             wantData=True,
                                             wantDb=True,
                                             wantMq=True)

        yield self.master.startService()
        self._http = yield fakehttpclientservice.HTTPClientService.getFakeService(
            self.master,
            self,
            HOSTED_BASE_URL,
            headers={'PRIVATE-TOKEN': 'XXYYZZ'},
            debug=None,
            verify=None)
        self.sp = sp = GitLabStatusPush(Interpolate('XXYYZZ'))
        sp.sessionFactory = Mock(return_value=Mock())
        yield sp.setServiceParent(self.master)
Esempio n. 2
0
 def reconfigService(self,
                     base_url,
                     user,
                     password,
                     key=None,
                     statusName=None,
                     startDescription=None,
                     endDescription=None,
                     verbose=False,
                     **kwargs):
     yield http.HttpStatusPushBase.reconfigService(self,
                                                   wantProperties=True,
                                                   **kwargs)
     self.key = key or Interpolate('%(prop:buildername)s')
     self.statusName = statusName
     self.endDescription = endDescription or 'Build done.'
     self.startDescription = startDescription or 'Build started.'
     self.verbose = verbose
     self._http = yield httpclientservice.HTTPClientService.getService(
         self.master, base_url, auth=(user, password))
Esempio n. 3
0
    def reconfigService(self, token,
                        startDescription=None, endDescription=None,
                        context=None, baseURL=None, verbose=False, wantProperties=True, **kwargs):

        token = yield self.renderSecrets(token)
        yield super().reconfigService(wantProperties=wantProperties, **kwargs)

        self.context = context or Interpolate('buildbot/%(prop:buildername)s')
        self.startDescription = startDescription or 'Build started.'
        self.endDescription = endDescription or 'Build done.'
        if baseURL is None:
            baseURL = HOSTED_BASE_URL
        if baseURL.endswith('/'):
            baseURL = baseURL[:-1]
        self.baseURL = baseURL
        self._http = yield httpclientservice.HTTPClientService.getService(
            self.master, baseURL, headers={'PRIVATE-TOKEN': token},
            debug=self.debug, verify=self.verify)
        self.verbose = verbose
        self.project_ids = {}
Esempio n. 4
0
    def reconfigService(self,
                        token,
                        startDescription=None,
                        endDescription=None,
                        context=None,
                        baseURL=None,
                        verbose=False,
                        **kwargs):
        yield http.HttpStatusPushBase.reconfigService(self, **kwargs)

        self.context = context or Interpolate('buildbot/%(prop:buildername)s')
        self.startDescription = startDescription or 'Build started.'
        self.endDescription = endDescription or 'Build done.'
        if baseURL is None:
            baseURL = HOSTED_BASE_URL
        if baseURL.endswith('/'):
            baseURL = baseURL[:-1]
        self.baseURL = baseURL
        self.session.headers.update({'Authorization': 'token ' + token})
        self.verbose = verbose
Esempio n. 5
0
    def setUp(self):
        self.setUpTestReactor()

        self.setup_reporter_test()
        # repository must be in the form http://gitlab/<owner>/<project>
        self.reporter_test_repo = 'http://gitlab/buildbot/buildbot'

        # ignore config error if txrequests is not installed
        self.patch(config, '_errors', Mock())
        self.master = fakemaster.make_master(self, wantData=True, wantDb=True,
                                             wantMq=True)

        yield self.master.startService()
        self._http = yield fakehttpclientservice.HTTPClientService.getService(
            self.master, self,
            HOSTED_BASE_URL, headers={'PRIVATE-TOKEN': 'XXYYZZ'},
            debug=None, verify=None)
        self.sp = GitLabStatusPush(Interpolate('XXYYZZ'))
        self.sp.sessionFactory = Mock(return_value=Mock())
        yield self.sp.setServiceParent(self.master)
Esempio n. 6
0
    def __init__(self, token, repoOwner, repoName, sha=None,
                 startDescription=None, endDescription=None,
                 baseURL=None):
        """
        Token for GitHub API.
        """
        if not GitHubAPI:
            config.error('GitHubStatus requires txgithub package installed')

        StatusReceiverMultiService.__init__(self)

        self._sha = sha or Interpolate("%(src::revision)s")
        self._repoOwner = repoOwner
        self._repoName = repoName
        self._startDescription = startDescription or "Build started."
        self._endDescription = endDescription or "Build done."

        self._github = GitHubAPI(oauth2_token=token, baseURL=baseURL)

        self._status = None
Esempio n. 7
0
def makeOmnibusFactory(distribution):
    factory = getFlockerFactory(python="python2.7")
    factory.addSteps(installDependencies())
    factory.addSteps(check_version())
    factory.addStep(
        ShellCommand(name='build-sdist',
                     description=["building", "sdist"],
                     descriptionDone=["build", "sdist"],
                     command=[
                         virtualenvBinary('python'),
                         "setup.py",
                         "sdist",
                     ],
                     haltOnFailure=True))
    factory.addStep(
        ShellCommand(command=[
            virtualenvBinary('python'),
            'admin/build-package',
            '--destination-path',
            'repo',
            '--distribution',
            distribution,
            Interpolate('/flocker/dist/Flocker-%(prop:version)s.tar.gz'),
        ],
                     name='build-package',
                     description=['building', 'package'],
                     descriptionDone=['build', 'package'],
                     haltOnFailure=True))

    repository_path = resultPath('omnibus', discriminator=distribution)

    factory.addStep(
        DirectoryUpload(
            'repo',
            repository_path,
            url=resultURL('omnibus', discriminator=distribution),
            name="upload-repo",
        ))
    factory.addSteps(createRepository(distribution, repository_path))

    return factory
    def setUp(self):
        self.setUpTestReactor()
        # ignore config error if txrequests is not installed
        self.patch(config, '_errors', Mock())
        self.master = fakemaster.make_master(testcase=self,
                                             wantData=True,
                                             wantDb=True,
                                             wantMq=True)

        yield self.master.startService()
        self._http = yield fakehttpclientservice.HTTPClientService.getFakeService(
            self.master,
            self,
            "http://gitea",
            headers={'Authorization': 'token XXYYZZ'},
            debug=None,
            verify=None)
        self.sp = sp = GiteaStatusPush("http://gitea/", Interpolate('XXYYZZ'))
        sp.sessionFactory = Mock(return_value=Mock())

        yield sp.setServiceParent(self.master)
def masterConfig():
    c = {}
    from buildbot.config import BuilderConfig
    from buildbot.process.factory import BuildFactory
    from buildbot.plugins import schedulers, steps

    c['schedulers'] = [
        schedulers.ForceScheduler(
            name="force",
            builderNames=["testy"])]

    c['secretsProviders'] = [FakeSecretStorage(
        secretdict={"foo": "bar", "something": "more"})]
    f = BuildFactory()
    f.addStep(steps.ShellCommand(command=Interpolate('echo %(secrets:foo)s')))

    c['builders'] = [
        BuilderConfig(name="testy",
                      workernames=["local1"],
                      factory=f)]
    return c
Esempio n. 10
0
    def setUp(self):
        self.setUpTestReactor()

        self.setup_reporter_test()

    # repository must be in the form http://gitea/<owner>/<project>
        self.reporter_test_repo = u'http://gitea/buildbot/buildbot'

        # ignore config error if txrequests is not installed
        self.patch(config, '_errors', Mock())
        self.master = fakemaster.make_master(testcase=self,
                                             wantData=True, wantDb=True, wantMq=True)

        yield self.master.startService()
        self._http = yield fakehttpclientservice.HTTPClientService.getService(
            self.master, self,
            "http://gitea", headers={'Authorization': 'token XXYYZZ'},
            debug=None, verify=None)
        self.sp = GiteaStatusPush("http://gitea/", Interpolate('XXYYZZ'))

        yield self.sp.setServiceParent(self.master)
Esempio n. 11
0
    def test_constr_args(self):
        # test that the args to IRC(..) make it all the way down to
        # the IrcStatusBot class
        s = self.makeIRC(host='host',
                         nick='nick',
                         channels=['channels'],
                         pm_to_nicks=['pm', 'to', 'nicks'],
                         noticeOnChannel=True,
                         port=1234,
                         tags=['tags'],
                         password=Interpolate('pass'),
                         notify_events={
                             'successToFailure': 1,
                         },
                         showBlameList=False,
                         useRevisions=True,
                         useSSL=False,
                         useSASL=False,
                         lostDelay=10,
                         failedDelay=20,
                         useColors=False)
        yield s.startService()

        # patch it up
        factory = self.factory
        proto_obj = mock.Mock(name='proto_obj')
        factory.protocol = mock.Mock(name='protocol', return_value=proto_obj)

        # run it
        p = factory.buildProtocol('address')
        self.assertIdentical(p, proto_obj)
        factory.protocol.assert_called_with('nick',
                                            'pass', ['channels'],
                                            ['pm', 'to', 'nicks'],
                                            True, {}, ['tags'],
                                            {'successToFailure': 1},
                                            useColors=False,
                                            useSASL=False,
                                            useRevisions=True,
                                            showBlameList=False)
Esempio n. 12
0
 def test_create_artifact_directory_with_customArtifactPath_as_Interpolate(
         self):
     customArtifactPath = Interpolate("Art-%(src:fmod:revision)s")
     sourcestamp = StubSourceStamp()
     self.setupStep(artifact.CreateArtifactDirectory(
         artifactDirectory="mydir",
         artifactServer='*****@*****.**',
         artifactServerDir='/home/srv/web/dir',
         artifactServerPort=222,
         customArtifactPath=customArtifactPath),
                    sources={'fmod': sourcestamp})
     self.expectCommands(
         ExpectShell(
             workdir='wkdir',
             usePTY='slave-config',
             command=[
                 'ssh', '*****@*****.**', '-p 222', 'cd /home/srv/web/dir;',
                 'mkdir -p ', 'Art-abcde/mydir'
             ]) + ExpectShell.log('stdio', stdout='') + 0)
     self.expectOutcome(result=SUCCESS,
                        status_text=['Remote artifact directory created.'])
     return self.runStep()
Esempio n. 13
0
    def reconfigService(self,
                        token,
                        startDescription=None,
                        endDescription=None,
                        context=None,
                        baseURL=None,
                        verbose=False,
                        **kwargs):
        yield http.HttpStatusPushBase.reconfigService(self, **kwargs)

        self.context = context or Interpolate('buildbot/%(prop:buildername)s')
        self.startDescription = startDescription or 'Build started.'
        self.endDescription = endDescription or 'Build done.'
        if baseURL is None:
            baseURL = HOSTED_BASE_URL
        if baseURL.endswith('/'):
            baseURL = baseURL[:-1]
        self.baseURL = baseURL
        self._http = yield httpclientservice.HTTPClientService.getService(
            self.master, baseURL, headers={'PRIVATE-TOKEN': token})
        self.verbose = verbose
        self.project_ids = {}
Esempio n. 14
0
 def test_addBuildsetForChanges_properties_with_virtual_builders(self):
     sched = self.makeScheduler(name='n', builderNames=['c'], properties={
         'virtual_builder_name': Interpolate("myproject-%(src::branch)s")
     })
     self.db.insertTestData([
         fakedb.SourceStamp(id=234, branch='dev1', project="linux"),
         fakedb.Change(changeid=14, sourcestampid=234, branch="dev1"),
     ])
     bsid, brids = yield sched.addBuildsetForChanges(reason='downstream',
                                                     waited_for=False, changeids=[14])
     self.assertEqual((bsid, brids), self.exp_bsid_brids)
     self.master.data.updates.addBuildset.assert_called_with(
         waited_for=False,
         builderids=[1],
         external_idstring=None,
         properties={
             'virtual_builder_name': ("myproject-dev1", "Scheduler"),
             'scheduler': ('n', 'Scheduler'),
         },
         reason='downstream',
         scheduler='n',
         sourcestamps=[234])
Esempio n. 15
0
    def reconfigService(self, token,
                        startDescription=None, endDescription=None,
                        context=None, baseURL=None, verbose=False,
                        destRepoOwner=None, destRepoName=None, **kwargs):
        yield http.HttpStatusPushBase.reconfigService(self, **kwargs)

        self.context = context or Interpolate('buildbot/%(prop:buildername)s')
        self.startDescription = startDescription or 'Build started.'
        self.endDescription = endDescription or 'Build done.'
        self.destRepoOwner = destRepoOwner
        self.destRepoName = destRepoName
        if baseURL is None:
            baseURL = HOSTED_BASE_URL
        if baseURL.endswith('/'):
            baseURL = baseURL[:-1]

        self._http = yield httpclientservice.HTTPClientService.getService(
            self.master, baseURL, headers={
                'Authorization': 'token ' + token,
                'User-Agent': 'Buildbot'
            })
        self.verbose = verbose
Esempio n. 16
0
def get_clone_step():
    from buildbot.steps.source.git import Git
    from buildbot.steps.master import SetProperty
    from buildbot.process.properties import Interpolate

    return [
        Git(description=['cloning'],
            descriptionDone=['clone'],
            hideStepIf=skipped_or_success,
            repourl=Interpolate('%(prop:repository)s'),
            mode='full',
            shallow=16,
            method='clobber',
            getDescription={'tags': True},
            retry=(1, 120),
            progress=True,
            env={
                'GIT_CURL_VERBOSE': '1',
                'GIT_TRACE': '1'
            },
            logEnviron=False)
    ]
Esempio n. 17
0
    def setUp(self):
        self.setUpTestReactor()

        self.setup_reporter_test()
        # repository must be in the form http://gitlab/<owner>/<project>
        self.reporter_test_repo = 'http://gitlab/buildbot/buildbot'

        self.master = fakemaster.make_master(self,
                                             wantData=True,
                                             wantDb=True,
                                             wantMq=True)

        yield self.master.startService()
        self._http = yield fakehttpclientservice.HTTPClientService.getService(
            self.master,
            self,
            HOSTED_BASE_URL,
            headers={'PRIVATE-TOKEN': 'XXYYZZ'},
            debug=None,
            verify=None)
        self.sp = GitLabStatusPush(Interpolate('XXYYZZ'))
        yield self.sp.setServiceParent(self.master)
Esempio n. 18
0
def _make_factory_step_generator(project_name, project_git_uri, make_command=None, workdir="/srv/buildbot"):
    make_factory_steps = [
            Git(
                name = "Executing %s content fetch" % project_name,
                repourl=project_git_uri,
                mode='incremental'
                ),
            ShellCommand(
                name = "Executing %s: 'make %s'" % ( project_name, make_command ),
                command = [
                    "make",
                    make_command
                    ]
                ),
            DirectoryUpload(
                slavesrc="build",
                masterdest=Interpolate(
                    "/srv/output/%(kw:project_name)s/%(src::branch)s", 
                    ) 
                )
            ]
    return make_factory_steps
Esempio n. 19
0
def masterConfig():
    c = {}
    from buildbot.config import BuilderConfig
    from buildbot.process.factory import BuildFactory
    from buildbot.plugins import schedulers

    c['schedulers'] = [
        schedulers.ForceScheduler(name="force", builderNames=["testy"])
    ]

    c['secretsProviders'] = [
        HashiCorpVaultSecretProvider(vaultToken='my_vaulttoken',
                                     vaultServer="http://localhost:8200")
    ]

    f = BuildFactory()
    f.addStep(ShellCommand(command=[Interpolate('echo %(secret:key)s')]))

    c['builders'] = [
        BuilderConfig(name="testy", workernames=["local1"], factory=f)
    ]
    return c
Esempio n. 20
0
    def reconfigService(self,
                        baseURL,
                        auth,
                        verification_name=None,
                        abstain=False,
                        category=None,
                        reporter=None,
                        verbose=False,
                        debug=None,
                        verify=None,
                        generators=None,
                        **kwargs):
        auth = yield self.renderSecrets(auth)
        self.debug = debug
        self.verify = verify
        self.verbose = verbose

        if generators is None:
            generators = self._create_default_generators()

        yield super().reconfigService(generators=generators, **kwargs)

        if baseURL.endswith('/'):
            baseURL = baseURL[:-1]

        self._http = yield httpclientservice.HTTPClientService.getService(
            self.master,
            baseURL,
            auth=auth,
            debug=self.debug,
            verify=self.verify)

        self._verification_name = verification_name or Interpolate(
            '%(prop:buildername)s')
        self._reporter = reporter or "buildbot"
        self._abstain = abstain
        self._category = category
        self._verbose = verbose
Esempio n. 21
0
 def reconfigService(self,
                     base_url,
                     user,
                     password,
                     key=None,
                     statusName=None,
                     startDescription=None,
                     endDescription=None,
                     verbose=False,
                     **kwargs):
     user, password = yield self.renderSecrets(user, password)
     yield super().reconfigService(wantProperties=True, **kwargs)
     self.key = key or Interpolate('%(prop:buildername)s')
     self.context = statusName
     self.endDescription = endDescription or 'Build done.'
     self.startDescription = startDescription or 'Build started.'
     self.verbose = verbose
     self._http = yield httpclientservice.HTTPClientService.getService(
         self.master,
         base_url,
         auth=(user, password),
         debug=self.debug,
         verify=self.verify)
Esempio n. 22
0
def mkdocsfactory():
    f = factory.BuildFactory()
    f.addSteps([
        gitStep,
        FileDownload(mastersrc="virtualenv.py", slavedest="virtualenv.py", flunkOnFailure=True),

    # run docs tools in their own virtualenv, otherwise we end up documenting
    # the version of Buildbot running the metabuildbot!
    VirtualenvSetup(name='virtualenv setup',
        no_site_packages=True,
        virtualenv_packages=['sphinx==1.2.2', 'Pygments==2.0.1', '--editable=master[docs]', '--editable=slave'],
        virtualenv_dir='sandbox',
        haltOnFailure=True),

    # manual
    ShellCommand(command=Interpolate(textwrap.dedent("""\
        export VERSION=latest &&
        . sandbox/bin/activate &&
        gmake docs
        """)), name="create docs"),

    ])
    return f
Esempio n. 23
0
    def __init__(self, token, repoOwner, repoName, sha=None,
                 startDescription=None, endDescription=None):
        """
        Token for GitHub API.
        """
        StatusReceiverMultiService.__init__(self)

        if not sha:
            sha = Interpolate("%(src::revision)s")

        if not startDescription:
            startDescription = "Build started."
        self._startDescription = startDescription

        if not endDescription:
            endDescription = "Build done."
        self._endDescription = endDescription

        self._token = token
        self._sha = sha
        self._repoOwner = repoOwner
        self._repoName = repoName
        self._github = GitHubAPI(oauth2_token=self._token)
Esempio n. 24
0
    def createReporter(self,
                       auth=("username", "passwd"),
                       headers=None,
                       **kwargs):
        self._http = yield fakehttpclientservice.HTTPClientService.getService(
            self.master,
            self,
            "serv",
            auth=auth,
            headers=headers,
            debug=None,
            verify=None)

        interpolated_auth = None
        if auth is not None:
            username, passwd = auth
            passwd = Interpolate(passwd)
            interpolated_auth = (username, passwd)

        self.sp = HttpStatusPush("serv",
                                 auth=interpolated_auth,
                                 headers=headers,
                                 **kwargs)
        yield self.sp.setServiceParent(self.master)
Esempio n. 25
0
def StandardBuilderWorker(name, **kwargs):
    password = ''.join(random.SystemRandom().choice(string.ascii_uppercase +
                                                    string.digits)
                       for _ in range(32))
    tmpfs = docker.types.Mount('/tmp', None, type='tmpfs')
    return DockerLatentWorker(
        name,
        password,
        docker_host=config.docker_socket,
        image=Interpolate('workers/%(prop:workerimage)s'),
        masterFQDN=buildbot_ip,
        volumes=[
            '{0}/ccache:/data/ccache'.format(config.buildbot_data_dir),
            '{0}/src:/data/src:ro'.format(config.buildbot_data_dir),
            '{0}/builds:/data/builds'.format(config.buildbot_data_dir, name),
            '{0}/packages:/data/packages'.format(config.buildbot_data_dir),
            '{0}/bshomes:/data/bshomes'.format(config.buildbot_data_dir),
        ],
        hostconfig={
            'network_mode': 'workers-net',
            'read_only': True,
            'mounts': [tmpfs],
        },
        **kwargs)
 def test_custom_name(self):
     yield self.createGerritStatus(
         verification_name=Interpolate("builder %(prop:buildername)s"))
     build = yield self.setupBuildResults(SUCCESS)
     # we make sure proper calls to txrequests have been made
     self._http.expect(
         method='post',
         ep='/a/changes/12/revisions/2/verify-status~verifications',
         json={
             'comment': 'Build started.',
             'abstain': False,
             'name': u'builder Builder0',
             'reporter': 'buildbot',
             'url': 'http://localhost:8080/#builders/79/builds/0',
             'value': 0,
             'duration': 'pending'
         })
     self._http.expect(
         method='post',
         ep='/a/changes/12/revisions/2/verify-status~verifications',
         json={
             'comment': 'Build done.',
             'abstain': False,
             'name': u'builder Builder0',
             'reporter': 'buildbot',
             'url': 'http://localhost:8080/#builders/79/builds/0',
             'value': 1,
             'duration': '2h 1m 4s'
         })
     build['complete'] = False
     build['complete_at'] = None
     self.sp.buildStarted(("build", 20, "started"), build)
     build['complete'] = True
     build['complete_at'] = build['started_at'] + datetime.timedelta(
         hours=2, minutes=1, seconds=4)
     self.sp.buildFinished(("build", 20, "finished"), build)
Esempio n. 27
0
 def test_resultdir_renderable(self):
     resultdir_text = "RESULT"
     self.setup_step(
         mock.Mock(root='TESTROOT',
                   resultdir=Interpolate('%(kw:resultdir)s',
                                         resultdir=resultdir_text)))
     self.expect_commands(
         ExpectRmdir(dir=[
             'build/RESULT/build.log', 'build/RESULT/root.log',
             'build/RESULT/state.log'
         ],
                     log_environ=False).exit(0),
         ExpectShell(workdir='wkdir',
                     command=[
                         'mock', '--root', 'TESTROOT', '--resultdir',
                         'RESULT'
                     ],
                     logfiles={
                         'build.log': 'RESULT/build.log',
                         'root.log': 'RESULT/root.log',
                         'state.log': 'RESULT/state.log'
                     }).exit(0))
     self.expect_outcome(result=SUCCESS, state_string="'mock --root ...'")
     return self.run_step()
Esempio n. 28
0
 def test_architecture_renderable(self):
     self.setup_step(
         pbuilder.DebPbuilder(architecture=Interpolate('amd64')))
     self.expect_commands(
         ExpectStat(
             file='/var/cache/pbuilder/stable-amd64-buildbot.tgz').exit(1),
         ExpectShell(workdir='wkdir',
                     command=[
                         'sudo', '/usr/sbin/pbuilder', '--create',
                         '--basetgz',
                         '/var/cache/pbuilder/stable-amd64-buildbot.tgz',
                         '--distribution', 'stable', '--mirror',
                         'http://cdn.debian.net/debian/', '--architecture',
                         'amd64'
                     ]).exit(0),
         ExpectShell(workdir='wkdir',
                     command=[
                         'pdebuild', '--buildresult', '.', '--pbuilder',
                         '/usr/sbin/pbuilder', '--architecture', 'amd64',
                         '--', '--buildresult', '.', '--basetgz',
                         '/var/cache/pbuilder/stable-amd64-buildbot.tgz'
                     ]).exit(0))
     self.expect_outcome(result=SUCCESS)
     return self.run_step()
Esempio n. 29
0
    def __init__(self, *args, **kwargs):
        util.BuildFactory.__init__(self, *args, **kwargs)

        title = 'Liri OS'
        releasever = '30'

        self.addSteps([
            ImagePropertiesStep(name='set properties'),
            steps.ShellCommand(
                name='update container',
                haltOnFailure=True,
                command=['dnf', 'update', '-y'],
            ),
            steps.ShellCommand(
                name='install tools',
                haltOnFailure=True,
                command=[
                    'dnf', 'install', '-y', 'git', 'spin-kickstarts',
                    'pykickstart', 'livecd-tools'
                ],
            ),
            steps.Git(
                name='checkout sources',
                codebase=util.Property('codebase'),
                repourl=util.Property('repository'),
                branch=util.Property('branch'),
                mode='incremental',
                submodules=True,
                shallow=True,
            ),
            steps.ShellCommand(
                name='ksflatten',
                haltOnFailure=True,
                command=[
                    'ksflatten',
                    Interpolate('--config=%(prop:product)s-livecd.ks'), '-o',
                    'livecd.ks'
                ],
            ),
            steps.RemoveDirectory(
                name='clean cache',
                dir='/build/cache',
                doStepIf=IsCacheDisabled,
            ),
            steps.ShellCommand(
                name='build image',
                haltOnFailure=True,
                timeout=60 * 60,
                command=[
                    'livecd-creator', '--releasever=' + releasever,
                    '--config=livecd.ks',
                    Interpolate('--fslabel=%(prop:imgname)s'), '--title',
                    title,
                    Interpolate('--product=%(prop:product)s'),
                    '--cache=/build/cache'
                ],
            ),
            steps.ShellCommand(
                name='checksum',
                haltOnFailure=True,
                command=[
                    'bash', '-c',
                    Interpolate(
                        'sha256sum -b --tag %(prop:isofilename)s > /repo/images/nightly/%(prop:checksumfilename)s'
                    )
                ],
            ),
            steps.ShellCommand(
                name='move file',
                command=[
                    'mv',
                    Interpolate('%(prop:isofilename)s'),
                    '/repo/images/nightly/'
                ],
            ),
            steps.ShellCommand(
                name='remove old images',
                command=[
                    'bash', '-c',
                    'find /repo/images/nightly -type f -mtime +7 -exec rm {} \;'
                ],
            )
        ])
Esempio n. 30
0
def get_whl_filename(abi):
    "Returns the name of a .whl file for uploading, for the given Python ABI."

    return Interpolate("panda3d-%s-%s-%s.whl", whl_version, abi,
                       platform_under)