[CORD-2484] Adding macros for JJB jobs

Change-Id: Id76399d2eb950ccca292f1a1b958900728712448
diff --git a/jjb/cord-macros.yaml b/jjb/cord-macros.yaml
new file mode 100644
index 0000000..fec8d43
--- /dev/null
+++ b/jjb/cord-macros.yaml
@@ -0,0 +1,76 @@
+---
+# CORD JJB macros
+
+# control how long builds and artifact are retained
+- property:
+    name: cord-infra-properties
+    properties:
+      - build-discarder:
+          days-to-keep: '{build-days-to-keep}'
+          artifact-num-to-keep: '{artifact-num-to-keep}'
+
+# checkout entire source tree with repo
+# docs: https://docs.openstack.org/infra/jenkins-job-builder/scm.html#scm.repo
+- scm:
+    name: cord-infra-gerrit-repo-scm
+    scm:
+      - repo:
+          manifest-url: '{gerrit-server-url}'
+          manifest-branch: '{branch}'
+          destination-dir: '{destination-dir}'
+          jobs: 4
+          reset-first: true
+          depth: 1
+
+# download a specific patchset after checking out enitre source tree with repo
+# docs: https://docs.openstack.org/infra/jenkins-job-builder/builders.html#builders.inject
+- builder:
+    name: cord-infra-gerrit-repo-patch
+    builders:
+      - inject:
+          properties-content: |
+            GERRIT_PROJECT={project}
+            GERRIT_CHANGE_NUMBER={change-number}
+            GERRIT_PATCHSET_NUMBER={patchset-number}
+      - shell: !include-raw-escape: shell/repopatch.sh
+
+# trigger on gerrit patchsets and actions
+# docs: https://docs.openstack.org/infra/jenkins-job-builder/triggers.html#triggers.gerrit
+- trigger:
+    name: cord-infra-gerrit-trigger-patchset
+    triggers:
+      gerrit:
+        server-name: '{gerrit-server-name}'
+        dependency-jobs: '{dependency-jobs}'
+        silent-start: true
+        trigger-on:
+          - patchset-created-event:
+              exclude-drafts: true
+              exclude-trivial-rebase: false
+              exclude-no-code-change: true
+          - draft-published-event
+          - comment-added-contains-event:
+              comment-contains-value: '(?i)^.*recheck$'
+        projects:
+          - project-compare-type: REG_EXP
+            project-pattern: '{project-regexp}'
+            branches:
+              - branch-compare-type: REG_EXP
+                branch-pattern: '{branch-regexp}'
+
+# trigger on gerrit commits/merges
+- trigger:
+    name: cord-infra-gerrit-trigger-merge
+    triggers:
+      gerrit:
+        server-name: '{gerrit-server-name}'
+        dependency-jobs: '{dependency-jobs}'
+        silent-start: True
+        trigger-on:
+          - change-merged-event
+        projects:
+          - project-compare-type: REG_EXP
+            project-pattern: '{project-regexp}'
+            branches:
+              - branch-compare-type: REG_EXP
+                branch-pattern: '{branch-regexp}'