diff --git a/inventory/group_vars/taskotron-dev b/inventory/group_vars/taskotron-dev index ecabd4e29e..c3f8ecca19 100644 --- a/inventory/group_vars/taskotron-dev +++ b/inventory/group_vars/taskotron-dev @@ -35,3 +35,4 @@ fakefedorainfra_endpoint: fakefedorainfra fakefedorainfra_url: https://taskotron-dev.fedoraproject.org/fakefedorainfra taskotron_docs_url: https://docs.qadevel.cloud.fedoraproject.org/libtaskotron/latest/ freezes: false +public_artifacts_dir: /srv/taskotron/artifacts diff --git a/inventory/group_vars/taskotron-prod b/inventory/group_vars/taskotron-prod index 444419121c..a4b3c223a2 100644 --- a/inventory/group_vars/taskotron-prod +++ b/inventory/group_vars/taskotron-prod @@ -26,3 +26,4 @@ landingpage_title: "Taskotron" deployment_type: prod tcp_ports: [ 80, 443, "{{ buildslave_port }}" ] taskotron_docs_url: https://docs.qadevel.cloud.fedoraproject.org/libtaskotron/latest/ +public_artifacts_dir: /srv/taskotron/artifacts diff --git a/inventory/group_vars/taskotron-stg b/inventory/group_vars/taskotron-stg index 7c68af1d75..d1300df218 100644 --- a/inventory/group_vars/taskotron-stg +++ b/inventory/group_vars/taskotron-stg @@ -31,3 +31,4 @@ fakefedorainfra_endpoint: fakefedorainfra fakefedorainfra_url: https://taskotron.stg.fedoraproject.org/fakefedorainfra taskotron_docs_url: https://docs.qadevel.cloud.fedoraproject.org/libtaskotron/latest/ freezes: false +public_artifacts_dir: /srv/taskotron/artifacts diff --git a/roles/taskotron/buildmaster-configure/templates/taskotron.master.cfg.j2 b/roles/taskotron/buildmaster-configure/templates/taskotron.master.cfg.j2 index 4ac0ec96dc..1e907bfbb7 100644 --- a/roles/taskotron/buildmaster-configure/templates/taskotron.master.cfg.j2 +++ b/roles/taskotron/buildmaster-configure/templates/taskotron.master.cfg.j2 @@ -142,6 +142,7 @@ from buildbot.steps.source.git import Git from buildbot.steps.shell import ShellCommand from buildbot.process.properties import Property, Interpolate from buildbot.steps.slave import RemoveDirectory +from buildbot.steps.transfer import DirectoryUpload, FileUpload factory = BuildFactory() @@ -161,15 +162,31 @@ factory.addStep(ShellCommand(command=["runtask", '-i', Interpolate('%(prop:item_type)s'), '-a', Interpolate('%(prop:arch)s'), '-j', Interpolate('%(prop:buildername)s/%(prop:buildnumber)s'), +{% if deployment_type == 'dev' %} + '--uuid', Interpolate('%(prop:uuid)s'), +{% endif %} Interpolate('%(prop:taskname)s.yml')], descriptionDone=[Interpolate('%(prop:taskname)s on %(prop:item)s')], name='runtask', 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 factory.addStep(ShellCommand(command=["cat", "/var/log/taskotron/taskotron.log"], name="cat_log", descriptionDone=['Store log'])) - +{% endif %} ####### RESOURCE LOCKS # diff --git a/roles/taskotron/buildmaster/tasks/main.yml b/roles/taskotron/buildmaster/tasks/main.yml index 5244240d80..780b3e4680 100644 --- a/roles/taskotron/buildmaster/tasks/main.yml +++ b/roles/taskotron/buildmaster/tasks/main.yml @@ -23,6 +23,19 @@ notify: - 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 when: buildmaster_db_host != 'localhost' delegate_to: "{{ buildmaster_db_host }}" diff --git a/roles/taskotron/buildmaster/templates/artifacts.conf.j2 b/roles/taskotron/buildmaster/templates/artifacts.conf.j2 new file mode 100644 index 0000000000..268da8374f --- /dev/null +++ b/roles/taskotron/buildmaster/templates/artifacts.conf.j2 @@ -0,0 +1,6 @@ +Alias /artifacts /srv/taskotron/artifacts + + Options +Indexes + AllowOverride None + Require all granted +