From 1ad48c098334bbfbc91759398de29ade0ec12fef Mon Sep 17 00:00:00 2001
From: Roman Gorshunov <roman.gorshunov@att.com>
Date: Wed, 30 Sep 2020 10:07:26 +0200
Subject: [PATCH] Reduce Zuul CI pool workload

Added patterns of files which should and should not trigger jobs on Zuul CI,
to reduce workload imposed onto the CI infrastructure.

Change-Id: I7081c7a2a4902a29e571dce1133465f2821d71a3
---
 zuul.d/jobs.yaml     | 23 ++++++++++++++++-------
 zuul.d/projects.yaml | 12 ++++++------
 2 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index 97de3c9fd..e30e28023 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -14,6 +14,8 @@
     name: airship-airshipctl-roles-test
     run: tests/ansible/role-test-runner.yaml
     nodeset: airship-airshipctl-single-node
+    files:
+      - ^roles/.*$
 
 - job:
     name: airship-airshipctl-golint
@@ -21,12 +23,19 @@
     run: playbooks/airship-airshipctl-golint.yaml
     nodeset: airship-airshipctl-single-node
     voting: false
+    files: &gofiles
+      - ^Makefile$
+      - ^\.golangci\.yaml$
+      - ^(go\.(mod|sum)|.*\.go)$
+      - ^playbooks/airship-airshipctl-(golint|lint-unit)\.yaml$
+      - ^tools/(coverage_check|golint|gomod_check|install_linter)$
 
 - job:
     name: airship-airshipctl-lint-unit
     pre-run: playbooks/airship-airshipctl-deploy-docker.yaml
     run: playbooks/airship-airshipctl-lint-unit.yaml
     nodeset: airship-airshipctl-single-node
+    files: *gofiles
 
 - job:
     name: airship-airshipctl-update-github-issues
@@ -41,9 +50,11 @@
     name: airship-airshipctl-build-image
     nodeset: airship-airshipctl-single-node
     run: playbooks/airship-airshipctl-build-images.yaml
-    irrelevant-files:
-      - ^.*\.md$
+    irrelevant-files: &noncodefiles
+      - ^certs/.*$
       - ^docs/.*$
+      - ^.*\.md$
+      - ^\.github/.*$
 
 - job:
     name: airship-airshipctl-validate-site-docs
@@ -51,6 +62,7 @@
       - playbooks/airship-airshipctl-deploy-docker.yaml
     run: playbooks/airshipctl-gate-runner.yaml
     nodeset: airship-airshipctl-single-node
+    irrelevant-files: *noncodefiles
     vars:
       gate_scripts:
         - ./tools/deployment/01_install_kubectl.sh
@@ -84,11 +96,7 @@
     post-run: playbooks/airship-collect-logs.yaml
     run: playbooks/airshipctl-gate-runner.yaml
     nodeset: airship-airshipctl-single-16GB-bionic-node
-    irrelevant-files:
-      - ^certs/.*$
-      - ^docs/.*$
-      - ^.*\.md$
-      - ^\.github/.*$
+    irrelevant-files: *noncodefiles
     vars:
       site_name: test-site
       gate_scripts:
@@ -121,6 +129,7 @@
     name: airship-airshipctl-publish-image
     parent: airship-airshipctl-build-image
     post-run: playbooks/airship-airshipctl-publish-images.yaml
+    irrelevant-files: *noncodefiles
     secrets:
       - name: airshipctl_image_repo_credentials
         secret: airshipctl_image_repo_credentials
diff --git a/zuul.d/projects.yaml b/zuul.d/projects.yaml
index 6cbe32d33..6086e7354 100644
--- a/zuul.d/projects.yaml
+++ b/zuul.d/projects.yaml
@@ -15,19 +15,19 @@
       sphinx_build_dir: docs/build
     check:
       jobs:
-        - airship-airshipctl-roles-test:
+        - openstack-tox-docs: &docs
             files:
-              - "roles/*"
-        - openstack-tox-docs
-        - airship-airshipctl-lint-unit
+              - ^docs/.*$
         - airship-airshipctl-golint
+        - airship-airshipctl-lint-unit
+        - airship-airshipctl-roles-test
         - airship-airshipctl-build-image
         - airship-airshipctl-validate-site-docs
 #        - airship-airshipctl-functional-existing-k8s TODO: Enable this when functional tests exist, and a cluster is up
         - airship-airshipctl-gate-script-runner
     gate:
       jobs:
-        - openstack-tox-docs
+        - openstack-tox-docs: *docs
         - airship-airshipctl-lint-unit
         - airship-airshipctl-build-image
         - airship-airshipctl-validate-site-docs
@@ -38,5 +38,5 @@
         - airship-airshipctl-upload-git-mirror
     promote:
       jobs:
-        - promote-airship-project-docs
+        - promote-airship-project-docs: *docs
         - airship-airshipctl-update-github-issues