def confrepo = 'http://gogs.srt/BaseALT/autojen.git' def infraConfRepo = 'http://gogs.srt/BaseALT/infra-conf.git' def infraRepo = 'https://github.com/altlinuxteam/infra.git' def stackSamba = [ 'jenkins-samba-1x3', 'jenkins-samba-3x3', 'jenkins-samba-8sp-1x3-pub', 'jenkins-samba-8sp-3x3-pub', 'jenkins-samba-9-3x3-pub', 'jenkins-samba-sisyphus-1x3', 'jenkins-samba-sisyphus-1x3-pub', 'jenkins-samba-sisyphus-3x3-pub', 'jenkins-samba-sisyphus-3x3' ] def stackKerberos = [ 'jenkins-krb5-sisyphus-1x1' ] folder('samba') { displayName('Samba Team') description('Jobs for Samba AD DC testing and deployment') views { listView('Samba stacks') { description('Samba AD DC tests') filterBuildQueue() filterExecutors() columns { status() name() buildButton() } jobs { stackSamba.each { stack -> name(stack) } } } listView('Kerberos stacks') { description('Kerberos stacks') filterBuildQueue() filterExecutors() columns { status() name() buildButton() } jobs { stackKerberos.each { stack -> name(stack) } } } } } def mirrorsDest = '/data/mirrors/alt' def mirrorsSrc = 'mirror.yandex.ru' def platforms = [ 'c8', 'p8', 'p9' ] def elbrusBracnhes = [ 'c8', 'p8', 'p9', 'sisyphus' ] folder('infra') { displayName('Infrastructure') description('Run Jenkins Job DSL to reconfigure master') views { sectionedView('File synchronization') { description('File synchronization') filterBuildQueue() filterExecutors() sections { listView { name('AMD64') columns { status() name() buildButton() } jobs { platforms.each { platform -> name("sync-${platform}") } } } listView { name('MCST e2k') columns { status() name() buildButton() } jobs { elbrusBracnhes.each { branch -> name("sync-e2k-${branch}") } } } listView { name('MIPS32 LE') columns { status() name() buildButton() } } listView { name('Aarch64') columns { status() name() buildButton() } } } } listView('Backups') { description('Jobs to backup various artifacts') filterBuildQueue() filterExecutors() columns { status() name() buildButton() } jobs { name('switch-backup') } } listView('etc') { description('Uncategorized jobs') filterBuildQueue() filterExecutors() columns { status() name() buildButton() } jobs { name('configure-jenkins') } } } } /* * Job to configure Jenkins job('infra/configure-jenkins') { displayName('Configure Jenkins') description('Apply Jenkins configuration') scm { git { remote { name('origin') url(confrepo) } branch('master') extensions { cleanAfterCheckout() } } } } */ /* * Generate jobs to syncrinize various repos. The process looks like * this: * 1) Checkout this repo; * 2) Run synchronization script with paths set via environment * variables; * 3) Cleanup workspace; */ platforms.each { platform -> job("infra/sync-${platform}") { displayName("Synchronize ALT Linux repos for ${platform}") description('Runs synchronization script on PVE') // The job must be run on pve node label('pve') logRotator { numToKeep(10) } parameters { stringParam('MIRRORS_DEST', mirrorsDest, 'Directory to save repository to') stringParam('MIRRORS_SRC', mirrorsSrc, 'Host to download files from') } scm { git { remote { name('origin') url(confrepo) } branch('master') extensions { cleanAfterCheckout() } } } triggers { // Make a pause for sync during working hours cron('H 3,7,9,20,23 * * *') } steps { shell('/usr/bin/env MIRRORS_DEST=${MIRRORS_DEST} MIRRORS_SRC=${MIRRORS_SRC} PLATFORM=' + platform + ' /bin/sh ./scripts/sync_alt_repo') } } } job('infra/switch-backup') { displayName('Backup switch configuration') description('Signals switches to dump active configuration to central storage') label('pve') logRotator { numToKeep(20) } scm { git { remote { name('origin') url(confrepo) } branch('master') extensions { cleanAfterCheckout() } } } triggers { // Synchronize every 5 hours cron('H 5,10,15,20 * * *') } steps { shell('echo test') } }