83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
| pipeline {
 | |
| 	agent none
 | |
| 	environment {
 | |
| 		GLUON_SITEDIR = "contrib/ci/minimal-site"
 | |
| 		GLUON_TARGET = "x86-64"
 | |
| 		BUILD_LOG = "1"
 | |
| 	}
 | |
| 	stages {
 | |
| 		stage('lint') {
 | |
| 			parallel {
 | |
| 				stage('lint-lua') {
 | |
| 					agent { label 'gluon-docker' }
 | |
| 					steps {
 | |
| 						sh label: 'Identify runner', script: 'echo $SLAVE_NAME'
 | |
| 						sh 'make lint-lua'
 | |
| 					}
 | |
| 				}
 | |
| 				stage('lint-sh') {
 | |
| 					agent { label 'gluon-docker-v1' }
 | |
| 					steps {
 | |
| 						sh label: 'Identify runner', script: 'echo $SLAVE_NAME'
 | |
| 						sh 'make lint-sh'
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 		stage('docs') {
 | |
| 			agent { label 'gluon-docker' }
 | |
| 			steps {
 | |
| 				sh label: 'Identify runner', script: 'echo $SLAVE_NAME'
 | |
| 				sh 'make -C docs html'
 | |
| 			}
 | |
| 		}
 | |
| 		stage('build') {
 | |
| 			agent { label 'gluon-docker-v2' }
 | |
| 			steps {
 | |
| 				sh label: 'Identify runner', script: 'echo $SLAVE_NAME'
 | |
| 				sh 'make update'
 | |
| 				sh 'test -d /dl_cache && ln -s /dl_cache openwrt/dl || true'
 | |
| 				timeout(time: 2, unit: "HOURS") {
 | |
| 					sh 'make -j$(nproc) V=s'
 | |
| 				}
 | |
| 				stash includes: '**/output/images/factory/*-x86-64.img.gz', name: 'gluon-x86-64-factory'
 | |
| 			}
 | |
| 		}
 | |
| 		stage('test') {
 | |
| 			agent { label 'gluon-docker-v2' }
 | |
| 			environment {
 | |
| 				TMUX = "notmux"
 | |
| 			}
 | |
| 			steps {
 | |
| 				sh label: 'Identify runner', script: 'echo $SLAVE_NAME'
 | |
| 				unstash 'gluon-x86-64-factory'
 | |
| 				sh label: 'Unpack image', script: 'gunzip -cd ./output/images/factory/*x86-64*.img.gz > ./image.img'
 | |
| 				sh label: 'Print python environment', script: 'python3 -m pip freeze'
 | |
| 				script {
 | |
| 					for (f in findFiles(glob: 'tests/*.py')) {
 | |
| 						timeout(time: 10, unit: "MINUTES") {
 | |
| 							sh label: "Test ${f.name}", script: "python3 tests/${f.name} --use-tmp-workdir"
 | |
| 						}
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| /*
 | |
|  api-history:
 | |
| 
 | |
|  Every time the build dependencies of gluon change, the version
 | |
|  every container has to be rebuilt. Therefore, we use Jenkins
 | |
|  labels which intoduce a version number which is documented here.
 | |
|  As soon, as you properly rebuilt your docker container, you
 | |
|  can notify lemoer, that you have updated your node.
 | |
| 
 | |
|  - gluon-docker-v1:
 | |
|    - add shellcheck binary to the build environment
 | |
|  - gluon-docker-v2:
 | |
|    - add qemu-testlab testing, requires KVM virtualization support
 | |
|    - require rsync dependency to be able to build the next branch
 | |
| */
 |