aboutsummaryrefslogtreecommitdiffstats
path: root/jenkinsfile.edk2
blob: 840c8b9e31d17022f8f32d8995b6be9e21f1eec2 (plain)
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
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
118
119
120
121
#!/usr/bin/env groovy

def BuildX64(tag, args) {
    dir ('edk2') {
	sh """
	    unset WORKSPACE
	    source ./edksetup.sh
	    make -C BaseTools
	    build $args -t GCC5 -n \$(nproc) -a X64  -p OvmfPkg/OvmfPkgX64.dsc
	"""
    }
    dir ('edk2/Build/OvmfX64') {
	stash name: tag, includes: '*/FV/OVMF*.fd'
    }
    dir ('edk2/Build') {
	deleteDir()
    }
}

def TestSimpleX64(tag, args) {
    dir (tag) {
	unstash tag
    }
    sh """
	scripts/qemu-boot-kernel $args \
	    -bios $tag/*/FV/OVMF.fd
    """
    dir (tag) {
	deleteDir()
    }
}

def TestFlashX64(tag, args) {
    dir (tag) {
	unstash tag
    }
    sh """
	code=\$(echo $tag/*/FV/OVMF_CODE.fd)
	vars=\$(echo $tag/*/FV/OVMF_VARS.fd)
	scripts/qemu-boot-kernel $args \
	    -drive file=\${code},if=pflash,format=raw,unit=0,readonly=on \
	    -drive file=\${vars},if=pflash,format=raw,unit=1
    """
    dir (tag) {
	deleteDir()
    }
}

pipeline {

    agent {
	node 'dist-fedora-x86_64'
    }

    triggers {
	pollSCM('H/6 * * * *')
    }

    stages {

	stage ('Prepare') {
	    steps {
		dir ('edk2') {
		    checkout([
			$class: 'GitSCM',
			branches: [
			    [ name: '*/master' ]
			],
			extensions: [
			    [
				$class: 'CloneOption',
				timeout: 60
			    ],[
				$class: 'SubmoduleOption',
				timeout: 60
			    ]
			],
			userRemoteConfigs: [
			    [ url: 'git://github.com/tianocore/edk2' ]
			]])
		}
	    }
	}

	stage ('Build x64') {
	    steps {
		BuildX64("x64", "");
	    }
	}

	stage ('Build x64+smm') {
	    steps {
		BuildX64("x64+smm", "-D SECURE_BOOT_ENABLE -D SMM_REQUIRE");
	    }
	}

	stage ('Test pc') {
	    steps {
		TestSimpleX64("x64", "-M pc")
	    }
	}

	stage ('Test q35') {
	    steps {
		TestSimpleX64("x64", "-M q35")
	    }
	}

	stage ('Test q35 smp4 pflash') {
	    steps {
		TestFlashX64("x64", "-M q35 -smp 4")
	    }
	}

	stage ('Test q35 smp4 pflash smm') {
	    steps {
		TestFlashX64("x64+smm", "-M q35,smm=on -global ICH9-LPC.disable_s3=1 -smp 4")
	    }
	}
    }
}