Jenkinsfile 3.43 KB
Newer Older
Chris Austen's avatar
Chris Austen committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
// RULES:
// 1) Build and cache the docker 
// 2) Be able to restart parts of the pipeline
// 3) Check your targets 
//
// Build Process
//
// HIP Clang Docker --> "all targets", "clang asan", etc 
// ORT Docker       --> "ORT benchmark"
//
// Each docker can be used on any system

def rocmnode(name) {
    return 'rocmtest && (' + name + ')'
}

def getDockerImageName(dockerArgs)
{
    sh "echo ${dockerArgs} > factors.txt"
    def image = "rocm/migraphx-ci-ubuntu"
    sh "md5sum Dockerfile requirements.txt dev-requirements.txt >> factors.txt"
    def docker_hash = sh(script: "md5sum factors.txt | awk '{print \$1}' | head -c 6", returnStdout: true)
    sh "rm factors.txt"
    echo "Docker tag hash: ${docker_hash}"
    image = "${image}:ci_${docker_hash}"
    if(params.DOCKER_IMAGE_OVERRIDE != '')
    {
        echo "Overriding the base docker image with ${params.DOCKER_IMAGE_OVERRIDE}"
        image = "${params.DOCKER_IMAGE_OVERRIDE}"
    }
    return image

}

def getDockerImage(Map conf=[:])
{
    env.DOCKER_BUILDKIT=1
    def gpu_arch = "gfx1030;gfx1100;gfx1101;gfx1102" // prebuilt dockers should have all the architectures enabled so one image can be used for all stages
    def dockerArgs = "--build-arg GPU_TARGETS='${gpu_arch}'"
    echo "Docker Args: ${dockerArgs}"

    def image = getDockerImageName(dockerArgs)

    def dockerImage
    try{
        echo "Pulling down image: ${image}"
        dockerImage = docker.image("${image}")
        dockerImage.pull()
    }
    catch(org.jenkinsci.plugins.workflow.steps.FlowInterruptedException e){
        echo "The job was cancelled or aborted"
        throw e
    }
    catch(Exception ex)
    {
        dockerImage = docker.build("${image}", "${dockerArgs} .")
        withDockerRegistry([ credentialsId: "docker_test_cred", url: "" ]) {
            dockerImage.push()
        }
    }
    return [dockerImage, image]
}

Chris Austen's avatar
Chris Austen committed
64
65
66
67
68
69
70
71
72
def show_node_info() {
    sh """
        echo "NODE_NAME = \$NODE_NAME"
        lsb_release -sd
        uname -r
        cat /sys/module/amdgpu/version
        ls /opt/ -la
    """
}
Chris Austen's avatar
Chris Austen committed
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

pipeline {
    agent none
    options {
        parallelsAlwaysFailFast()
    }
    parameters {
        booleanParam(
            name: "BUILD_DOCKER",
            defaultValue: true,
            description: "")
        booleanParam(
            name: "BUILD_STATIC_CHECKS",
            defaultValue: true,
            description: "")
        string(name: "DOCKER_IMAGE_OVERRIDE",
            defaultValue: '',
            description: "")            
    }

    stages{
        stage('Build Docker'){
            when {
                expression { params.BUILD_DOCKER }
            }
            agent{ label rocmnode("nogpu") }
            steps{
                getDockerImage()
            }
        }
        stage("Static checks") {
            parallel{
                stage('Hip Tidy') {
                    agent{ label rocmnode("nogpu") }
                    environment{
Chris Austen's avatar
Chris Austen committed
108
                        build_cmd = "Chris"
Chris Austen's avatar
Chris Austen committed
109
110
                    }
                    steps{
Chris Austen's avatar
Chris Austen committed
111
                        show_node_info() 
Chris Austen's avatar
Chris Austen committed
112
113
114
115
116
117
118
119
120
121
122
123
                    }
                }
                stage('Clang Format') {
                    agent{ label rocmnode("nogpu") }
                    steps{
                        sh "echo Hi from Clang Format"
                    }
                }
            }
        }
    }
}