Jenkinsfile 4.46 KB
Newer Older
1
// ******************************************************************************
2
// Copyright 2017-2019 Intel Corporation
3 4 5 6 7 8 9 10 11 12 13 14 15
//
// Licensed 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.
// ******************************************************************************
16 17 18 19 20 21 22

try{ if(LABEL.trim() == "") {throw new Exception();} }catch(Exception e){LABEL="onnx && ci"}; echo "${LABEL}"

NGRPAH_REPOSITORY = "https://github.com/NervanaSystems/ngraph.git"
NGRAPH_COMMIT_HASH = "${ghprbActualCommit}" // particular nGraph PR commit hash 

ONNX_REPOSITORY = "https://github.com/NervanaSystems/onnxruntime.git"
23
ONNX_RUNTIME_BRANCH = "release"
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117

def main(){
    timeout(activity: true, time: 15) {
        try{
            stage("CloneRepos"){
                CloneRepos()
            }
            stage("Apply Patch"){
                ApplyPatch()
            }
            stage("Onnx Models"){
                BuildAndTest()
            }            
        }
        catch(e) {
            // Set result to ABORTED if exception contains exit code of a process interrupted by SIGTERM
            if ("$e".contains("143")) {
                currentBuild.result = "ABORTED"
            } else {
                currentBuild.result = "FAILURE"
            }
        }
        stage("Clean"){
            Clean()
        }
    }
}


def CloneRepos() {
    dir("ngraph"){
        checkout([
            $class: 'GitSCM',
            branches: [[name: "${NGRAPH_COMMIT_HASH}"]],
            doGenerateSubmoduleConfigurations: false,
            extensions: [[
                $class: 'SubmoduleOption',
                disableSubmodules: false,
                parentCredentials: true,
                recursiveSubmodules: true,
                reference: '',
                trackingSubmodules: false,
                timeout: 15
            ]],
            submoduleCfg: [],
            userRemoteConfigs: [[
                refspec: '+refs/pull/*:refs/remotes/origin/pr/*',
                url: "${NGRPAH_REPOSITORY}"
            ]]
        ])
    }
    dir("onnxruntime") {
        checkout([
            $class: 'GitSCM',
            branches: [[name: "${ONNX_RUNTIME_BRANCH}"]],
            doGenerateSubmoduleConfigurations: false,
            extensions: [[
                $class: 'SubmoduleOption',
                disableSubmodules: false,
                parentCredentials: true,
                recursiveSubmodules: true,
                reference: '',
                trackingSubmodules: false,
                timeout: 15
            ]],
            submoduleCfg: [],
            userRemoteConfigs: [[                    
                url: "${ONNX_REPOSITORY}"
            ]]
        ])
    }
}

def ApplyPatch(){
    dir("onnxruntime"){
        echo "Update cmake/external/ngraph.cmake with ${NGRAPH_COMMIT_HASH}"
        sh """
            sed -i 's/set(ngraph_TAG ".*")/set(ngraph_TAG "${NGRAPH_COMMIT_HASH}")/g' cmake/external/ngraph.cmake 
            grep -q "${NGRAPH_COMMIT_HASH}" cmake/external/ngraph.cmake 
        """
        echo "Add proxy to tools/ci_build/github/linux/docker/Dockerfile.ubuntu"
        sh """
            sed -i 's|{HTTP_PROXY}|${env.http_proxy}|g' ../ngraph/.ci/onnx/onnxruntime/proxy.patch
            sed -i 's|{SOCKS_PROXY}|${env.socks_proxy}|g' ../ngraph/.ci/onnx/onnxruntime/proxy.patch
            grep -q "${env.http_proxy}" ../ngraph/.ci/onnx/onnxruntime/proxy.patch
            git apply ../ngraph/.ci/onnx/onnxruntime/proxy.patch
        """
    }
}

def BuildAndTest(){
    dir("onnxruntime"){
        sh "mkdir -p `pwd`/build/models && chmod 777 `pwd`/build/models"
        sh """
118
            //!/bin/bash
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
            ./tools/ci_build/github/linux/run_dockerbuild.sh \
                -o ubuntu16.04 \
                -d ngraph \
                -r `pwd`/build -x '--use_ngraph --use_full_protobuf --test_data_url https://onnxruntimetestdata.blob.core.windows.net/models/20190327.zip --test_data_checksum 45166d81c021c8aae212b53c92101792'
        """
    }
}

def Clean(){
    deleteDir()
}

node(LABEL) {
    main()
}