| // -*- mode: groovy -*- |
| |
| // 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. |
| |
| // Jenkins pipeline |
| // See documents at https://jenkins.io/doc/book/pipeline/jenkinsfile/ |
| |
| // timeout in minutes |
| max_time = 60 |
| // assign any caught errors here |
| err = null |
| |
| // initialize source code |
| def init_git() { |
| deleteDir() |
| retry(5) { |
| try { |
| // Make sure wait long enough for api.github.com request quota. Important: Don't increase the amount of |
| // retries as this will increase the amount of requests and worsen the throttling |
| timeout(time: 15, unit: 'MINUTES') { |
| checkout scm |
| sh 'git submodule update --init --recursive' |
| sh 'git clean -d -f' |
| } |
| } catch (exc) { |
| deleteDir() |
| error "Failed to fetch source codes with ${exc}" |
| sleep 2 |
| } |
| } |
| } |
| |
| try { |
| stage('Build Docs') { |
| node('restricted-mxnetlinux-cpu') { |
| ws('workspace/docs') { |
| init_git() |
| timeout(time: max_time, unit: 'MINUTES') { |
| sh "ci/build.py -p ubuntu_cpu --docker-registry ${env.DOCKER_CACHE_REGISTRY} --docker-build-retries 3 /work/runtime_functions.sh build_docs ${params.tags_to_build} ${params.tag_list} ${params.tag_default} ${params.domain}" |
| archiveArtifacts 'docs/build_version_doc/artifacts.tgz' |
| build 'restricted-website-publish' |
| } |
| } |
| } |
| } |
| |
| // set build status to success at the end |
| currentBuild.result = "SUCCESS" |
| } catch (caughtError) { |
| node("restricted-mxnetlinux-cpu") { |
| sh "echo caught ${caughtError}" |
| err = caughtError |
| currentBuild.result = "FAILURE" |
| } |
| } finally { |
| node("restricted-mxnetlinux-cpu") { |
| // Only send email if master failed |
| if (currentBuild.result == "FAILURE") { |
| emailext body: 'Generating the website has failed. Please view the build at ${BUILD_URL}', replyTo: '${EMAIL}', subject: '[WEBSITE FAILED] Build ${BUILD_NUMBER}', to: '${EMAIL}' |
| } |
| // Remember to rethrow so the build is marked as failing |
| if (err) { |
| throw err |
| } |
| } |
| } |