Copy built artifact into zuul artifact location

The job builds a war which is something should collect, both so
that people can grab copies of it and so that subsequent jobs can
process it further. Copy to the canonical zuul-output location.

For plugin builds, this copies the plugin jar instead.

Change-Id: I2d0b030592909f76ce182f07b1b4ccf14c5bbdbd
diff --git a/roles/bazelisk-build/README.rst b/roles/bazelisk-build/README.rst
index fd07d01..95f8910 100644
--- a/roles/bazelisk-build/README.rst
+++ b/roles/bazelisk-build/README.rst
@@ -21,6 +21,16 @@
    The path to the bazelisk executable.  See
    :zuul:role:`ensure-bazelisk`.
 
+.. zuul:rolevar:: bazelisk_artifacts
+   :default: []
+
+   Paths (relative to zuul_work_dir) of artifacts to collect.
+
+.. zuul:rolevar:: zuul_output_dir
+   :default: {{ ansible_user_dir }}/zuul-output
+
+   Base directory for collecting job output.
+
 .. zuul:rolevar:: zuul_work_dir
    :default: {{ ansible_user_dir }}/{{ zuul.project.src_dir}}
 
diff --git a/roles/bazelisk-build/defaults/main.yaml b/roles/bazelisk-build/defaults/main.yaml
index 5760549..6a5e01d 100644
--- a/roles/bazelisk-build/defaults/main.yaml
+++ b/roles/bazelisk-build/defaults/main.yaml
@@ -1,4 +1,6 @@
 bazelisk_targets: ""
 bazelisk_test_targets: ""
 bazelisk_executable: bazelisk
+bazelisk_artifacts: []
+zuul_output_dir: "{{ ansible_user_dir }}/zuul-output"
 zuul_work_dir: "{{ ansible_user_dir }}/{{ zuul.project.src_dir}}"
diff --git a/roles/bazelisk-build/tasks/main.yaml b/roles/bazelisk-build/tasks/main.yaml
index 987c390..71f0e31 100644
--- a/roles/bazelisk-build/tasks/main.yaml
+++ b/roles/bazelisk-build/tasks/main.yaml
@@ -15,3 +15,18 @@
     chdir: "{{ zuul_work_dir }}"
   register: test_result
   failed_when: test_result.rc not in [0, 4]
+- name: Copy output to artifacts location
+  loop: "{{ bazelisk_artifacts }}"
+  command: "cp {{ item }} {{ zuul_output_dir }}/artifacts"
+  args:
+    chdir: "{{ zuul_work_dir }}"
+- name: Return built artifacts to Zuul
+  loop: "{{ bazelisk_artifacts }}"
+  zuul_return:
+    data:
+      zuul:
+        artifacts:
+          - name: "Build"
+            url: "artifacts/{{ item | basename }}"
+            metadata:
+              type: java_jar
diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index 6769056..fdb3343 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -37,6 +37,8 @@
     timeout: 3600
     vars:
       bazelisk_targets: ":release"
+      bazelisk_artifacts:
+        - bazel-bin/release.war
       zuul_work_dir: "{{ ansible_user_dir }}/src/gerrit.googlesource.com/gerrit"
 
 - job:
@@ -67,4 +69,6 @@
       gerrit_plugin: "{{ zuul.project.short_name }}"
       bazelisk_targets: "plugins/{{ gerrit_plugin }}:{{ gerrit_plugin }}"
       bazelisk_test_targets: "plugins/{{ gerrit_plugin }}/..."
+      bazelisk_artifacts:
+        - "bazel-bin/plugins/{{ gerrit_plugin }}/{{ gerrit_plugin }}.jar"
       zuul_work_dir: "{{ ansible_user_dir }}/src/gerrit.googlesource.com/gerrit"