Beispiel #1
0
    def create_job_plan(self, job, plan):
        job_plan = JobPlan(
            project_id=job.project_id,
            build_id=job.build_id,
            plan_id=plan.id,
            job_id=job.id,
        )
        db.session.add(job_plan)
        db.session.commit()

        return job_plan
Beispiel #2
0
def execute_build(build):
    # TODO(dcramer): most of this should be abstracted into sync_build as if it
    # were a "im on step 0, create step 1"
    project = build.project

    jobs = []
    for plan in project.plans:
        job = Job(
            build=build,
            build_id=build.id,
            project=project,
            project_id=project.id,
            source=build.source,
            source_id=build.source_id,
            status=build.status,
            label=plan.label,
        )

        db.session.add(job)

        jobplan = JobPlan(
            project=project,
            job=job,
            build=build,
            plan=plan,
        )

        db.session.add(jobplan)

        jobs.append(job)

    db.session.commit()

    publish_build_update(build)

    for job in jobs:
        publish_job_update(job)
        create_job.delay(
            job_id=job.id.hex,
            task_id=job.id.hex,
            parent_task_id=job.build_id.hex,
        )

    db.session.commit()

    sync_build.delay(
        build_id=job.build_id.hex,
        task_id=job.build_id.hex,
    )

    return build
Beispiel #3
0
def job(build, change=None, **kwargs):
    kwargs.setdefault('project', build.project)
    kwargs.setdefault('label', get_sentences(1)[0][:128])
    kwargs.setdefault('status', Status.finished)
    kwargs.setdefault('result', Result.passed)
    kwargs.setdefault('duration', random.randint(10000, 100000))

    if 'source' not in kwargs:
        kwargs['source'] = source(build.repository)

    kwargs['source_id'] = kwargs['source'].id
    kwargs['project_id'] = kwargs['project'].id
    kwargs['build_id'] = build.id
    if change:
        kwargs['change_id'] = change.id

    job = Job(build=build, change=change, **kwargs)
    db.session.add(job)

    node, _ = get_or_create(Node, where={
        'label': get_sentences(1)[0][:32],
    })

    jobplan = JobPlan(
        plan=plan(),
        build=build,
        project=job.project,
        job=job,
    )
    db.session.add(jobplan)

    phase1_setup = JobPhase(
        project=job.project,
        job=job,
        status=Status.finished,
        result=Result.passed,
        label='Setup',
    )
    db.session.add(phase1_setup)

    phase1_compile = JobPhase(
        project=job.project,
        job=job,
        status=Status.finished,
        result=Result.passed,
        label='Compile',
    )
    db.session.add(phase1_compile)

    phase1_test = JobPhase(
        project=job.project,
        job=job,
        status=kwargs['status'],
        result=kwargs['result'],
        label='Test',
    )
    db.session.add(phase1_test)

    step = JobStep(
        project=job.project,
        job=job,
        phase=phase1_setup,
        status=phase1_setup.status,
        result=phase1_setup.result,
        label='Setup',
        node=node,
    )
    db.session.add(step)

    step = JobStep(
        project=job.project,
        job=job,
        phase=phase1_compile,
        status=phase1_compile.status,
        result=phase1_compile.result,
        label='Compile',
        node=node,
    )
    db.session.add(step)

    step = JobStep(
        project=job.project,
        job=job,
        phase=phase1_test,
        status=phase1_test.status,
        result=phase1_test.result,
        label=TEST_STEP_LABELS.next(),
        node=node,
    )
    db.session.add(step)
    step = JobStep(
        project=job.project,
        job=job,
        phase=phase1_test,
        status=phase1_test.status,
        result=phase1_test.result,
        label=TEST_STEP_LABELS.next(),
        node=node,
    )
    db.session.add(step)

    return job