--- ########## # Macros # ########## - builder: name: lf-infra-tox-install builders: - inject: properties-content: 'PYTHON_VERSION={python-version}' - shell: !include-raw-escape: ../shell/tox-install.sh - builder: name: lf-infra-clm-python builders: - inject: properties-content: 'CLM_PROJECT_NAME={clm-project-name}' - shell: !include-raw-escape: - ../shell/nexus-iq-cli.sh #################### # COMMON FUNCTIONS # #################### - lf_python_common: &lf_python_common name: lf-python-common ###################### # Default parameters # ###################### archive-artifacts: > **/*.log ##################### # Job Configuration # ##################### project-type: freestyle node: '{build-node}' 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}' publishers: - lf-infra-publish ################# # Python XC CLM # ################# - lf_python_clm_xc: &lf_python_xc_clm name: lf-python-xc-clm ###################### # Default parameters # ###################### branch: master build-days-to-keep: 30 # 30 days for troubleshooting purposes build-timeout: 60 disable-job: false git-url: '$GIT_URL/$PROJECT' github-url: 'https://github.com' java-version: openjdk8 nexus-iq-cli-version: 1.44.0-01 nexus-iq-namespace: '' # Recommend a trailing dash when set. Example: odl- stream: master submodule-recursive: true submodule-timeout: 10 gerrit_trigger_file_paths: - compare-type: ANT pattern: '.*' # github_included_regions MUST match gerrit_trigger_file_paths github_included_regions: - '.*' ##################### # Job Configuration # ##################### disabled: '{disable-job}' parameters: - lf-infra-parameters: project: '{project}' branch: '{branch}' stream: '{stream}' lftools-version: '{lftools-version}' - string: name: NEXUS_IQ_CLI_VERSION default: '{nexus-iq-cli-version}' description: Nexus IQ CLI package to download and use. wrappers: - credentials-binding: - username-password-separated: credential-id: nexus-iq-xc-clm username: CLM_USER password: CLM_PASSWORD builders: - lf-update-java-alternatives: java-version: '{java-version}' - lf-infra-clm-python: clm-project-name: '{nexus-iq-namespace}{project-name}' - job-template: name: '{project-name}-python-clm-{stream}' id: gerrit-python-xc-clm <<: *lf_python_common # yamllint disable-line rule:key-duplicates <<: *lf_python_xc_clm ###################### # Default parameters # ###################### gerrit_clm_triggers: - comment-added-contains-event: comment-contains-value: run-clm$ ##################### # Job Configuration # ##################### scm: - lf-infra-gerrit-scm: jenkins-ssh-credential: '{jenkins-ssh-credential}' git-url: '{git-url}' refspec: '$GERRIT_REFSPEC' branch: '$GERRIT_BRANCH' submodule-recursive: '{submodule-recursive}' submodule-timeout: '{submodule-timeout}' choosing-strategy: default triggers: # Build weekly on Saturdays - timed: 'H H * * 6' - gerrit: server-name: '{gerrit-server-name}' trigger-on: '{obj:gerrit_clm_triggers}' projects: - project-compare-type: ANT project-pattern: '{project}' branches: - branch-compare-type: ANT branch-pattern: '**/{branch}' file-paths: '{obj:gerrit_trigger_file_paths}' skip-vote: successful: true failed: true unstable: true notbuilt: true - job-template: name: '{project-name}-python-clm-{stream}' id: github-python-xc-clm <<: *lf_python_common # yamllint disable-line rule:key-duplicates <<: *lf_python_xc_clm properties: - lf-infra-properties: build-days-to-keep: '{build-days-to-keep}' - github: url: '{github-url}/{github-org}/{project}' scm: - lf-infra-github-scm: url: '{git-clone-url}{github-org}/{project}' refspec: '' branch: 'refs/heads/{branch}' submodule-recursive: '{submodule-recursive}' submodule-timeout: '{submodule-timeout}' choosing-strategy: default jenkins-ssh-credential: '{jenkins-ssh-credential}' triggers: # Build weekly on Saturdays - timed: 'H H * * 6' - github-pull-request: trigger-phrase: '^run-clm$' only-trigger-phrase: false status-context: 'CLM' permit-all: true github-hooks: true white-list-target-branches: - '{branch}' included-regions: '{obj:github_included_regions}' ######################## # Python Sonar with Tox # ######################## - lf_tox_sonar: &lf_tox_sonar name: lf-tox_sonar ###################### # Default parameters # ###################### branch: master # Sonar should always be run on master branch build-days-to-keep: 7 build-timeout: 60 cron: 'H H * * *' # run daily disable-job: false git-url: '$GIT_URL/$PROJECT' github-url: 'https://github.com' java-version: openjdk8 python-version: python2 mvn-global-settings: global-settings mvn-settings: '{mvn-settings}' mvn-version: mvn35 sonar-mvn-goal: 'sonar:sonar' stream: master submodule-recursive: true submodule-timeout: 10 gerrit_trigger_file_paths: - compare-type: REG_EXP pattern: '.*' # github_included_regions MUST match gerrit_trigger_file_paths github_included_regions: - '.*' ##################### # Job Configuration # ##################### disabled: '{disable-job}' parameters: - lf-infra-parameters: project: '{project}' branch: '{branch}' stream: '{stream}' lftools-version: '{lftools-version}' - string: name: ARCHIVE_ARTIFACTS default: '{archive-artifacts}' description: Artifacts to archive to the logs server. - string: name: MVN # Sets an env var for shell scripts to be able to call the dynamically # installed maven without having to calculate the path themselves. # yamllint disable-line rule:line-length default: '/w/tools/hudson.tasks.Maven_MavenInstallation/{mvn-version}/bin/mvn' description: 'Maven selector to be used by shell scripts' - string: name: SONAR_MAVEN_GOAL default: '{sonar-mvn-goal}' description: | Maven goals to pass to the Sonar call. Typically sonar:sonar however to use a specific version of the sonar-maven-plugin we can call "org.codehaus.mojo:sonar-maven-plugin:3.3.0.603:sonar". builders: - lf-infra-pre-build - lf-infra-tox-install: python-version: '{python-version}' - shell: !include-raw-escape: ../shell/tox-run.sh - lf-provide-maven-settings: global-settings-file: '{mvn-global-settings}' settings-file: '{mvn-settings}' - lf-infra-tox-sonar: java-version: '{java-version}' mvn-settings: '{mvn-settings}' mvn-version: '{mvn-version}' publishers: - lf-infra-publish - builder: name: lf-infra-tox-sonar # Run a Sonar build with Maven builders: - lf-maven-install: mvn-version: '{mvn-version}' - lf-update-java-alternatives: java-version: '{java-version}' - inject: # TODO: Switch this to the sonar wrapper when JJB 2.0 is available properties-content: SONAR_HOST_URL=$SONAR_URL - shell: !include-raw-escape: - ../shell/common-variables.sh - ../shell/maven-sonar.sh - lf-provide-maven-settings-cleanup - job-template: name: '{project-name}-tox-sonar' id: gerrit-tox-sonar <<: *lf_python_common # yamllint disable-line rule:key-duplicates <<: *lf_tox_sonar ###################### # Default parameters # ###################### gerrit_sonar_triggers: - comment-added-contains-event: comment-contains-value: run-sonar$ ##################### # Job Configuration # ##################### scm: - lf-infra-gerrit-scm: jenkins-ssh-credential: '{jenkins-ssh-credential}' git-url: '{git-url}' refspec: $GERRIT_REFSPEC branch: $GERRIT_BRANCH submodule-recursive: '{submodule-recursive}' submodule-timeout: '{submodule-timeout}' choosing-strategy: default triggers: - timed: '{obj:cron}' - gerrit: server-name: '{gerrit-server-name}' trigger-on: '{obj:gerrit_sonar_triggers}' projects: - project-compare-type: 'ANT' project-pattern: '{project}' branches: - branch-compare-type: 'ANT' branch-pattern: '**/{branch}' file-paths: '{obj:gerrit_trigger_file_paths}' skip-vote: successful: true failed: true unstable: true notbuilt: true - job-template: name: '{project-name}-tox-sonar' id: github-tox-sonar <<: *lf_python_common # yamllint disable-line rule:key-duplicates <<: *lf_tox_sonar properties: - lf-infra-properties: build-days-to-keep: '{build-days-to-keep}' - github: url: '{github-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}' submodule-timeout: '{submodule-timeout}' choosing-strategy: default jenkins-ssh-credential: '{jenkins-ssh-credential}' triggers: - github-pull-request: trigger-phrase: '^run-sonar$' only-trigger-phrase: false status-context: 'Python Sonar' permit-all: true github-hooks: true white-list-target-branches: - '{branch}' included-regions: '{obj:github_included_regions}' ############## # Tox Verify # ############## - lf_tox_verify: &lf_tox_verify name: lf-tox-verify ###################### # Default parameters # ###################### branch: master build-days-to-keep: 7 build-timeout: 15 disable-job: false git-url: '$GIT_URL/$GERRIT_PROJECT' github-url: 'https://github.com' parallel: true python-version: python2 stream: master submodule-recursive: true submodule-timeout: 10 tox-dir: '' tox-envs: '' gerrit_trigger_file_paths: - compare-type: REG_EXP pattern: '.*' # github_included_regions MUST match gerrit_trigger_file_paths github_included_regions: - '.*' ##################### # Job Configuration # ##################### project-type: freestyle node: '{build-node}' concurrent: true disabled: '{disable-job}' 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}' - lf-infra-tox-parameters: tox-dir: '{tox-dir}' tox-envs: '{tox-envs}' - bool: name: PARALLEL default: '{parallel}' description: Tox test type used to configure serial or parallel testing. wrappers: - lf-infra-wrappers: build-timeout: '{build-timeout}' jenkins-ssh-credential: '{jenkins-ssh-credential}' builders: - lf-infra-pre-build - lf-infra-tox-install: python-version: '{python-version}' - shell: !include-raw-escape: ../shell/tox-run.sh publishers: - lf-infra-publish - job-template: # Python projects typically use tox to run testing. name: '{project-name}-tox-verify-{stream}' id: gerrit-tox-verify <<: *lf_tox_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 # ##################### scm: - lf-infra-gerrit-scm: jenkins-ssh-credential: '{jenkins-ssh-credential}' git-url: '{git-url}' refspec: '$GERRIT_REFSPEC' branch: '$GERRIT_BRANCH' submodule-recursive: '{submodule-recursive}' submodule-timeout: '{submodule-timeout}' choosing-strategy: gerrit 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: '{obj:gerrit_trigger_file_paths}' - job-template: # Python projects typically use tox to run testing. name: '{project-name}-tox-verify-{stream}' id: github-tox-verify <<: *lf_tox_verify properties: - lf-infra-properties: build-days-to-keep: '{build-days-to-keep}' - github: url: '{github-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}' submodule-timeout: '{submodule-timeout}' choosing-strategy: default jenkins-ssh-credential: '{jenkins-ssh-credential}' triggers: - github-pull-request: trigger-phrase: '^(recheck|reverify)$' only-trigger-phrase: false status-context: 'Tox Verify' permit-all: true github-hooks: true white-list-target-branches: - '{branch}' included-regions: '{obj:github_included_regions}'