buildmaster: add support for task artifacts for dev

This commit is contained in:
Martin Krizek 2015-02-26 08:32:19 +00:00
parent 965904e542
commit b445832e93
6 changed files with 40 additions and 1 deletions

View file

@ -35,3 +35,4 @@ fakefedorainfra_endpoint: fakefedorainfra
fakefedorainfra_url: https://taskotron-dev.fedoraproject.org/fakefedorainfra fakefedorainfra_url: https://taskotron-dev.fedoraproject.org/fakefedorainfra
taskotron_docs_url: https://docs.qadevel.cloud.fedoraproject.org/libtaskotron/latest/ taskotron_docs_url: https://docs.qadevel.cloud.fedoraproject.org/libtaskotron/latest/
freezes: false freezes: false
public_artifacts_dir: /srv/taskotron/artifacts

View file

@ -26,3 +26,4 @@ landingpage_title: "Taskotron"
deployment_type: prod deployment_type: prod
tcp_ports: [ 80, 443, "{{ buildslave_port }}" ] tcp_ports: [ 80, 443, "{{ buildslave_port }}" ]
taskotron_docs_url: https://docs.qadevel.cloud.fedoraproject.org/libtaskotron/latest/ taskotron_docs_url: https://docs.qadevel.cloud.fedoraproject.org/libtaskotron/latest/
public_artifacts_dir: /srv/taskotron/artifacts

View file

@ -31,3 +31,4 @@ fakefedorainfra_endpoint: fakefedorainfra
fakefedorainfra_url: https://taskotron.stg.fedoraproject.org/fakefedorainfra fakefedorainfra_url: https://taskotron.stg.fedoraproject.org/fakefedorainfra
taskotron_docs_url: https://docs.qadevel.cloud.fedoraproject.org/libtaskotron/latest/ taskotron_docs_url: https://docs.qadevel.cloud.fedoraproject.org/libtaskotron/latest/
freezes: false freezes: false
public_artifacts_dir: /srv/taskotron/artifacts

View file

@ -142,6 +142,7 @@ from buildbot.steps.source.git import Git
from buildbot.steps.shell import ShellCommand from buildbot.steps.shell import ShellCommand
from buildbot.process.properties import Property, Interpolate from buildbot.process.properties import Property, Interpolate
from buildbot.steps.slave import RemoveDirectory from buildbot.steps.slave import RemoveDirectory
from buildbot.steps.transfer import DirectoryUpload, FileUpload
factory = BuildFactory() factory = BuildFactory()
@ -161,15 +162,31 @@ factory.addStep(ShellCommand(command=["runtask", '-i',
Interpolate('%(prop:item_type)s'), Interpolate('%(prop:item_type)s'),
'-a', Interpolate('%(prop:arch)s'), '-a', Interpolate('%(prop:arch)s'),
'-j', Interpolate('%(prop:buildername)s/%(prop:buildnumber)s'), '-j', Interpolate('%(prop:buildername)s/%(prop:buildnumber)s'),
{% if deployment_type == 'dev' %}
'--uuid', Interpolate('%(prop:uuid)s'),
{% endif %}
Interpolate('%(prop:taskname)s.yml')], Interpolate('%(prop:taskname)s.yml')],
descriptionDone=[Interpolate('%(prop:taskname)s on %(prop:item)s')], descriptionDone=[Interpolate('%(prop:taskname)s on %(prop:item)s')],
name='runtask', name='runtask',
logfiles={'taskotron.log': {'filename': '/var/log/taskotron/taskotron.log', }})) logfiles={'taskotron.log': {'filename': '/var/log/taskotron/taskotron.log', }}))
{% if deployment_type == 'dev' %}
# create artifacts task_output directory
factory.addStep(ShellCommand(command=['mkdir', '-p', '{{ public_artifacts_dir }}/%(prop:uuid)s/task_output']))
# copy artifacts to master
factory.addStep(DirectoryUpload(slavesrc=Interpolate('/var/lib/taskotron/artifacts/%(prop:uuid)s/'),
masterdest=Interpolate('{{ public_artifacts_dir }}/%(prop:uuid)s/task_output')))
# copy taskotron log to master
factory.addStep(FileUpload(slavesrc="/var/log/taskotron/taskotron.log",
masterdest=Interpolate('{{ public_artifacts_dir }}/%(prop:uuid)s/taskotron.log')))
{% else %}
# capture the taskotron log # capture the taskotron log
factory.addStep(ShellCommand(command=["cat", "/var/log/taskotron/taskotron.log"], name="cat_log", factory.addStep(ShellCommand(command=["cat", "/var/log/taskotron/taskotron.log"], name="cat_log",
descriptionDone=['Store log'])) descriptionDone=['Store log']))
{% endif %}
####### RESOURCE LOCKS ####### RESOURCE LOCKS
# #

View file

@ -23,6 +23,19 @@
notify: notify:
- restart httpd - restart httpd
- name: copy artifacts httpd config
when: deployment_type == 'dev'
template: src=artifacts.conf.j2 dest=/etc/httpd/conf.d/artifacts.conf owner=root group=root
notify:
- restart httpd
- name: create artifacts directory
when: deployment_type == 'dev'
file: path={{ item }} state=directory owner=buildmaster group=buildmaster mode=0775 setype=httpd_sys_content_t
with_items:
- /srv/taskotron
- /srv/taskotron/artifacts
- name: ensure buildmaster database is created - name: ensure buildmaster database is created
when: buildmaster_db_host != 'localhost' when: buildmaster_db_host != 'localhost'
delegate_to: "{{ buildmaster_db_host }}" delegate_to: "{{ buildmaster_db_host }}"

View file

@ -0,0 +1,6 @@
Alias /artifacts /srv/taskotron/artifacts
<Directory "/srv/taskotron/artifacts">
Options +Indexes
AllowOverride None
Require all granted
</Directory>