- defaults:
name: reproducible
project-type: freestyle
my_disabled:
disabled: '{obj:my_disabled}'
properties:
- sidebar: &sb1
url: https://jenkins.debian.net/userContent/about.html
text: About jenkins.debian.net
icon: /userContent/images/debian-swirl-24x24.png
- sidebar: &sb2
url: https://jenkins.debian.net/view/reproducible
text: reproducible builds jobs
icon: /userContent/images/debian-jenkins-24x24.png
- sidebar: &sb3
url: http://www.profitbricks.co.uk
text: Sponsored by Profitbricks
icon: /userContent/images/profitbricks-24x24.png
description: &desc '{my_description}
Job configuration source is reproducible.yaml.
Results are available at https://tests.reproducible-builds.org.'
triggers:
- timed: '{my_timed}'
logrotate:
daysToKeep: 90
numToKeep: 150
artifactDaysToKeep: -1
artifactNumToKeep: -1
builders:
- shell: '{my_shell}'
publishers:
- logparser: &logparse
parse-rules: '/srv/jenkins/logparse/reproducible.rules'
unstable-on-warning: 'true'
fail-on-error: 'true'
- email:
recipients: '{my_recipients}'
node: '{my_node}'
- defaults:
name: reproducible_git
project-type: freestyle
my_disabled:
disabled: '{obj:my_disabled}'
properties:
- sidebar: *sb1
- sidebar: *sb2
- sidebar: *sb3
description: *desc
triggers:
- timed: '{my_timed}'
- pollscm:
cron: '{my_scmpoll}'
logrotate:
daysToKeep: 90
numToKeep: 150
artifactDaysToKeep: -1
artifactNumToKeep: -1
builders:
- shell: '{my_shell}'
publishers:
- logparser: *logparse
- email:
recipients: '{my_recipients}'
- naginator:
progressive-delay-increment: 5
progressive-delay-maximum: 15
max-failed-builds: 5
regular-expression: 'Caused by: hudson.plugins.git.GitException: Command "git fetch'
scm:
- git:
url: '{my_gitrepo}'
branches:
- master
node: '{my_node}'
- defaults:
name: reproducible_builder
project-type: freestyle
my_disabled:
disabled: '{obj:my_disabled}'
description: *desc
properties:
- sidebar: *sb1
- sidebar: *sb2
- sidebar: *sb3
- priority-sorter:
priority: '150'
- throttle:
max-total: 180
max-per-node: 180
enabled: true
option: category
categories:
- reproducible
triggers:
- timed: '{my_timed}'
wrappers:
- timeout:
timeout: 2640 # (24+18+2)*60
logrotate:
daysToKeep: 3
numToKeep: 300
artifactDaysToKeep: -1
artifactNumToKeep: -1
builders:
- shell: '{my_shell}'
publishers:
- email:
recipients: '{my_recipients}'
notify-every-unstable-build: false
node: '{my_node}'
- defaults:
name: reproducible_builder_trigger
project-type: freestyle
my_disabled:
disabled: '{obj:my_disabled}'
description: *desc
properties:
- sidebar: *sb1
- sidebar: *sb2
- sidebar: *sb3
- priority-sorter:
priority: '150'
triggers:
- timed: '{my_timed}'
wrappers:
- timeout:
timeout: 1560
logrotate:
daysToKeep: 3
numToKeep: 300
artifactDaysToKeep: -1
artifactNumToKeep: -1
builders:
- shell: '{my_shell}'
publishers:
- logparser: *logparse
- email:
recipients: '{my_recipients}'
notify-every-unstable-build: false
- trigger:
project: '{my_trigger}'
node: '{my_node}'
- defaults:
name: reproducible_other_projects
project-type: freestyle
my_disabled:
disabled: '{obj:my_disabled}'
description: *desc
properties:
- sidebar: *sb1
- sidebar: *sb2
- sidebar: *sb3
triggers:
- timed: '{my_timed}'
logrotate:
daysToKeep: 90
numToKeep: 150
artifactDaysToKeep: -1
artifactNumToKeep: -1
builders:
- shell: '{my_shell}'
publishers:
- logparser:
parse-rules: '/srv/jenkins/logparse/reproducible-extra.rules'
unstable-on-warning: 'true'
fail-on-error: 'true'
- email:
recipients: '{my_recipients}'
node: '{my_node}'
- defaults:
name: reproducible_other_projects_git
project-type: freestyle
my_disabled:
disabled: '{obj:my_disabled}'
description: *desc
properties:
- sidebar: *sb1
- sidebar: *sb2
- sidebar: *sb3
triggers:
- timed: '{my_timed}'
- pollscm:
cron: '*/6 * * * *'
logrotate:
daysToKeep: 90
numToKeep: 150
artifactDaysToKeep: -1
artifactNumToKeep: -1
builders:
- shell: '{my_shell}'
publishers:
- logparser:
parse-rules: '{my_parse_rules}'
unstable-on-warning: 'true'
fail-on-error: 'true'
- email:
recipients: '{my_recipients}'
- naginator:
progressive-delay-increment: 5
progressive-delay-maximum: 15
max-failed-builds: 5
regular-expression: 'Caused by: hudson.plugins.git.GitException: Command "git fetch'
scm:
- git:
url: '{my_gitrepo}'
branches:
- '{my_gitbranches}'
node: '{my_node}'
- defaults:
name: reproducible_other_projects_trigger
project-type: freestyle
my_disabled:
disabled: '{obj:my_disabled}'
description: *desc
properties:
- sidebar: *sb1
- sidebar: *sb2
- sidebar: *sb3
triggers:
- timed: '{my_timed}'
logrotate:
daysToKeep: 90
numToKeep: 150
artifactDaysToKeep: -1
artifactNumToKeep: -1
builders:
- shell: '{my_shell}'
publishers:
- logparser:
parse-rules: '/srv/jenkins/logparse/reproducible-extra.rules'
unstable-on-warning: 'true'
fail-on-error: 'true'
- email:
recipients: '{my_recipients}'
- trigger:
project: '{my_trigger}'
node: '{my_node}'
- defaults:
name: reproducible_other_projects_artifacts
project-type: freestyle
my_disabled:
disabled: '{obj:my_disabled}'
description: *desc
properties:
- sidebar: *sb1
- sidebar: *sb2
- sidebar: *sb3
- throttle:
max-total: 9
max-per-node: 9
enabled: true
option: category
categories:
- reproducible # no special category yet
triggers:
- timed: '{my_timed}'
logrotate:
daysToKeep: 90
numToKeep: 150
artifactDaysToKeep: -1
artifactNumToKeep: -1
builders:
- shell: '{my_shell}'
publishers:
- logparser:
parse-rules: '/srv/jenkins/logparse/reproducible-extra.rules'
unstable-on-warning: 'true'
fail-on-error: 'true'
- archive:
artifacts: 'results/*.*'
latest-only: false
allow-empty: true
- email:
recipients: '{my_recipients}'
- trigger:
project: '{my_trigger}'
node: '{my_node}'
- job-template:
defaults: reproducible
name: '{name}_{my_task}'
- job-template:
defaults: reproducible
name: '{name}_{my_task}_{my_arch}_{my_hname}'
- job-template:
defaults: reproducible
name: '{name}_setup_schroot_{my_distro}_{my_arch}_{my_hname}'
- job-template:
defaults: reproducible_builder
name: '{name}_builder_{my_arch}_{my_num}'
- job-template:
defaults: reproducible_git
name: '{name}_html_{my_reponame}'
- job-template:
defaults: reproducible_other_projects
name: '{name}_{otherproject}'
- job-template:
defaults: reproducible_other_projects_git
name: '{name}_{otherproject_git}'
- job-template:
defaults: reproducible_other_projects_trigger
name: '{name}_{otherproject_triggering}'
- job-template:
defaults: reproducible_other_projects_artifacts
name: '{name}_{otherproject_artifacts}'
- job-template:
defaults: reproducible_builder_trigger
name: '{name}_builder_{otherproject}_{my_num}'
- project:
name: reproducible
my_recipients: 'qa-jenkins-scm@lists.alioth.debian.org'
my_node: '{my_hname}'
my_scmpoll: '*/6 * * * *'
jobs:
- '{name}_{my_task}_{my_arch}_{my_hname}':
my_task:
- 'maintenance':
my_description: 'Do some maintenance: check for old directories laying around, do backups, update pbuilder and schroots, etc.'
my_timed: '5 0,2,4,6,8,10,12,14,16,18,20,22 * * *'
my_shell: '/srv/jenkins/bin/reproducible_maintenance.sh'
my_hname:
- 'jenkins': { my_arch: 'amd64' }
my_node: ''
- '{name}_{my_task}_{my_arch}_{my_hname}':
my_task:
- 'maintenance':
my_description: 'Do some maintenance: check for old directories laying around, do backups, update pbuilder and schroots, etc.'
my_timed: '5 0,2,4,6,8,10,12,14,16,18,20,22 * * *'
my_hname:
- 'bbx15': { my_arch: 'armhf' }
- 'bpi0': { my_arch: 'armhf' }
- 'cbxi4a': { my_arch: 'armhf' }
- 'cbxi4b': { my_arch: 'armhf' }
- 'cbxi4pro0': { my_arch: 'armhf' }
- 'cb3a': { my_arch: 'armhf' }
- 'ff2a': { my_arch: 'armhf' }
- 'ff2b': { my_arch: 'armhf' }
- 'ff4a': { my_arch: 'armhf' }
- 'hb0': { my_arch: 'armhf' }
- 'jtk1a': { my_arch: 'armhf' }
- 'wbq0': { my_arch: 'armhf' }
- 'odxu4': { my_arch: 'armhf' }
- 'odxu4b': { my_arch: 'armhf' }
- 'odxu4c': { my_arch: 'armhf' }
- 'odu3a': { my_arch: 'armhf' }
- 'opi2a': { my_arch: 'armhf' }
- 'opi2b': { my_arch: 'armhf' }
- 'opi2c': { my_arch: 'armhf' }
- 'wbd0': { my_arch: 'armhf' }
- 'rpi2b': { my_arch: 'armhf' }
- 'rpi2c': { my_arch: 'armhf' }
- 'p64b': { my_arch: 'armhf' }
- 'p64c': { my_arch: 'armhf' }
- 'profitbricks1': { my_arch: 'amd64' }
- 'profitbricks2': { my_arch: 'i386' }
- 'profitbricks3': { my_arch: 'amd64' }
- 'profitbricks4': { my_arch: 'amd64' }
- 'profitbricks5': { my_arch: 'amd64' }
- 'profitbricks6': { my_arch: 'i386' }
- 'profitbricks11': { my_arch: 'amd64' }
- 'profitbricks12': { my_arch: 'i386' }
- 'profitbricks15': { my_arch: 'amd64' }
- 'profitbricks16': { my_arch: 'i386' }
- 'codethink9': { my_arch: 'arm64' }
- 'codethink10': { my_arch: 'arm64' }
- 'codethink11': { my_arch: 'arm64' }
- 'codethink12': { my_arch: 'arm64' }
- 'codethink13': { my_arch: 'arm64' }
- 'codethink14': { my_arch: 'arm64' }
- 'codethink15': { my_arch: 'arm64' }
- 'codethink16': { my_arch: 'arm64' }
my_shell: '/srv/jenkins/bin/jenkins_master_wrapper.sh'
- '{name}_{my_task}_{my_arch}_{my_hname}':
my_task:
- 'setup_pbuilder_testing':
my_description: 'Setup pbuilder for reproducible builds of packages from testing as described in https://wiki.debian.org/ReproducibleBuilds#Usage_example'
my_timed: '23 7 * * *'
- 'setup_pbuilder_unstable':
my_description: 'Setup pbuilder for reproducible builds of packages from testing as described in https://wiki.debian.org/ReproducibleBuilds#Usage_example'
my_timed: '42 7 * * *'
- 'setup_pbuilder_experimental':
my_description: 'Setup pbuilder for reproducible builds of packages from experimental as described in https://wiki.debian.org/ReproducibleBuilds#Usage_example'
my_timed: '33 7 * * *'
- 'setup_schroot_unstable':
my_description: 'Setup unstable schroot for fetching source packages for the builder jobs.'
my_timed: '20 1 * * *'
- 'setup_schroot_testing':
my_description: 'Setup testing schroot for fetching source packages for the builder jobs.'
my_timed: '0 1 * * *'
- 'setup_schroot_experimental':
my_description: 'Setup experimental schroot for fetching source packages for the builder jobs.'
my_timed: '40 1 * * *'
my_hname:
- 'bbx15': { my_arch: 'armhf' }
- 'bpi0': { my_arch: 'armhf' }
- 'cbxi4a': { my_arch: 'armhf' }
- 'cbxi4b': { my_arch: 'armhf' }
- 'cbxi4pro0': { my_arch: 'armhf' }
- 'cb3a': { my_arch: 'armhf' }
- 'ff2a': { my_arch: 'armhf' }
- 'ff2b': { my_arch: 'armhf' }
- 'ff4a': { my_arch: 'armhf' }
- 'hb0': { my_arch: 'armhf' }
- 'jtk1a': { my_arch: 'armhf' }
- 'wbq0': { my_arch: 'armhf' }
- 'odxu4': { my_arch: 'armhf' }
- 'odxu4b': { my_arch: 'armhf' }
- 'odxu4c': { my_arch: 'armhf' }
- 'odu3a': { my_arch: 'armhf' }
- 'opi2a': { my_arch: 'armhf' }
- 'opi2b': { my_arch: 'armhf' }
- 'opi2c': { my_arch: 'armhf' }
- 'wbd0': { my_arch: 'armhf' }
- 'rpi2b': { my_arch: 'armhf' }
- 'rpi2c': { my_arch: 'armhf' }
- 'p64b': { my_arch: 'armhf' }
- 'p64c': { my_arch: 'armhf' }
- 'profitbricks1': { my_arch: 'amd64' }
- 'profitbricks2': { my_arch: 'i386' }
- 'profitbricks5': { my_arch: 'amd64' }
- 'profitbricks6': { my_arch: 'i386' }
- 'profitbricks11': { my_arch: 'amd64' }
- 'profitbricks12': { my_arch: 'i386' }
- 'profitbricks15': { my_arch: 'amd64' }
- 'profitbricks16': { my_arch: 'i386' }
- 'codethink9': { my_arch: 'arm64' }
- 'codethink10': { my_arch: 'arm64' }
- 'codethink11': { my_arch: 'arm64' }
- 'codethink12': { my_arch: 'arm64' }
- 'codethink13': { my_arch: 'arm64' }
- 'codethink14': { my_arch: 'arm64' }
- 'codethink15': { my_arch: 'arm64' }
- 'codethink16': { my_arch: 'arm64' }
my_shell: '/srv/jenkins/bin/jenkins_master_wrapper.sh'
- '{name}_setup_schroot_{my_distro}_{my_arch}_{my_hname}':
my_distro:
- 'unstable_diffoscope':
my_description: 'Setup schroot for running diffoscope in a unstable environment (this is needed to be able to correctly investigate haskell binaries...)'
my_timed: '42 0 * * *'
my_shell: '/srv/jenkins/bin/schroot-create.sh reproducible reproducible-unstable-diffoscope unstable diffoscope locales-all'
- 'testing_diffoscope':
my_description: 'Setup schroot for running diffoscope in a testing environment (this is needed to be able to correctly investigate haskell binaries...)'
my_timed: '23 0 * * *'
my_shell: '/srv/jenkins/bin/schroot-create.sh reproducible reproducible-testing-diffoscope testing diffoscope locales-all'
- 'unstable':
my_timed: '42 1 * * *'
my_shell: '/srv/jenkins/bin/schroot-create.sh reproducible reproducible-{my_distro} {my_distro} botch'
- 'testing':
my_timed: '42 1 * * *'
- 'experimental':
my_timed: '33 1 * * *'
my_description: 'Setup {my_distro} schroot for fetching source packages for the builder jobs.'
my_shell: '/srv/jenkins/bin/schroot-create.sh reproducible reproducible-{my_distro} {my_distro}'
my_hname:
- 'jenkins': { my_arch: 'amd64' }
my_node: ''
- '{name}_{my_task}_{my_arch}_{my_hname}':
my_task:
- 'setup_schroot_unstable_diffoscope':
my_description: 'Setup schroot for running diffoscope in a unstable environment'
my_timed: '42 0 * * *'
my_shell: '/srv/jenkins/bin/jenkins_master_wrapper.sh'
my_hname:
- 'profitbricks3': { my_arch: 'amd64' }
- '{name}_{my_task}':
my_task:
- 'scheduler':
my_description: 'Schedule packages to be tested for reproducibility.'
# dinstall runs 1|7|13|19:52 UTC - see https://anonscm.debian.org/git/mirror/dak.git/tree/config/debian/crontab
my_timed: '23 3,9,15,21 * * *'
my_shellext: ".py"
- 'html_dashboard':
my_description: 'Generate HTML dashboard with graphs for reproducible builds.'
my_timed: '*/10 * * * *'
- 'html_pkg_sets':
my_description: 'Generate HTML results (package sets with graphs) for reproducible builds.'
my_timed: '*/15 * * * *'
my_shellext: ".py"
- 'html_indexes':
my_description: 'Generate HTML results (indexes) for reproducible builds.'
my_timed: '*/15 * * * *'
my_shellext: ".py"
- 'html_dd_list':
my_description: 'Generate HTML results (dd-list) for reproducible builds.'
my_timed: '55 */2 * * *'
my_shellext: ".py"
- 'html_all_packages':
my_description: 'Generate HTML results (for all packages) for reproducible builds. This job is rather redudant and just run to give a fuzzy warm feeling all pages are good.'
my_timed: '37 13 * * 1'
my_shellext: ".py"
- 'html_repository_comparison':
my_description: 'Generate HTML results (repository_comparison) for reproducible builds.'
my_timed: '0 1 * * *'
- 'html_breakages':
my_description: 'Generate an HTML page with CI issues (packages with incoherent status or files that should or should not be there).'
my_timed: '30 0,12 * * *'
my_shellext: ".py"
- 'html_rsync_remote_results':
my_description: 'rsync the results from some remote jobs to the main node.'
my_timed: ''
- 'html_live_status':
my_description: 'Generate an HTML page showing the live status of all builds happening or scheduled by humans.'
my_timed: 'H/6 * * * *'
my_shellext: ".py"
- 'create_meta_pkg_sets':
my_description: 'Create meta package sets for later consumption when generating HTML stats.'
my_timed: '0 6 * * H/3'
- 'nodes_info':
my_description: 'Collect various information from build nodes used for reproducible builds.'
my_timed: '0 0 * * *'
- 'json':
my_description: 'Generate https://reproducible.debian.net/userContent/reproducible.json for consumption by tracker.debian.org.'
my_timed: '1 * * * *'
my_shellext: ".py"
- 'html_archlinux':
my_description: 'Build a simple webpage for Arch Linux reproducibility tests'
my_timed: ''
- 'html_fedora-23_x86_64':
my_description: 'Build a simple webpage for Fedora 23 reproducibility tests'
my_timed: ''
my_shell: '/srv/jenkins/bin/reproducible_html_rpms.sh fedora-23 x86_64'
- 'diffoscope_pypi':
my_description: 'Test whether PyPI has the latest diffoscope.'
my_timed: '23 23 * * *'
my_shell: '/srv/jenkins/bin/diffoscope_distribution_test.sh PyPI'
my_recipients: 'jenkins+debian-reproducible qa-jenkins-scm@lists.alioth.debian.org'
- 'diffoscope_freebsd':
my_description: 'Test whether FreeBSD has the latest diffoscope.'
my_timed: '25 23 1 * *'
my_shell: '/srv/jenkins/bin/diffoscope_distribution_test.sh FreeBSD'
- 'diffoscope_netbsd':
my_description: 'Test whether NetBSD has the latest diffoscope.'
my_timed: '27 23 1 * *'
my_shell: '/srv/jenkins/bin/diffoscope_distribution_test.sh NetBSD'
- 'diffoscope_macports':
my_description: 'Test whether MacPorts has the latest diffoscope.'
my_timed: '29 23 1 * *'
my_shell: '/srv/jenkins/bin/diffoscope_distribution_test.sh MacPorts'
my_shellext: ".sh"
my_shell: '/srv/jenkins/bin/reproducible_{my_task}{my_shellext}'
my_hname: ''
- '{name}_html_{my_reponame}':
my_reponame:
- 'notes':
my_description: 'Generate HTML results ({my_reponame}) for reproducible builds, triggered by changes to the {my_reponame}.git repository.'
my_timed: '57 0 * * *'
my_scmpoll: 'H/1 H/1 * * *'
my_shell: '/srv/jenkins/bin/reproducible_{my_reponame}.py && /srv/jenkins/bin/reproducible_html_{my_reponame}.py'
- 'source-date-epoch-spec':
my_description: 'Generate the HTML of the reproducible builds SOURCE_DATE_EPOCH specification, triggered by changes to the {my_reponame}.git repository.'
my_timed: ''
my_shell: '/srv/jenkins/bin/reproducible_html_specs.sh {my_reponame}'
my_recipients: 'jenkins+reproducible-builds qa-jenkins-scm@lists.alioth.debian.org'
- 'build-path-prefix-map-spec':
my_description: 'Generate the HTML of the reproducible builds BUILD_PATH_PREFIX_MAP specification, triggered by changes to the {my_reponame}.git repository.'
my_timed: ''
my_shell: '/srv/jenkins/bin/reproducible_html_specs.sh {my_reponame}'
my_recipients: 'jenkins+reproducible-builds qa-jenkins-scm@lists.alioth.debian.org'
my_gitrepo: 'git://git.debian.org/git/reproducible/{my_reponame}.git'
my_hname: ''
- '{name}_builder_{my_arch}_{my_num}':
my_description: 'Try to reproducibly build a scheduled package. This is one of several builder jobs.'
my_arch: 'amd64'
my_num:
- '1': &builders_1_5 { my_node1: 'profitbricks-build1', my_node2: 'profitbricks-build5' }
- '2': &builders_5_1 { my_node1: 'profitbricks-build5', my_node2: 'profitbricks-build1' }
- '3': &builders_1_15 { my_node1: 'profitbricks-build1', my_node2: 'profitbricks-build15' }
- '4': &builders_15_1 { my_node1: 'profitbricks-build15', my_node2: 'profitbricks-build1' }
- '5': &builders_11_5 { my_node1: 'profitbricks-build11', my_node2: 'profitbricks-build5' }
- '6': &builders_5_11 { my_node1: 'profitbricks-build5', my_node2: 'profitbricks-build11' }
- '7': &builders_11_15 { my_node1: 'profitbricks-build11', my_node2: 'profitbricks-build15' }
- '8': &builders_15_11 { my_node1: 'profitbricks-build15', my_node2: 'profitbricks-build11' }
- '9': *builders_1_5
- '10': *builders_5_1
- '11': *builders_1_15
- '12': *builders_15_1
- '13': *builders_11_5
- '14': *builders_5_11
- '15': *builders_11_15
- '16': *builders_15_11
- '17': *builders_1_5
- '18': *builders_5_1
- '19': *builders_1_15
- '20': *builders_15_1
- '21': *builders_11_5
- '22': *builders_5_11
- '23': *builders_11_15
- '24': *builders_15_11
- '25': *builders_1_5
- '26': *builders_5_1
- '27': *builders_1_15
- '28': *builders_15_1
- '29': *builders_11_5
- '30': *builders_5_11
- '31': *builders_11_15
- '32': *builders_15_11
- '33': *builders_1_5
- '34': *builders_5_1
- '35': *builders_1_15
- '36': *builders_15_1
- '37': *builders_11_5
- '38': *builders_5_11
- '39': *builders_11_15
- '40': *builders_15_11
my_shell: '/srv/jenkins/bin/reproducible_build.sh {my_node1}-{my_arch} {my_node2}-{my_arch}'
my_timed: '* * * * *'
my_hname: ''
- '{name}_builder_{my_arch}_{my_num}':
my_description: 'Try to reproducibly build a scheduled package. This is one of several builder jobs.'
my_arch: 'i386'
my_disabled: true
my_num:
- '1': &builders_2_6 { my_node1: 'profitbricks-build2', my_node2: 'profitbricks-build6' }
- '2': &builders_6_2 { my_node1: 'profitbricks-build6', my_node2: 'profitbricks-build2' }
- '3': &builders_2_16 { my_node1: 'profitbricks-build2', my_node2: 'profitbricks-build16' }
- '4': &builders_16_2 { my_node1: 'profitbricks-build16', my_node2: 'profitbricks-build2' }
- '5': &builders_12_6 { my_node1: 'profitbricks-build12', my_node2: 'profitbricks-build6' }
- '6': &builders_6_12 { my_node1: 'profitbricks-build6', my_node2: 'profitbricks-build12' }
- '7': &builders_12_16 { my_node1: 'profitbricks-build12', my_node2: 'profitbricks-build16' }
- '8': &builders_16_12 { my_node1: 'profitbricks-build16', my_node2: 'profitbricks-build12' }
- '9': *builders_2_6
- '10': *builders_6_2
- '11': *builders_2_16
- '12': *builders_16_2
- '13': *builders_12_6
- '14': *builders_6_12
- '15': *builders_12_16
- '16': *builders_16_12
- '17': *builders_2_6
- '18': *builders_6_2
- '19': *builders_2_16
- '20': *builders_16_2
- '21': *builders_12_6
- '22': *builders_6_12
- '23': *builders_12_16
- '24': *builders_16_12
my_shell: '/srv/jenkins/bin/reproducible_build.sh {my_node1}-{my_arch} {my_node2}-{my_arch}'
my_timed: '* * * * *'
my_hname: ''
# always build on an odd numbered node and an even numbered node
#
# for i in sled9 sled10 sled11 sled12 sled13 sled14 sled15 sled16 ; do echo "$i: " ; grep node1 job-cfg/reproducible.yaml | grep $i | grep -v grep ; done
#
- '{name}_builder_{my_arch}_{my_num}':
my_description: 'Try to reproducibly build a scheduled package. This is one of several builder jobs.'
my_arch: 'arm64'
my_num:
- '1': { my_node1: 'codethink-sled9', my_node2: 'codethink-sled10' }
- '2': { my_node1: 'codethink-sled9', my_node2: 'codethink-sled12' }
- '3': { my_node1: 'codethink-sled9', my_node2: 'codethink-sled14' }
- '4': { my_node1: 'codethink-sled10', my_node2: 'codethink-sled9' }
- '5': { my_node1: 'codethink-sled12', my_node2: 'codethink-sled9' }
- '6': { my_node1: 'codethink-sled14', my_node2: 'codethink-sled9' }
- '7': { my_node1: 'codethink-sled10', my_node2: 'codethink-sled11' }
- '8': { my_node1: 'codethink-sled10', my_node2: 'codethink-sled13' }
- '9': { my_node1: 'codethink-sled13', my_node2: 'codethink-sled10' }
- '10': { my_node1: 'codethink-sled15', my_node2: 'codethink-sled10' }
- '11': { my_node1: 'codethink-sled12', my_node2: 'codethink-sled11' }
- '12': { my_node1: 'codethink-sled11', my_node2: 'codethink-sled14' }
- '13': { my_node1: 'codethink-sled11', my_node2: 'codethink-sled16' }
- '14': { my_node1: 'codethink-sled11', my_node2: 'codethink-sled12' }
- '15': { my_node1: 'codethink-sled12', my_node2: 'codethink-sled15' }
- '16': { my_node1: 'codethink-sled15', my_node2: 'codethink-sled16' }
- '17': { my_node1: 'codethink-sled13', my_node2: 'codethink-sled12' }
- '18': { my_node1: 'codethink-sled13', my_node2: 'codethink-sled14' }
- '19': { my_node1: 'codethink-sled14', my_node2: 'codethink-sled13' }
- '20': { my_node1: 'codethink-sled16', my_node2: 'codethink-sled13' }
- '21': { my_node1: 'codethink-sled14', my_node2: 'codethink-sled15' }
- '22': { my_node1: 'codethink-sled16', my_node2: 'codethink-sled15' }
- '23': { my_node1: 'codethink-sled16', my_node2: 'codethink-sled11' }
- '24': { my_node1: 'codethink-sled15', my_node2: 'codethink-sled16' }
- '25': { my_node1: 'codethink-sled9', my_node2: 'codethink-sled16' }
- '26': { my_node1: 'codethink-sled16', my_node2: 'codethink-sled9' }
- '27': { my_node1: 'codethink-sled10', my_node2: 'codethink-sled15' }
- '28': { my_node1: 'codethink-sled11', my_node2: 'codethink-sled10' }
- '29': { my_node1: 'codethink-sled12', my_node2: 'codethink-sled13' }
- '30': { my_node1: 'codethink-sled15', my_node2: 'codethink-sled12' }
- '31': { my_node1: 'codethink-sled14', my_node2: 'codethink-sled11' }
- '32': { my_node1: 'codethink-sled13', my_node2: 'codethink-sled14' }
my_shell: '/srv/jenkins/bin/reproducible_build.sh {my_node1}-{my_arch} {my_node2}-{my_arch}'
my_timed: '* * * * *'
my_hname: ''
# could have all archs in one block, but it seems cleaner this way
# to choose new jobs:
# for i in cb3a hb0 rpi2b rpi2c wbd0 bpi0 bbx15 cbxi4pro0 ff2a ff2b jtk1a odxu4 odxu4b odxu4c odu3a opi2a opi2b opi2c p64b p64c wbq0 cbxi4a cbxi4b ff4a ; do echo "$i: " ; grep my_node1 job-cfg/reproducible.yaml|grep armhf|grep $i-armhf ; done
# 8 jobs for quad-cores with 4 gb ram
# 6 jobs for octo-cores with 2 gb ram
# 6 jobs for quad-cores with 2 gb ram
# 3 jobs for dual-cores with 1 gb ram
# 3 jobs for quad-cores with 1 gb ram
- '{name}_builder_{my_arch}_{my_num}':
my_description: 'Try to reproducibly build a scheduled package. This is one of several builder jobs.'
my_arch: 'armhf'
my_num:
- '1': { my_node1: 'bbx15-armhf-rb', my_node2: 'odxu4-armhf-rb' }
- '2': { my_node1: 'wbq0-armhf-rb', my_node2: 'p64c-armhf-rb' }
- '3': { my_node1: 'hb0-armhf-rb', my_node2: 'p64b-armhf-rb' }
- '4': { my_node1: 'ff4a-armhf-rb', my_node2: 'wbq0-armhf-rb' }
- '5': { my_node1: 'cbxi4pro0-armhf-rb', my_node2: 'bpi0-armhf-rb' }
- '6': { my_node1: 'ff4a-armhf-rb', my_node2: 'cbxi4pro0-armhf-rb' }
- '7': { my_node1: 'wbq0-armhf-rb', my_node2: 'odxu4-armhf-rb' }
- '8': { my_node1: 'hb0-armhf-rb', my_node2: 'wbq0-armhf-rb' }
- '9': { my_node1: 'ff4a-armhf-rb', my_node2: 'bpi0-armhf-rb' }
- '10': { my_node1: 'odxu4-armhf-rb', my_node2: 'rpi2b-armhf-rb' }
- '11': { my_node1: 'odxu4-armhf-rb', my_node2: 'wbd0-armhf-rb' }
- '12': { my_node1: 'wbd0-armhf-rb', my_node2: 'cbxi4pro0-armhf-rb' }
- '13': { my_node1: 'cbxi4pro0-armhf-rb', my_node2: 'rpi2b-armhf-rb' }
- '14': { my_node1: 'cbxi4a-armhf-rb', my_node2: 'odxu4b-armhf-rb' }
- '15': { my_node1: 'rpi2b-armhf-rb', my_node2: 'odxu4c-armhf-rb' }
- '16': { my_node1: 'odxu4b-armhf-rb', my_node2: 'wbd0-armhf-rb' }
- '17': { my_node1: 'odxu4c-armhf-rb', my_node2: 'hb0-armhf-rb' }
- '18': { my_node1: 'odxu4b-armhf-rb', my_node2: 'odu3a-armhf-rb' }
- '19': { my_node1: 'odxu4c-armhf-rb', my_node2: 'opi2c-armhf-rb' }
- '20': { my_node1: 'opi2b-armhf-rb', my_node2: 'odxu4b-armhf-rb' }
- '21': { my_node1: 'ff2a-armhf-rb', my_node2: 'odxu4c-armhf-rb' }
- '22': { my_node1: 'ff2a-armhf-rb', my_node2: 'rpi2c-armhf-rb' }
- '23': { my_node1: 'rpi2c-armhf-rb', my_node2: 'odxu4b-armhf-rb' }
- '24': { my_node1: 'rpi2c-armhf-rb', my_node2: 'odxu4c-armhf-rb' }
- '25': { my_node1: 'odxu4b-armhf-rb', my_node2: 'ff2b-armhf-rb' }
- '26': { my_node1: 'jtk1a-armhf-rb', my_node2: 'ff2a-armhf-rb' }
- '27': { my_node1: 'odxu4c-armhf-rb', my_node2: 'cbxi4a-armhf-rb' }
- '28': { my_node1: 'jtk1a-armhf-rb', my_node2: 'ff2b-armhf-rb' }
- '29': { my_node1: 'ff2b-armhf-rb', my_node2: 'jtk1a-armhf-rb' }
- '30': { my_node1: 'ff2b-armhf-rb', my_node2: 'cbxi4b-armhf-rb' }
- '31': { my_node1: 'ff2b-armhf-rb', my_node2: 'opi2b-armhf-rb' }
- '32': { my_node1: 'jtk1a-armhf-rb', my_node2: 'cbxi4b-armhf-rb' }
- '33': { my_node1: 'ff2a-armhf-rb', my_node2: 'opi2b-armhf-rb' }
- '34': { my_node1: 'cbxi4a-armhf-rb', my_node2: 'opi2b-armhf-rb' }
- '35': { my_node1: 'opi2a-armhf-rb', my_node2: 'ff2b-armhf-rb' }
- '36': { my_node1: 'opi2a-armhf-rb', my_node2: 'cbxi4a-armhf-rb' }
- '37': { my_node1: 'opi2a-armhf-rb', my_node2: 'wbq0-armhf-rb' }
- '38': { my_node1: 'cbxi4b-armhf-rb', my_node2: 'jtk1a-armhf-rb' }
- '39': { my_node1: 'cbxi4b-armhf-rb', my_node2: 'cbxi4a-armhf-rb' }
- '40': { my_node1: 'opi2b-armhf-rb', my_node2: 'cbxi4b-armhf-rb' }
- '41': { my_node1: 'opi2b-armhf-rb', my_node2: 'cbxi4b-armhf-rb' }
- '42': { my_node1: 'cbxi4b-armhf-rb', my_node2: 'cbxi4a-armhf-rb' }
- '43': { my_node1: 'cbxi4a-armhf-rb', my_node2: 'opi2c-armhf-rb' }
- '44': { my_node1: 'bbx15-armhf-rb', my_node2: 'ff4a-armhf-rb' }
- '45': { my_node1: 'ff4a-armhf-rb', my_node2: 'p64b-armhf-rb' }
- '46': { my_node1: 'wbq0-armhf-rb', my_node2: 'bbx15-armhf-rb' }
- '47': { my_node1: 'cbxi4pro0-armhf-rb', my_node2: 'bbx15-armhf-rb' }
- '48': { my_node1: 'bbx15-armhf-rb', my_node2: 'p64c-armhf-rb' }
- '49': { my_node1: 'bpi0-armhf-rb', my_node2: 'ff4a-armhf-rb' }
- '50': { my_node1: 'odxu4-armhf-rb', my_node2: 'odu3a-armhf-rb' }
- '51': { my_node1: 'odu3a-armhf-rb', my_node2: 'cb3a-armhf-rb' }
- '52': { my_node1: 'opi2c-armhf-rb', my_node2: 'cb3a-armhf-rb' }
- '53': { my_node1: 'cb3a-armhf-rb', my_node2: 'ff4a-armhf-rb' }
- '54': { my_node1: 'odu3a-armhf-rb', my_node2: 'opi2c-armhf-rb' }
- '55': { my_node1: 'opi2c-armhf-rb', my_node2: 'odu3a-armhf-rb' }
- '56': { my_node1: 'odu3a-armhf-rb', my_node2: 'ff2a-armhf-rb' }
- '57': { my_node1: 'opi2c-armhf-rb', my_node2: 'ff2a-armhf-rb' }
- '58': { my_node1: 'cbxi4a-armhf-rb', my_node2: 'p64b-armhf-rb' }
- '59': { my_node1: 'jtk1a-armhf-rb', my_node2: 'p64c-armhf-rb' }
- '60': { my_node1: 'cbxi4b-armhf-rb', my_node2: 'opi2a-armhf-rb' }
- '61': { my_node1: 'p64c-armhf-rb', my_node2: 'opi2a-armhf-rb' }
- '62': { my_node1: 'p64b-armhf-rb', my_node2: 'opi2a-armhf-rb' }
- '63': { my_node1: 'p64b-armhf-rb', my_node2: 'ff4a-armhf-rb' }
- '64': { my_node1: 'p64c-armhf-rb', my_node2: 'bbx15-armhf-rb' }
- '65': { my_node1: 'p64b-armhf-rb', my_node2: 'cbxi4pro0-armhf-rb' }
- '66': { my_node1: 'p64c-armhf-rb', my_node2: 'odxu4-armhf-rb' }
my_shell: '/srv/jenkins/bin/reproducible_build.sh {my_node1} {my_node2}'
my_timed: '* * * * *'
my_hname: ''
- '{name}_{otherproject_artifacts}':
otherproject_artifacts:
- 'lede':
my_description: 'Rebuild LEDE (some targets, some packages) twice (with variations) and investigate regarding reproducibility.'
my_timed: '42 23 * * 4'
my_shell: '/srv/jenkins/bin/reproducible_lede.sh master'
- 'openwrt':
my_description: 'Rebuild OpenWrt (some targets, some packages) twice (with variations) and investigate regarding reproducibility.'
my_timed: '42 23 * * 2'
my_shell: '/srv/jenkins/bin/reproducible_openwrt.sh master'
my_trigger: 'reproducible_html_rsync_remote_results'
my_hname: ''
my_recipients: 'jenkins+reproducible-builds qa-jenkins-scm@lists.alioth.debian.org lynxis@fe80.eu'
- '{name}_{otherproject_triggering}':
otherproject_triggering:
- 'coreboot':
my_description: 'Rebuild all coreboot ROMs twice (with variations) and investigate regarding reproducibility.'
my_timed: '42 23 * * 1'
my_recipients: 'jenkins+reproducible-builds qa-jenkins-scm@lists.alioth.debian.org lynxis@fe80.eu'
- 'netbsd':
my_description: 'Rebuild NetBSD (for some archs) twice (with variations) and investigate regarding reproducibility.'
my_timed: '42 23 * * 3'
my_trigger: 'reproducible_html_rsync_remote_results'
my_shell: '/srv/jenkins/bin/jenkins_master_wrapper.sh'
my_hname: 'profitbricks3'
my_recipients: 'jenkins+reproducible-builds qa-jenkins-scm@lists.alioth.debian.org'
- '{name}_{otherproject}':
otherproject:
- 'freebsd':
my_description: 'Rebuild FreeBSD twice (with variations) and investigate regarding reproducibility.'
my_timed: '42 23 * * 4'
my_recipients: 'jenkins+reproducible-builds qa-jenkins-scm@lists.alioth.debian.org'
my_shell: '/srv/jenkins/bin/reproducible_freebsd.sh'
- 'setup_schroot_archlinux_jenkins':
my_description: 'Setup an Arch Linux schroot to test Arch Linux packages for reproducibility.'
my_timed: '42 23 1 1 *'
my_shell: '/srv/jenkins/bin/reproducible_setup_archlinux_schroot.sh'
my_disabled: true
- 'setup_schroot_archlinux_profitbricks3':
my_description: 'Setup an Arch Linux schroot to test Arch Linux packages for reproducibility.'
my_timed: '42 23 1 1 *'
my_hname: 'profitbricks3'
my_disabled: true
- 'setup_schroot_archlinux_profitbricks4':
my_description: 'Setup an Arch Linux schroot to test Arch Linux packages for reproducibility.'
my_timed: '42 23 1 1 *'
my_hname: 'profitbricks4'
my_disabled: true
- 'setup_mock_fedora-23_x86_64_jenkins':
my_description: 'Setup mock for fedora-23 on X86_64 to test .rpm packages for reproducibility.'
my_timed: '42 23 1 1 *'
my_shell: '/srv/jenkins/bin/reproducible_setup_mock.sh fedora-23 x86_64'
my_disabled: true
- 'setup_mock_fedora-23_x86_64_profitbricks3':
my_description: 'Setup mock for fedora-23 on X86_64 to test .rpm packages for reproducibility.'
my_timed: '42 23 1 1 *'
my_hname: 'profitbricks3'
my_disabled: true
- 'setup_mock_fedora-23_x86_64_profitbricks4':
my_description: 'Setup mock for fedora-23 on X86_64 to test .rpm packages for reproducibility.'
my_timed: '42 23 1 1 *'
my_hname: 'profitbricks4'
my_disabled: true
- 'setup_fdroid_build_environment':
my_description: 'Setup a build environment for F-Droid.'
my_timed: '42 0 * * 1'
my_hname: 'profitbricks7'
my_recipients: 'jenkins+reproducible-builds qa-jenkins-scm@lists.alioth.debian.org hans@guardianproject.info michael.poehn@fsfe.org'
my_shell: '/srv/jenkins/bin/jenkins_master_wrapper.sh'
my_hname: ''
- '{name}_{otherproject_git}':
otherproject_git:
- 'fdroid_build_apps':
my_description: 'Build all the latest apps for F-Droid.'
my_timed: '42 7 * * *'
my_hname: 'profitbricks7'
my_gitrepo: 'https://gitlab.com/fdroid/fdroidserver.git'
my_recipients: 'jenkins+reproducible-builds qa-jenkins-scm@lists.alioth.debian.org hans@guardianproject.info michael.poehn@fsfe.org'
- 'diffoscope_from_git_master':
my_description: 'Build diffoscope Debian package from git branch master.'
my_timed: '42 23 1 1 *'
my_hname: ''
my_gitrepo: 'git://anonscm.debian.org/git/reproducible/diffoscope.git'
my_gitbranches: 'origin/master'
my_shell: '/srv/jenkins/bin/chroot-run.sh sid debuild -uc -us'
my_parse_rules: '/srv/jenkins/logparse/debian-pkg-ci.rules'
- 'diffoscope_from_git_branches':
my_description: 'Build diffoscope Debian package from git branches other than master.'
my_timed: '42 23 1 1 *'
my_hname: ''
my_gitrepo: 'git://anonscm.debian.org/git/reproducible/diffoscope.git'
my_gitbranches: ':^(?!origin/master$).*'
my_shell: '/srv/jenkins/bin/chroot-run.sh sid debuild -uc -us'
my_parse_rules: '/srv/jenkins/logparse/debian-pkg-ci.rules'
- 'reprotest_from_git_master':
my_description: 'Build reprotest Debian package from git branch master.'
my_timed: '42 23 1 1 *'
my_hname: ''
my_gitrepo: 'git://anonscm.debian.org/git/reproducible/reprotest.git'
my_gitbranches: 'origin/master'
my_shell: '/srv/jenkins/bin/chroot-run.sh sid debuild -uc -us'
my_parse_rules: '/srv/jenkins/logparse/debian-pkg-ci.rules'
- 'strip-nondeterminism_from_git_master':
my_description: 'Build strip-nondeterminism Debian package from git branch master.'
my_timed: '42 23 1 1 *'
my_hname: ''
my_gitrepo: 'git://anonscm.debian.org/git/reproducible/strip-nondeterminism.git'
my_gitbranches: 'origin/master'
my_shell: '/srv/jenkins/bin/chroot-run.sh sid gbp buildpackage -uc -us --git-upstream-branch=master'
my_parse_rules: '/srv/jenkins/logparse/debian-pkg-ci.rules'
- 'disorderfs_from_git_master':
my_description: 'Build disorderfs Debian package from git branch master.'
my_timed: '42 23 1 1 *'
my_hname: ''
my_gitrepo: 'git://anonscm.debian.org/git/reproducible/disorderfs.git'
my_gitbranches: 'origin/master'
my_shell: '/srv/jenkins/bin/chroot-run.sh sid gbp buildpackage -uc -us --git-upstream-branch=master'
my_parse_rules: '/srv/jenkins/logparse/debian-pkg-ci.rules'
- 'builds_website':
my_description: 'Build https://reproducible-builds.org on every git commit to https://anonscm.debian.org/git/reproducible/reproducible-website.git with jekyll.'
my_timed: ''
my_hname: ''
my_gitrepo: 'git://git.debian.org/git/reproducible/reproducible-website.git'
my_gitbranches: 'origin/master'
my_shell: 'jekyll build -s . -d /srv/reproducible-builds.org/www'
my_gitbranches: 'master'
my_recipients: 'jenkins+debian-reproducible qa-jenkins-scm@lists.alioth.debian.org'
my_shell: '/srv/jenkins/bin/jenkins_master_wrapper.sh'
my_parse_rules: '/srv/jenkins/logparse/reproducible-extra.rules'
my_hname: ''
- '{name}_builder_{otherproject}_{my_num}':
otherproject:
- 'archlinux':
my_num: 1
op_descname: 'an Arch Linux'
- 'archlinux':
my_num: 2
op_descname: 'an Arch Linux'
- 'fedora-23_x86_64':
my_num: 1
op_descname: 'a Fedora 23'
my_shell: '/srv/jenkins/bin/reproducible_build_rpm.sh fedora-23 x86_64'
- 'fedora-23_x86_64':
my_num: 2
op_descname: 'a Fedora 23'
my_shell: '/srv/jenkins/bin/reproducible_build_rpm.sh fedora-23 x86_64'
# when you add another fedora builder here
# the loop in bin/reproducible_setup_mock.sh needs to be increased too
my_description: 'Try to reproducibly build {op_descname} package.'
my_shell: '/srv/jenkins/bin/reproducible_build_{otherproject}_pkg.sh'
my_timed: '* * * * *'
my_trigger: 'reproducible_html_{otherproject}'
my_hname: ''
my_disabled: true