Merge "Validate only template/platform that is built"
[releng/global-jjb.git] / jjb / lf-ci-jobs.yaml
index a01ce2b..2330d28 100644 (file)
       - github-jjb-merge
       - github-jjb-verify
 
+- job-group:
+    name: '{project-name}-info-yaml-jobs'
+
+    jobs:
+      - gerrit-info-yaml-verify
+
+- job-group:
+    name: '{project-name}-github-info-yaml-jobs'
+
+    jobs:
+      - github-info-yaml-verify
+
 - job-group:
     name: '{project-name}-packer-jobs'
 
@@ -24,7 +36,6 @@
       - gerrit-packer-merge
       - gerrit-packer-verify
 
-
 - job-group:
     name: '{project-name}-github-packer-jobs'
 
@@ -67,7 +78,7 @@
     stream: master
     submodule-recursive: true
     packer-cloud-settings: packer-cloud-env
-    packer-version: 1.2.2
+    packer-version: 1.2.3
 
     #####################
     # Job Configuration #
         pattern: '.*\.groovy'
       - compare-type: REG_EXP
         pattern: '.*\.sh'
+      - compare-type: REG_EXP
+        pattern: '.*\.bat'
+      - compare-type: REG_EXP
+        pattern: '.*\.ps1'
       - compare-type: REG_EXP
         pattern: '.*\.(yaml|yml)'
       - compare-type: REG_EXP
     github_included_regions:
       - '.*\.groovy'
       - '.*\.sh'
+      - '.*\.bat'
+      - '.*\.ps1'
       - '.*\.(yaml|yml)'
       - '.*\/global-jjb'
 
     <<: *lf_jenkins_cfg_merge
 
     properties:
+      - lf-infra-properties:
+          project: '{project}'
+          build-days-to-keep: 1
       - github:
           url: '{git-url}/{github-org}/{project}'
 
     ######################
 
     branch: master
-    git-url: '$GIT_URL/$GERRIT_PROJECT'
+    # jjb-deploy should always clone $PROJECT regardless of what
+    # $GERRIT_PROJECT triggered the job.
+    git-url: '$GIT_URL/$PROJECT'
     stream: master
     gerrit_jjb_deploy_job_triggers:
       - comment-added-contains-event:
     <<: *lf_jjb_deploy_job
 
     properties:
+      - lf-infra-properties:
+          project: '{project}'
+          build-days-to-keep: 1
       - github:
           url: '{git-url}/{github-org}/{project}'
 
     #####################
 
     properties:
+      - lf-infra-properties:
+          project: '{project}'
+          build-days-to-keep: 7
       - github:
           url: '{git-url}/{github-org}/{project}'
 
           exclude-no-code-change: false
       - draft-published-event
       - comment-added-contains-event:
-          comment-contains-value: recheck$
+          comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
 
     #####################
     # Job Configuration #
     #####################
 
     properties:
+      - lf-infra-properties:
+          project: '{project}'
+          build-days-to-keep: 7
       - github:
           url: '{git-url}/{github-org}/{project}'
 
 
     triggers:
       - github-pull-request:
-          trigger-phrase: '^recheck$'
+          trigger-phrase: '^(recheck|reverify)$'
           only-trigger-phrase: false
           status-context: 'JJB Verify'
           permit-all: true
           github-hooks: true
           included-regions: '{obj:github_included_regions}'
 
+#################
+# License Check #
+#################
+
+- lf_license_check: &lf_license_check
+    name: lf-license-check
+
+    ######################
+    # Default parameters #
+    ######################
+
+    branch: master
+    build-days-to-keep: 7
+    build-timeout: 15
+    file-patterns: >
+        *.go
+        *.groovy
+        *.java
+        *.py
+        *.sh
+    git-url: '$GIT_URL/$PROJECT'
+    lhc-version: 0.2.0
+    license-exclude-paths: ''
+    licenses-allowed: Apache-2.0,EPL-1.0,MIT
+    project-pattern: '**'
+    spdx-disable: false
+    stream: master
+
+    #####################
+    # Job Configuration #
+    #####################
+
+    project-type: freestyle
+    node: '{build-node}'
+    concurrent: true
+
+    properties:
+      - lf-infra-properties:
+          build-days-to-keep: '{build-days-to-keep}'
+
+    parameters:
+      - lf-infra-parameters:
+          project: '{project}'
+          branch: '{branch}'
+          stream: '{stream}'
+          lftools-version: '{lftools-version}'
+
+    wrappers:
+      - lf-infra-wrappers:
+          build-timeout: '{build-timeout}'
+          jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+    builders:
+      - lf-license-check:
+          file-patterns: '{file-patterns}'
+          spdx-disable: '{spdx-disable}'
+          lhc-version: '{lhc-version}'
+          license-exclude-paths: '{license-exclude-paths}'
+          licenses-allowed: '{licenses-allowed}'
+
+    publishers:
+      - lf-infra-publish
+
+- job-template:
+    name: '{project-name}-license-check'
+    id: gerrit-license-check
+    <<: *lf_license_check
+
+    git-url: '$GIT_URL/$GERRIT_PROJECT'
+
+    scm:
+      - lf-infra-gerrit-scm:
+          git-url: '{git-url}'
+          refspec: '$GERRIT_REFSPEC'
+          branch: '$GERRIT_BRANCH'
+          # Submodules are out of the project's control
+          submodule-recursive: false
+          choosing-strategy: gerrit
+          jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+    triggers:
+      - gerrit:
+          server-name: '{gerrit-server-name}'
+          # Trigger should not be overridable as we want to always run
+          trigger-on:
+            - patchset-created-event:
+                exclude-drafts: false
+                exclude-trivial-rebase: false
+                exclude-no-code-change: false
+            - draft-published-event
+            - comment-added-contains-event:
+                comment-contains-value: recheck$
+          projects:
+            - project-compare-type: ANT
+              project-pattern: '{project-pattern}'
+              branches:
+                - branch-compare-type: ANT
+                  branch-pattern: '**'
+
+- job-template:
+    name: '{project-name}-license-check'
+    id: github-license-check
+    <<: *lf_license_check
+
+    properties:
+      - lf-infra-properties:
+          build-days-to-keep: '{build-days-to-keep}'
+      - github:
+          url: '{git-url}/{github-org}/{project}'
+
+    scm:
+      - lf-infra-github-scm:
+          url: '{git-clone-url}{github-org}/{project}'
+          refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
+          branch: '$sha1'
+          # Submodules are out of the project's control
+          submodule-recursive: false
+          choosing-strategy: default
+          jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+    triggers:
+      - github-pull-request:
+          trigger-phrase: '^recheck$'
+          only-trigger-phrase: false
+          status-context: 'License Check'
+          permit-all: true
+          github-hooks: true
+
+####################
+# Info YAML Verify #
+####################
+
+- lf_info_yaml_verify: &lf_info_yaml_verify
+    name: lf-info-yaml-verify
+
+    ######################
+    # Default parameters #
+    ######################
+
+    gerrit_verify_triggers:
+      - patchset-created-event:
+          exclude-drafts: true
+          exclude-trivial-rebase: false
+          exclude-no-code-change: false
+      - draft-published-event
+      - comment-added-contains-event:
+          comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
+
+    #####################
+    # Job Configuration #
+    #####################
+
+    concurrent: true
+
+    builders:
+      - shell: !include-raw-escape:
+          - ../shell/git-validate-info-yaml.sh
+          - ../shell/info-file-validate.sh
+
+- job-template:
+    name: '{project-name}-info-yaml-verify'
+    id: gerrit-info-yaml-verify
+    <<: *lf_jjb_common
+    # yamllint disable-line rule:key-duplicates
+    <<: *lf_info_yaml_verify
+
+    git-url: '$GIT_URL/$GERRIT_PROJECT'
+
+    scm:
+      - lf-infra-gerrit-scm:
+          git-url: '{git-url}'
+          refspec: '$GERRIT_REFSPEC'
+          branch: '$GERRIT_BRANCH'
+          submodule-recursive: '{submodule-recursive}'
+          choosing-strategy: gerrit
+          jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+    triggers:
+      - gerrit:
+          server-name: '{gerrit-server-name}'
+          trigger-on: '{obj:gerrit_verify_triggers}'
+          projects:
+            - project-compare-type: ANT
+              project-pattern: '{project}'
+              branches:
+                - branch-compare-type: ANT
+                  branch-pattern: '**/{branch}'
+              file-paths:
+                - compare-type: REG_EXP
+                  pattern: 'INFO.yaml'
+
+- job-template:
+    name: '{project-name}-info-yaml-verify'
+    id: github-info-yaml-verify
+    <<: *lf_jjb_common
+    # yamllint disable-line rule:key-duplicates
+    <<: *lf_info_yaml_verify
+
+    properties:
+      - github:
+          url: '{git-url}/{github-org}/{project}'
+
+    scm:
+      - lf-infra-github-scm:
+          url: '{git-clone-url}{github-org}/{project}'
+          refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
+          branch: '$sha1'
+          submodule-recursive: '{submodule-recursive}'
+          choosing-strategy: default
+          jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+    triggers:
+      - github-pull-request:
+          trigger-phrase: '^(recheck|reverify)$'
+          only-trigger-phrase: false
+          status-context: 'INFO File Verify'
+          permit-all: true
+          github-hooks: true
+          # included-regions MUST match gerrit file-paths
+          included-regions: 'INFO.yaml'
+
 ################
 # Packer Merge #
 ################
     #####################
 
     builders:
-      - lf-infra-packer-validate:
-          packer-cloud-settings: '{packer-cloud-settings}'
-          packer-version: '{packer-version}'
       - lf-infra-packer-build:
           packer-cloud-settings: '{packer-cloud-settings}'
           packer-version: '{packer-version}'
               file-paths:
                 - compare-type: REG_EXP
                   pattern: 'packer\/provision\/.*\.sh'
+                - compare-type: REG_EXP
+                  pattern: 'packer\/provision\/.*\.bat'
+                - compare-type: REG_EXP
+                  pattern: 'packer\/provision\/.*\.ps1'
                 - compare-type: REG_EXP
                   pattern: 'packer\/provision\/{templates}\.yaml'
                 - compare-type: REG_EXP
     #####################
 
     properties:
+      - lf-infra-properties:
+          project: '{project}'
+          build-days-to-keep: 7
       - github:
           url: '{git-url}/{github-org}/{project}'
 
           # included-regions MUST match Gerrit Trigger file-paths
           included-regions:
             - 'packer\/provision\/.*\.sh'
+            - 'packer\/provision\/.*\.bat'
+            - 'packer\/provision\/.*\.ps1'
             - 'packer\/provision\/{templates}\.yaml'
             - 'packer\/provision\/local-{templates}\.yaml'
             - 'packer\/templates\/{templates}\.json'
           exclude-no-code-change: false
       - draft-published-event
       - comment-added-contains-event:
-          comment-contains-value: recheck$
+          comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
 
     gerrit_trigger_file_paths:
       - compare-type: REG_EXP
     #####################
 
     properties:
+      - lf-infra-properties:
+          project: '{project}'
+          build-days-to-keep: 7
       - github:
           url: '{git-url}/{github-org}/{project}'
 
 
     triggers:
       - github-pull-request:
-          trigger-phrase: '^recheck$'
+          trigger-phrase: '^(recheck|reverify)$'
           only-trigger-phrase: false
           status-context: 'Packer Verify'
           permit-all: true