X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;ds=sidebyside;f=jobs%2Flttng-modules.yaml;h=874933729c4f345c026dfbc55d7aa2f938c324e6;hb=c9c7c76ba0c1b5325dce6ea4b4e97993a7c297be;hp=82d82f45007daccf4d3b14445622ea112b109eae;hpb=598af4633e637805c844f06513d36a1703f1dc78;p=lttng-ci.git diff --git a/jobs/lttng-modules.yaml b/jobs/lttng-modules.yaml index 82d82f4..8749337 100644 --- a/jobs/lttng-modules.yaml +++ b/jobs/lttng-modules.yaml @@ -1,16 +1,130 @@ --- +## Anchors +- lttng-modules_build_parameters_defaults: <tng-modules_build_parameters_defaults + name: 'lttng-modules_build_parameters_defaults' + parameters: + - string: + name: 'mversion' + default: '{mversion}' + description: 'The lttng-modules branch to build.' + - string: + name: 'maxConcurrentBuild' + default: '20' + description: 'The maximum number of concurrent child build to run.' + - string: + name: 'kverfloor' + default: '{kverfloor}' + description: 'The lowest kernel version to build.' + - string: + name: 'kverceil' + default: '{kverceil}' + description: 'The highest kernel version to build. (excluded)' + - string: + name: 'kverfilter' + default: '{kverfilter}' + description: 'Kernel versions list filtering strategy.' + - string: + name: 'kgitrepo' + default: 'git://git-mirror.internal.efficios.com/git/linux-all.git' + description: 'The linux kernel git repository url.' + - string: + name: 'kbuildjob' + default: 'lttng-modules_VERSION_param-{parambuildtype}' + description: 'The parametrized job to use for child builds.' + +- lttng-modules_build_parameters_ubuntu: <tng-modules_build_parameters_ubuntu + name: 'lttng-modules_build_parameters_ubuntu' + parameters: + - string: + name: 'mversion' + default: '{mversion}' + description: 'The lttng-modules branch to build.' + - string: + name: 'maxConcurrentBuild' + default: '20' + description: 'The maximum number of concurrent child build to run.' + - string: + name: 'kverfloor' + default: '{kverfloor}' + description: 'The lowest kernel version to build.' + - string: + name: 'kverceil' + default: '{kverceil}' + description: 'The highest kernel version to build. (excluded)' + - string: + name: 'kverfilter' + default: '{kverfilter}' + description: 'Kernel versions list filtering strategy.' + - string: + name: 'kgitrepo' + default: 'git://git-mirror.internal.efficios.com/git/ubuntu-{uversion}.git' + description: 'The linux kernel git repository url.' + - string: + name: 'kbuildjob' + default: 'lttng-modules_VERSION_param-{parambuildtype}' + description: 'The parametrized job to use for child builds.' + - string: + name: 'uversion' + default: '{uversion}' + description: 'The lowest kernel version to build.' + +- lttng-modules_build_parameters_rt: <tng-modules_build_parameters_rt + name: 'lttng-modules_build_parameters_rt' + parameters: + - string: + name: 'mversion' + default: '{mversion}' + description: 'The lttng-modules branch to build.' + - string: + name: 'maxConcurrentBuild' + default: '20' + description: 'The maximum number of concurrent child build to run.' + - string: + name: 'kverfloor' + default: 'v2.6.36-rt0-rebase' + description: 'The lowest kernel version to build.' + - string: + name: 'kverceil' + default: '{kverceil}' + description: 'The highest kernel version to build. (excluded)' + - string: + name: 'kverfilter' + default: '{kverfilter}' + description: 'Kernel versions list filtering strategy.' + - string: + name: 'kgitrepo' + default: 'git://git-mirror.internal.efficios.com/kernel/rt/linux-stable-rt.git' + description: 'The linux kernel git repository url.' + - string: + name: 'kbuildjob' + default: 'lttng-modules_VERSION_param-build' + description: 'The parametrized job to use for child builds.' + +- lttng-modules_build_builders_defaults: <tng-modules_build_builders_defaults + name: 'lttng-modules_build_builders_defaults' + builders: + - system-groovy: + command: + !include-raw-escape: scripts/lttng-modules/master.groovy + +- lttng-modules_build_rt_builders_defaults: <tng-modules_build_rt_builders_defaults + name: 'lttng-modules_build_rt_builders_defaults' + builders: + - system-groovy: + command: + !include-raw-escape: scripts/lttng-modules/master-rt.groovy + + +## Defaults - defaults: name: lttng-modules description: | - TODO + The LTTng modules provide Linux kernel tracing capability to the LTTng + 2.0 tracer toolset. - project-type: freestyle +

Job is managed by Jenkins Job Builder.

- logrotate: - daysToKeep: -1 - numToKeep: 2 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 + project-type: freestyle wrappers: - workspace-cleanup @@ -19,68 +133,483 @@ scm: - git: - url: git://artifacts.internal.efficios.com/git/linux-stable.git + url: git://github.com/{github_user}/{github_name}.git + browser: githubweb + browser-url: https://github.com/{github_user}/{github_name} branches: - - refs/tags/v{kversion} + - "{mversion}" shallow-clone: true - basedir: linux + fastpoll: true + basedir: src/lttng-modules + wipe-workspace: false + skip-tag: true + + triggers: + - pollscm: + cron: "@hourly" + + properties: + - build-discarder: + num-to-keep: 2 + - github: + url: https://github.com/{github_user}/{github_name} + + publishers: + - workspace-cleanup + - email-ext: + recipients: '{obj:email_to}' + reply-to: ci-notification@lists.lttng.org + always: false + unstable: false + first-failure: true + first-unstable: true + not-built: false + aborted: false + regression: false + failure: false + second-failure: false + improvement: false + still-failing: false + success: false + fixed: false + fixed-unhealthy: true + still-unstable: false + pre-build: false + matrix-trigger: only-parent + send-to: + - recipients + + +## Templates +- job-template: + name: lttng-modules_ALL_trigger-vanilla + defaults: lttng-modules + description: | + The LTTng modules provide Linux kernel tracing capability to the LTTng + 2.0 tracer toolset. + + This job will trigger the build jobs when a new tag is added to the vanilla + and stable kernel trees. + +

Job is managed by Jenkins Job Builder.

+ + node: 'master' + + wrappers: + - timestamps + - ansicolor + + scm: [] + + triggers: + - timed: "@hourly" + + builders: + - system-groovy: + command: + !include-raw-escape: scripts/lttng-modules/trigger-vanilla.groovy + + publishers: [] + +- job-template: + name: lttng-modules_{mversion}_{buildtype}-vanilla + defaults: lttng-modules + description: | + The LTTng modules provide Linux kernel tracing capability to the LTTng + 2.0 tracer toolset. + + This job will build the {mversion} branch against stable vanilla + kernel tags. + +

Job is managed by Jenkins Job Builder.

+ + node: 'master' + + <<: *lttng-modules_build_parameters_defaults + <<: *lttng-modules_build_builders_defaults + +- job-template: + name: lttng-modules_{mversion}_fullbuild-vanilla + defaults: lttng-modules + description: | + The LTTng modules provide Linux kernel tracing capability to the LTTng + 2.0 tracer toolset. + + This job will build the {mversion} branch against all stable vanilla + kernel tags. + +

Job is managed by Jenkins Job Builder.

+ + node: 'master' + + <<: *lttng-modules_build_parameters_defaults + <<: *lttng-modules_build_builders_defaults + + triggers: + - pollscm: + cron: "@midnight" + +- job-template: + name: lttng-modules_{mversion}_{buildtype}-{uversion} + defaults: lttng-modules + description: | + The LTTng modules provide Linux kernel tracing capability to the LTTng + 2.0 tracer toolset. + + This job will build the {mversion} branch against Ubuntu {uversion} + released kernels, including the LTS backport kernels. + +

Job is managed by Jenkins Job Builder.

+ + node: 'master' + + <<: *lttng-modules_build_parameters_ubuntu + <<: *lttng-modules_build_builders_defaults + +- job-template: + name: lttng-modules_{mversion}_fullbuild-{uversion} + defaults: lttng-modules + description: | + The LTTng modules provide Linux kernel tracing capability to the LTTng + 2.0 tracer toolset. + + This job will build the {mversion} branch against Ubuntu {uversion} + released kernels, including the LTS backport kernels. + +

Job is managed by Jenkins Job Builder.

+ + node: 'master' + + <<: *lttng-modules_build_parameters_ubuntu + <<: *lttng-modules_build_builders_defaults + + triggers: + - pollscm: + cron: "@midnight" + +- job-template: + name: lttng-modules_{mversion}_build-rt + defaults: lttng-modules + description: | + The LTTng modules provide Linux kernel tracing capability to the LTTng + 2.0 tracer toolset. + + This job will build the {mversion} branch against all Linutronix RT + kernels. + +

Job is managed by Jenkins Job Builder.

+ + node: 'master' + + <<: *lttng-modules_build_parameters_rt + <<: *lttng-modules_build_rt_builders_defaults + +- job-template: + name: lttng-modules_VERSION_param-build + defaults: lttng-modules + description: | + This is a parametrized job used by 'master' jobs to build any combinations + of lttng-modules and linux kernel versions. + +

Job is managed by Jenkins Job Builder.

+ + project-type: matrix + node: 'master' # Applies only to matrix flyweight task + axes: + - axis: + type: slave + name: arch + values: '{obj:arch}' + + properties: + - build-discarder: + days-to-keep: 2 + + parameters: + - string: + name: 'mversion' + default: 'master' + description: 'The lttng-modules branch to build.' + - string: + name: 'ktag' + default: '' + description: 'The linux kernel git tag to build against.' + - string: + name: 'kgitrepo' + default: 'git://git-mirror.internal.efficios.com/git/linux-all.git' + description: 'The linux kernel git repository url.' + + concurrent: true + + scm: - git: url: git://github.com/lttng/lttng-modules.git + browser: githubweb + browser-url: https://github.com/lttng/lttng-modules branches: - - "{mversion}" - basedir: lttng-modules + - "${{mversion}}" + skip-tag: true + basedir: src/lttng-modules triggers: - - pollscm: "@yearly" - properties: - - throttle: - max-per-node: 0 - max-total: 0 - categories: - - 'lttng-module-linux' + builders: + - shell: | + git clone --depth=1 -b "$ktag" --reference $HOME/gitcache/linux-stable.git/ "$kgitrepo" src/linux + - shell: + !include-raw-escape: scripts/lttng-modules/param-build.sh + publishers: + - workspace-cleanup -## Templates - job-template: - name: lttng-modules_{mversion}_{kversion}_{buildtype} + name: lttng-modules_VERSION_param-crossbuild defaults: lttng-modules + description: | + This is a parametrized job used by 'master' jobs to build any combinations + of lttng-modules and linux kernel versions. + +

Job is managed by Jenkins Job Builder.

project-type: matrix + node: 'master' # Applies only to matrix flyweight task axes: - axis: - type: slave - name: arch - values: '{obj:arch}' + type: user-defined + name: cross_arch + values: '{obj:cross_arch}' + + properties: + - build-discarder: + days-to-keep: 2 + + parameters: + - string: + name: 'mversion' + default: 'master' + description: 'The lttng-modules branch to build.' + - string: + name: 'ktag' + default: '' + description: 'The linux kernel git tag to build against.' + - string: + name: 'kgitrepo' + default: 'git://git-mirror.internal.efficios.com/git/linux-all.git' + description: 'The linux kernel git repository url.' + + concurrent: true + + scm: + - git: + url: git://github.com/lttng/lttng-modules.git + browser: githubweb + browser-url: https://github.com/lttng/lttng-modules + branches: + - "${{mversion}}" + skip-tag: true + basedir: src/lttng-modules + + triggers: builders: - - copyartifact: - project: kernel_{kversion}_{buildtype}/arch=$arch - which-build: last-successful - stable: true - filter: 'build/**' - target: 'deps/linux' + - shell: | + git clone --depth=1 -b "$ktag" --reference $HOME/gitcache/linux-stable.git/ "$kgitrepo" src/linux - shell: - !include-raw-escape scripts/lttng-modules/build.sh + !include-raw-escape: scripts/lttng-modules/param-build.sh + publishers: + - workspace-cleanup + +- job-template: + name: lttng-modules_{mversion}_coverity + defaults: lttng-modules + node: 'x86-64' + + triggers: + - pollscm: + cron: "@daily" + + wrappers: + - workspace-cleanup + - timestamps + - ansicolor: + colormap: xterm + - credentials-binding: + - username-password-separated: + credential-id: lttng-modules_coverity_token + username: COVERITY_SCAN_PROJECT_NAME + password: COVERITY_SCAN_TOKEN + + builders: + - shell: | + git clone --depth=1 -b v4.10 --reference $HOME/gitcache/linux-stable.git/ git://git-mirror.internal.efficios.com/kernel/stable/linux-stable.git src/linux + cd src/linux + make defconfig + sed -i "s/# CONFIG_KALLSYMS_ALL is not set/CONFIG_KALLSYMS_ALL=y/g" .config + make modules_prepare + - shell: + !include-raw-escape: scripts/common/coverity.sh + +- job-template: + name: lttng-modules_{mversion}_cppcheck + defaults: lttng-modules + + triggers: + - pollscm: + cron: "@daily" + + builders: + - shell: | + rm -f cppcheck.xml + cppcheck --enable=all --xml --xml-version=2 $WORKSPACE/src/lttng-modules 2> cppcheck.xml + + publishers: + - archive: + artifacts: 'cppcheck.xml' + allow-empty: false + - cppcheck: + pattern: 'cppcheck.xml' + +- job-template: + name: lttng-modules_{mversion}_sloccount + defaults: lttng-modules + description: | + The LTTng modules provide Linux kernel tracing capability to the LTTng + 2.0 tracer toolset. + + This job runs the sloccount utility and generates a trend report. + +

Job is managed by Jenkins Job Builder.

+ + triggers: + - pollscm: + cron: "@daily" + + builders: + - shell: | + cloc --by-file --xml --out=cloc.xml src/lttng-modules/ publishers: - archive: - artifacts: 'build/**' + artifacts: 'cloc.xml' allow-empty: false - fingerprint: true + - sloccount: + report-files: 'cloc.xml' + - workspace-cleanup ## Project - project: name: lttng-modules - mversion: - !include jobs/inc/lttng-modules-versions.yaml.inc - kversion: - !include jobs/inc/kernel-versions.yaml.inc + github_user: lttng + github_name: lttng-modules + email_to: 'ci-notification@lists.lttng.org, cc:mathieu.desnoyers@efficios.com' jobs: - - 'lttng-modules_{mversion}_{kversion}_{buildtype}': + +# Vanilla normal builds + - 'lttng-modules_{mversion}_{buildtype}-vanilla': + mversion: + - stable-2.9 + - stable-2.10 + - master buildtype: build + parambuildtype: build + kverfloor: v2.6.36 + kverceil: '' + kverfilter: stable-head + - 'lttng-modules_{mversion}_{buildtype}-vanilla': + mversion: stable-2.7 + buildtype: build + parambuildtype: build + kverfloor: v2.6.36 + kverceil: v4.8-rc0 + kverfilter: stable-head + - 'lttng-modules_{mversion}_fullbuild-vanilla': + mversion: + - stable-2.9 + - stable-2.10 + - master + buildtype: build + parambuildtype: build + kverfloor: v2.6.36 + kverceil: '' + kverfilter: none + - 'lttng-modules_{mversion}_fullbuild-vanilla': + mversion: stable-2.7 + buildtype: build + parambuildtype: build + kverfloor: v2.6.36 + kverceil: v4.8-rc0 + kverfilter: none + +# RT normal builds + - 'lttng-modules_{mversion}_build-rt': + mversion: master + kverceil: '' + kverfilter: stable-head + +# Ubuntu normal builds + - 'lttng-modules_{mversion}_{buildtype}-{uversion}': + mversion: + - stable-2.9 + - stable-2.10 + - master + uversion: + - trusty + - xenial + buildtype: build + parambuildtype: build + kverfloor: '' + kverceil: '' + kverfilter: stable-head + +# Vanilla crossbuilds + - 'lttng-modules_{mversion}_{buildtype}-vanilla': + mversion: + - stable-2.9 + - stable-2.10 + - master + buildtype: crossbuild + parambuildtype: crossbuild + kverfloor: v3.16 + kverceil: '' + kverfilter: stable-head + - 'lttng-modules_{mversion}_{buildtype}-vanilla': + mversion: stable-2.7 + buildtype: crossbuild + parambuildtype: crossbuild + kverfloor: v3.16 + kverceil: v4.8-rc0 + kverfilter: stable-head + +# Ubuntu cross builds + - 'lttng-modules_{mversion}_{buildtype}-{uversion}': + mversion: + - stable-2.9 + - stable-2.10 + - master + uversion: + - trusty + - xenial + buildtype: crossbuild + parambuildtype: crossbuild + kverfloor: '' + kverceil: '' + kverfilter: stable-head + +# Parametrized kernel and modules build jobs + - 'lttng-modules_VERSION_param-build': arch: !!python/tuple [x86-32, x86-64] - - 'lttng-modules_{mversion}_{kversion}_{buildtype}': - buildtype: portbuild - arch: !!python/tuple [armhf, powerpc] + - 'lttng-modules_VERSION_param-crossbuild': + cross_arch: !!python/tuple [armhf, arm64, powerpc, ppc64el] + +# Misc jobs + - 'lttng-modules_ALL_trigger-vanilla' + - 'lttng-modules_{mversion}_cppcheck': + mversion: + - stable-2.9 + - stable-2.10 + - master + - 'lttng-modules_{mversion}_sloccount': + mversion: master + - 'lttng-modules_{mversion}_coverity': + mversion: master