Browse Source

New Jenkinsfile for SGX enabled Graphene (#154)

New Jenkinsfile for SGX enabled Graphene

Also disable some flaky LTP and lmbench tests for now, so that CI more reliably passes.
Don Porter 6 years ago
parent
commit
e8928fe3b6

+ 109 - 0
Jenkinsfiles/Linux-SGX

@@ -0,0 +1,109 @@
+pipeline {
+        agent {
+            dockerfile { filename 'Jenkinsfiles/ubuntu-16.04.dockerfile'
+ 	                 label 'sgx_slave'
+ 		         args "-v /lib/modules:/lib/modules:ro -v /usr/src:/usr/src:ro -v /var/run/aesmd/aesm.socket:/var/run/aesmd/aesm.socket --device=/dev/gsgx:/dev/gsgx --device=/dev/isgx:/dev/isgx"
+	    	       }	    
+        }
+        stages {
+                stage('Build') {
+                    steps {
+                        sh '''
+                            cd Pal/src/host/Linux-SGX/signer/ && openssl genrsa -3 -out enclave-key.pem 3072
+                        '''
+                        sh '''
+			   cd /opt/intel
+			   git clone https://github.com/01org/linux-sgx-driver.git
+			   cd linux-sgx-driver
+			   git checkout sgx_driver_1.9
+			   make
+                        '''			
+                        sh '''			    
+                            cd Pal/src/host/Linux-SGX/sgx-driver 
+			    ISGX_DRIVER_PATH=/opt/intel/linux-sgx-driver ISGX_DRIVER_VERSION=1.9 make
+                        '''
+                        sh '''			    			    
+			    make SGX=1
+                        '''
+                        sh '''			    			    
+			    make SGX_RUN=1
+                        '''			    
+                    }
+                }
+                stage('Test') {
+                    steps {
+		    /*
+			timeout(time: 15, unit: 'MINUTES') {		    		    
+                            sh '''
+                                cd Pal/regression
+			        make SGX=1
+			        make SGX_RUN=1
+                                make SGX_RUN=1 KEEP_LOG=1 regression
+                                '''
+			}
+			*/
+                        sh '''
+                            cd LibOS/shim/test/regression
+			    make SGX=1
+			    make SGX_RUN=1			    
+                            make SGX_RUN=1 regression
+                            '''
+                        sh '''
+                            cd LibOS/shim/test/apps/python
+			    make SGX=1
+			    make SGX_RUN=1			    
+                            make SGX_RUN=1 regression
+                            '''
+			timeout(time: 5, unit: 'MINUTES') {		    
+                            sh '''
+                                cd LibOS/shim/test/apps/gcc
+			    	make SGX=1
+			        make SGX_RUN=1
+                                make SGX_RUN=1 regression
+                           '''
+			}
+			timeout(time: 15, unit: 'MINUTES') {
+                            sh '''
+                                cd LibOS/shim/test/apps/lmbench
+			    	make SGX=1
+			        make SGX_RUN=1
+                                make SGX_RUN=1 regression
+                            '''
+			}
+                        sh '''
+                            cd LibOS/shim/test/apps/lighttpd
+			    make SGX=1
+			    make SGX_RUN=1
+                            make SGX_RUN=1 start-graphene-server &
+			    sleep 10
+                            ./benchmark-http.sh `hostname -I|tr -d '[:space:]'`:8000			    
+                            '''
+			    /*
+                        sh '''
+                            cd LibOS/shim/test/apps/apache
+			    make SGX=1
+			    make SGX_RUN=1
+                            make SGX_RUN=1 start-graphene-server &
+			    sleep 15 && ./benchmark-http.sh `hostname -I|tr -d '[:space:]'`:8001
+                            '''
+			    */
+                    }
+                }
+                stage('Deploy') {
+                    steps {
+                        sh 'echo Deploying code'
+                    }
+                }
+        }
+        post {
+                success {
+                        echo 'Deployment successful'
+                }
+                failure {
+                        echo 'Failure while on the pipeline'
+                }
+                unstable {
+                        echo 'Pipeline marked as "unstable"'
+                }
+        }
+}

+ 23 - 4
Jenkinsfiles/ubuntu-16.04.dockerfile

@@ -9,19 +9,38 @@ RUN apt-get update && apt-get install -y \
     gawk \
     gettext \
     git \
+    libexpat1 \
+    libexpat1-dev \
     libpcre3-dev \
     libxml2-dev \
     net-tools \
     python \
+    python-crypto \
+    python-protobuf \
     texinfo \
     wget
 
+# Add the user UID:1001, GID:1001, home at /leeroy
+RUN groupadd -r leeroy -g 1001 && useradd -u 1001 -r -g leeroy -m -d /leeroy -c "Leeroy Jenkins" leeroy && \
+    chmod 755 /leeroy
 
-# Set environment variables.
-ENV HOME /root
+# Make sure /leeroy can be written by leeroy
+RUN chown 1001 /leeroy
+
+# Blow away any random state
+RUN rm -f /leeroy/.rnd
+
+# Make a directory for the intel driver
+RUN mkdir -p /opt/intel && chown 1001 /opt/intel
 
-# Define working directory.
-WORKDIR /root
+# Set the working directory to leeroy home directory
+WORKDIR /leeroy
+
+# Specify the user to execute all commands below
+USER leeroy
+
+# Set environment variables.
+ENV HOME /leeroy
 
 # Define default command.
 CMD ["bash"]

+ 1 - 1
LibOS/shim/test/apps/lmbench/lmbench-2.5

@@ -1 +1 @@
-Subproject commit 274a0210fcb73a466a316648ac75c8d1938f715e
+Subproject commit 5465b9d3ea41c33b5692ab319a98909cb35c8e27

+ 17 - 0
LibOS/shim/test/apps/ltp/FLAKY

@@ -18,3 +18,20 @@ clock_nanosleep01,11 - Pretty prone to hanging, don't think it is a timeout
 
 sendfile05,1 - pretty prone to a segfault, perhaps an unrelated issue
 Internal memory fault at 0x8 (IP = +0x34f1a, VMID = 3902099696, TID = 1)
+
+Prone to hanging - I think a memory corruption issue that may have a pending fix
+recvfrom01,1
+recvfrom01,2
+
+Intermittent seg fault
+kill03,1
+
+Intermittent hang
+send01,1
+send01,2
+sendto01,1
+sendto01,2
+sendto01,3
+
+Intermittent failure on Linux host
+poll02,1

+ 0 - 9
LibOS/shim/test/apps/ltp/PASSED

@@ -270,7 +270,6 @@ gettid01,1
 getuid01,1
 getuid03,1
 kill01,1
-kill03,1
 kill09,1
 listen01,1
 listen01,2
@@ -357,7 +356,6 @@ pipe10,1
 pipe2_01,1
 poll01,1
 poll01,2
-poll02,1
 pread01,1
 pread01_64,1
 pread02,1
@@ -417,8 +415,6 @@ readv01,1
 readv01,2
 recv01,1
 recv01,2
-recvfrom01,1
-recvfrom01,2
 recvmsg01,1
 recvmsg01,2
 rmdir01,1
@@ -750,8 +746,6 @@ semget03,1
 semop01,1
 semop04,1
 semop04,2
-send01,1
-send01,2
 sendfile03,1
 sendfile03,2
 sendfile03,3
@@ -759,9 +753,6 @@ sendfile03_64,1
 sendfile03_64,2
 sendfile03_64,3
 sendfile05_64,1
-sendto01,1
-sendto01,2
-sendto01,3
 setgid01,1
 setitimer01,1
 setpgid01,1