Repository: incubator-beam Updated Branches: refs/heads/master c84045573 -> 8a7919b5a
Initial commit of jobs Signed-off-by: Jason Kuster <jasonkus...@google.com> Project: http://git-wip-us.apache.org/repos/asf/incubator-beam/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-beam/commit/ad9ca455 Tree: http://git-wip-us.apache.org/repos/asf/incubator-beam/tree/ad9ca455 Diff: http://git-wip-us.apache.org/repos/asf/incubator-beam/diff/ad9ca455 Branch: refs/heads/master Commit: ad9ca455218f6dda32e31ee97fe721e8b4ad6c2a Parents: c840455 Author: Jason Kuster <jasonkus...@google.com> Authored: Mon Nov 14 15:35:40 2016 -0800 Committer: Davor Bonaci <da...@google.com> Committed: Fri Dec 2 17:40:12 2016 -0800 ---------------------------------------------------------------------- .jenkins/common_job_properties.groovy | 166 +++++++++++++++++++ ...job_beam_PostCommit_Java_MavenInstall.groovy | 42 +++++ ...ommit_Java_RunnableOnService_Dataflow.groovy | 39 +++++ ...stCommit_Java_RunnableOnService_Flink.groovy | 38 +++++ ...ommit_Java_RunnableOnService_Gearpump.groovy | 41 +++++ ...stCommit_Java_RunnableOnService_Spark.groovy | 38 +++++ .../job_beam_PostCommit_Python_Verify.groovy | 37 +++++ .../job_beam_PreCommit_Java_MavenInstall.groovy | 42 +++++ .../job_beam_Release_NightlySnapshot.groovy | 46 +++++ .jenkins/job_seed.groovy | 47 ++++++ 10 files changed, 536 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/ad9ca455/.jenkins/common_job_properties.groovy ---------------------------------------------------------------------- diff --git a/.jenkins/common_job_properties.groovy b/.jenkins/common_job_properties.groovy new file mode 100644 index 0000000..f3a8a07 --- /dev/null +++ b/.jenkins/common_job_properties.groovy @@ -0,0 +1,166 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Contains functions that help build Jenkins projects. Functions typically set +// common properties that are shared among all Jenkins projects. +class common_job_properties { + + // Sets common top-level job properties. + static def setTopLevelJobProperties(def context, + def default_branch = 'master', + def default_timeout = 100) { + // GitHub project. + context.properties { + githubProjectUrl('https://github.com/apache/incubator-beam/') + } + + // Set JDK version. + context.jdk('JDK 1.8 (latest)') + + // Restrict this project to run only on Jenkins executors dedicated to the + // Apache Beam project. + context.label('beam') + + // Discard old builds. Build records are only kept up to this number of days. + context.logRotator { + daysToKeep(14) + } + + // Source code management. + context.scm { + git { + remote { + url('https://github.com/apache/incubator-beam.git') + refspec('+refs/heads/*:refs/remotes/origin/* ' + + '+refs/pull/*:refs/remotes/origin/pr/*') + } + branch('${sha1}') + extensions { + cleanAfterCheckout() + } + } + } + + context.parameters { + // This is a recommended setup if you want to run the job manually. The + // ${sha1} parameter needs to be provided, and defaults to the main branch. + stringParam( + 'sha1', + default_branch, + 'Commit id or refname (eg: origin/pr/9/head) you want to build.') + } + + context.wrappers { + // Abort the build if it's stuck for more minutes than specified. + timeout { + absolute(default_timeout) + abortBuild() + } + + // Set SPARK_LOCAL_IP for spark tests. + environmentVariables { + env('SPARK_LOCAL_IP', '127.0.0.1') + } + } + } + + // Sets the pull request build trigger. + static def setPullRequestBuildTrigger(def context, + def commitStatusContext, + def successComment = '--none--') { + context.triggers { + githubPullRequest { + admins(['asfbot']) + useGitHubHooks() + orgWhitelist(['apache']) + allowMembersOfWhitelistedOrgsAsAdmin() + permitAll() + + extensions { + commitStatus { + // This is the name that will show up in the GitHub pull request UI + // for this Jenkins project. + delegate.context(commitStatusContext) + } + + /* + This section is disabled, because of jenkinsci/ghprb-plugin#417 issue. + For the time being, an equivalent configure section below is added. + + // Comment messages after build completes. + buildStatus { + completedStatus('SUCCESS', successComment) + completedStatus('FAILURE', '--none--') + completedStatus('ERROR', '--none--') + } + */ + } + } + } + + // Comment messages after build completes. + context.configure { + def messages = it / triggers / 'org.jenkinsci.plugins.ghprb.GhprbTrigger' / extensions / 'org.jenkinsci.plugins.ghprb.extensions.comments.GhprbBuildStatus' / messages + messages << 'org.jenkinsci.plugins.ghprb.extensions.comments.GhprbBuildResultMessage' { + message(successComment) + result('SUCCESS') + } + messages << 'org.jenkinsci.plugins.ghprb.extensions.comments.GhprbBuildResultMessage' { + message('--none--') + result('ERROR') + } + messages << 'org.jenkinsci.plugins.ghprb.extensions.comments.GhprbBuildResultMessage' { + message('--none--') + result('FAILURE') + } + } + } + + // Sets common config for Maven jobs. + static def setMavenConfig(def context) { + context.mavenInstallation('Maven 3.3.3') + context.rootPOM('pom.xml') + // Use a repository local to the workspace for better isolation of jobs. + context.localRepository(LocalRepositoryLocation.LOCAL_TO_WORKSPACE) + } + + // Sets common config for PreCommit jobs. + static def setPreCommit(def context, comment) { + // Set pull request build trigger. + setPullRequestBuildTrigger(context, comment) + } + + // Sets common config for PostCommit jobs. + static def setPostCommit(def context, + def build_schedule = '0 */6 * * *', + def scm_schedule = '* * * * *', + def notify_address = 'commits@beam.incubator.apache.org') { + // Set build triggers + context.triggers { + // By default runs every 6 hours. + cron(build_schedule) + // Also polls SCM every minute. + scm(scm_schedule) + } + + context.publishers { + // Notify an email address for each failed build (defaults to commits@). + mailer(notify_address, false, true) + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/ad9ca455/.jenkins/job_beam_PostCommit_Java_MavenInstall.groovy ---------------------------------------------------------------------- diff --git a/.jenkins/job_beam_PostCommit_Java_MavenInstall.groovy b/.jenkins/job_beam_PostCommit_Java_MavenInstall.groovy new file mode 100644 index 0000000..7fc6c3b --- /dev/null +++ b/.jenkins/job_beam_PostCommit_Java_MavenInstall.groovy @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import common_job_properties + +// This job runs the Java postcommit tests, including the suite of integration +// tests. +mavenJob('beam_PostCommit_Java_MavenInstall') { + description('Runs postcommit tests on the Java SDK.') + + previousNames('beam_PostCommit_MavenVerify') + + // Execute concurrent builds if necessary. + concurrentBuild() + + // Set common parameters. + common_job_properties.setTopLevelJobProperties(delegate) + + // Set maven parameters. + common_job_properties.setMavenConfig(delegate) + + // Sets that this is a PostCommit job. + common_job_properties.setPostCommit(delegate) + + // Maven goals for this job. + goals('-B -e -P release,dataflow-runner clean install -DskipITs=false -DintegrationTestPipelineOptions=\'[ "--project=apache-beam-testing", "--tempRoot=gs://temp-storage-for-end-to-end-tests", "--runner=org.apache.beam.runners.dataflow.testing.TestDataflowRunner" ]\'') +} http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/ad9ca455/.jenkins/job_beam_PostCommit_Java_RunnableOnService_Dataflow.groovy ---------------------------------------------------------------------- diff --git a/.jenkins/job_beam_PostCommit_Java_RunnableOnService_Dataflow.groovy b/.jenkins/job_beam_PostCommit_Java_RunnableOnService_Dataflow.groovy new file mode 100644 index 0000000..44136ad --- /dev/null +++ b/.jenkins/job_beam_PostCommit_Java_RunnableOnService_Dataflow.groovy @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import common_job_properties + +// This job runs the suite of RunnableOnService tests against the Dataflow +// runner. +mavenJob('beam_PostCommit_Java_RunnableOnService_Dataflow') { + description('Runs the RunnableOnService suite on the Dataflow runner.') + + previousNames('beam_PostCommit_RunnableOnService_GoogleCloudDataflow') + + // Set common parameters. + common_job_properties.setTopLevelJobProperties(delegate) + + // Set maven parameters. + common_job_properties.setMavenConfig(delegate) + + // Sets that this is a PostCommit job. + common_job_properties.setPostCommit(delegate) + + // Maven goals for this job. + goals('-B -e clean verify -am -pl runners/google-cloud-dataflow-java -DforkCount=0 -DrunnableOnServicePipelineOptions=\'[ "--runner=org.apache.beam.runners.dataflow.testing.TestDataflowRunner", "--project=apache-beam-testing", "--tempRoot=gs://temp-storage-for-runnable-on-service-tests/" ]\'') +} http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/ad9ca455/.jenkins/job_beam_PostCommit_Java_RunnableOnService_Flink.groovy ---------------------------------------------------------------------- diff --git a/.jenkins/job_beam_PostCommit_Java_RunnableOnService_Flink.groovy b/.jenkins/job_beam_PostCommit_Java_RunnableOnService_Flink.groovy new file mode 100644 index 0000000..5a5863f --- /dev/null +++ b/.jenkins/job_beam_PostCommit_Java_RunnableOnService_Flink.groovy @@ -0,0 +1,38 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import common_job_properties + +// This job runs the suite of RunnableOnService tests against the Flink runner. +mavenJob('beam_PostCommit_Java_RunnableOnService_Flink') { + description('Runs the RunnableOnService suite on the Flink runner.') + + previousNames('beam_PostCommit_RunnableOnService_FlinkLocal') + + // Set common parameters. + common_job_properties.setTopLevelJobProperties(delegate) + + // Set maven parameters. + common_job_properties.setMavenConfig(delegate) + + // Sets that this is a PostCommit job. + common_job_properties.setPostCommit(delegate) + + // Maven goals for this job. + goals('-B -e clean verify -am -pl runners/flink/runner -Plocal-runnable-on-service-tests -Prunnable-on-service-tests') +} http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/ad9ca455/.jenkins/job_beam_PostCommit_Java_RunnableOnService_Gearpump.groovy ---------------------------------------------------------------------- diff --git a/.jenkins/job_beam_PostCommit_Java_RunnableOnService_Gearpump.groovy b/.jenkins/job_beam_PostCommit_Java_RunnableOnService_Gearpump.groovy new file mode 100644 index 0000000..f07bbc6 --- /dev/null +++ b/.jenkins/job_beam_PostCommit_Java_RunnableOnService_Gearpump.groovy @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import common_job_properties + +// This job runs the suite of RunnableOnService tests against the Gearpump +// runner. +mavenJob('beam_PostCommit_Java_RunnableOnService_Gearpump') { + description('Runs the RunnableOnService suite on the Gearpump runner.') + + previousNames('beam_PostCommit_RunnableOnService_GearpumpLocal') + + // Set common parameters. + common_job_properties.setTopLevelJobProperties(delegate, 'gearpump-runner') + + // Set maven parameters. + common_job_properties.setMavenConfig(delegate) + + // Sets that this is a PostCommit job. + // 0 5 31 2 * will run on Feb 31 (i.e. never) according to job properties. + // This job triggers only on SCM. + common_job_properties.setPostCommit(delegate, '0 5 31 2 *') + + // Maven goals for this job. + goals('-B -e clean verify -am -pl runners/gearpump -DforkCount=0 -DrunnableOnServicePipelineOptions=\'[ "--runner=TestGearpumpRunner", "--streaming=false" ]\'') +} http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/ad9ca455/.jenkins/job_beam_PostCommit_Java_RunnableOnService_Spark.groovy ---------------------------------------------------------------------- diff --git a/.jenkins/job_beam_PostCommit_Java_RunnableOnService_Spark.groovy b/.jenkins/job_beam_PostCommit_Java_RunnableOnService_Spark.groovy new file mode 100644 index 0000000..875c6e6 --- /dev/null +++ b/.jenkins/job_beam_PostCommit_Java_RunnableOnService_Spark.groovy @@ -0,0 +1,38 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import common_job_properties + +// This job runs the suite of RunnableOnService tests against the Spark runner. +mavenJob('beam_PostCommit_Java_RunnableOnService_Spark') { + description('Runs the RunnableOnService suite on the Spark runner.') + + previousNames('beam_PostCommit_RunnableOnService_SparkLocal') + + // Set common parameters. + common_job_properties.setTopLevelJobProperties(delegate) + + // Set maven parameters. + common_job_properties.setMavenConfig(delegate) + + // Sets that this is a PostCommit job. + common_job_properties.setPostCommit(delegate) + + // Maven goals for this job. + goals('-B -e clean verify -am -pl runners/spark -Prunnable-on-service-tests -Plocal-runnable-on-service-tests -Dspark.port.maxRetries=64 -Dspark.ui.enabled=false') +} http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/ad9ca455/.jenkins/job_beam_PostCommit_Python_Verify.groovy ---------------------------------------------------------------------- diff --git a/.jenkins/job_beam_PostCommit_Python_Verify.groovy b/.jenkins/job_beam_PostCommit_Python_Verify.groovy new file mode 100644 index 0000000..79e173b --- /dev/null +++ b/.jenkins/job_beam_PostCommit_Python_Verify.groovy @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import common_job_properties + +// This job defines the Python postcommit tests. +job('beam_PostCommit_Python_Verify') { + description('Runs postcommit tests on the Python SDK.') + + previousNames('beam_PostCommit_PythonVerify') + + // Set common parameters. + common_job_properties.setTopLevelJobProperties(delegate, 'python-sdk') + + // Sets that this is a PostCommit job. + common_job_properties.setPostCommit(delegate, '0 3-22/6 * * *') + + // Execute shell command to test Python SDK. + steps { + shell('bash sdks/python/run_postcommit.sh') + } +} http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/ad9ca455/.jenkins/job_beam_PreCommit_Java_MavenInstall.groovy ---------------------------------------------------------------------- diff --git a/.jenkins/job_beam_PreCommit_Java_MavenInstall.groovy b/.jenkins/job_beam_PreCommit_Java_MavenInstall.groovy new file mode 100644 index 0000000..8a8dea5 --- /dev/null +++ b/.jenkins/job_beam_PreCommit_Java_MavenInstall.groovy @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import common_job_properties + +// This is the Java precommit which runs a maven install, and the current set +// of precommit tests. +mavenJob('beam_PreCommit_Java_MavenInstall') { + description('Runs an install of the current GitHub Pull Request.') + + previousNames('beam_PreCommit_MavenVerify') + + // Execute concurrent builds if necessary. + concurrentBuild() + + // Set common parameters. + common_job_properties.setTopLevelJobProperties(delegate) + + // Set Maven parameters. + common_job_properties.setMavenConfig(delegate) + + // Sets that this is a PreCommit job. + common_job_properties.setPreCommit(delegate, 'Jenkins: Maven clean install') + + // Maven goals for this job. + goals('-B -e -Prelease,include-runners,jenkins-precommit,direct-runner,dataflow-runner,spark-runner,flink-runner,apex-runner help:effective-settings clean install') +} http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/ad9ca455/.jenkins/job_beam_Release_NightlySnapshot.groovy ---------------------------------------------------------------------- diff --git a/.jenkins/job_beam_Release_NightlySnapshot.groovy b/.jenkins/job_beam_Release_NightlySnapshot.groovy new file mode 100644 index 0000000..496a0c5 --- /dev/null +++ b/.jenkins/job_beam_Release_NightlySnapshot.groovy @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import common_job_properties + +// This is the nightly snapshot build -- we use this to deploy a daily snapshot +// to https://repository.apache.org/content/groups/snapshots/org/apache/beam. +// Runs the postsubmit suite before deploying. +mavenJob('beam_Release_NightlySnapshot') { + description('Runs a mvn clean deploy of the nightly snapshot.') + + // Execute concurrent builds if necessary. + concurrentBuild() + + // Set common parameters. + common_job_properties.setTopLevelJobProperties(delegate) + + // Set maven paramaters. + common_job_properties.setMavenConfig(delegate) + + // Set that this is a PostCommit job. + // Polls SCM on Feb 31st, i.e. never. + common_job_properties.setPostCommit( + delegate, + '0 7 * * *', + '0 5 31 2 *', + 'd...@beam.incubator.apache.org') + + // Maven goals for this job. + goals('-B -e clean deploy -P release,dataflow-runner -DskipITs=false -DintegrationTestPipelineOptions=\'[ "--project=apache-beam-testing", "--tempRoot=gs://temp-storage-for-end-to-end-tests", "--runner=org.apache.beam.runners.dataflow.testing.TestDataflowRunner" ]\'') +} http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/ad9ca455/.jenkins/job_seed.groovy ---------------------------------------------------------------------- diff --git a/.jenkins/job_seed.groovy b/.jenkins/job_seed.groovy new file mode 100644 index 0000000..e46e5a4 --- /dev/null +++ b/.jenkins/job_seed.groovy @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import common_job_properties + +// Defines the seed job, which creates or updates all other Jenkins projects. +job('beam_SeedJob_Main') { + description('Automatically configures all Apache Beam main repo Jenkins ' + + 'projects based on Jenkins DSL groovy files checked into the ' + + 'code repository.') + + // Set common parameters. + common_job_properties.setTopLevelJobProperties(delegate) + + // Set that this is a PostCommit job. + // Polls SCM on Feb 31st, i.e. never. + common_job_properties.setPostCommit( + delegate, + '0 6 * * *', + '0 5 31 2 *', + 'd...@beam.incubator.apache.org') + + steps { + dsl { + // A list or a glob of other groovy files to process. + external('.jenkins/job_*.groovy') + + // If a job is removed from the script, disable it (rather than deleting). + removeAction('DISABLE') + } + } +}