From 5b1649b8c59fa7cc12595ddf0fe5161b17aba897 Mon Sep 17 00:00:00 2001 From: Yaman Umuroglu <maltanar@gmail.com> Date: Fri, 3 Jul 2020 17:31:06 +0100 Subject: [PATCH] [Jenkins] update Jenkinsfile with separated parallel testing --- docker/Jenkinsfile | 49 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/docker/Jenkinsfile b/docker/Jenkinsfile index 7ce622c50..5b0c5723b 100644 --- a/docker/Jenkinsfile +++ b/docker/Jenkinsfile @@ -9,7 +9,12 @@ pipeline { string(name: 'PYNQ_PASSWORD', defaultValue: 'xilinx', description: 'PYNQ board password') string(name: 'PYNQ_TARGET_DIR', defaultValue: '/home/xilinx/finn', description: 'PYNQ board target deployment directory') string(name: 'NUM_DEFAULT_WORKERS', defaultValue: '1', description: 'Number of cores for parallel transformations') - string(name: 'DOCKER_CMD', defaultValue: """python setup.py test --addopts "--dist=loadfile -n auto"""", description: 'Command to run') + // main test: everything except rtlsim and end2end tests, parallel run with xdist, no parallel transformations to save on memory + string(name: 'DOCKER_CMD_MAIN', defaultValue: """python setup.py test --addopts "-k 'not (rtlsim or end2end)' --dist=loadfile -n auto" """, description: 'Main test command') + // rtlsim tests: parallel run with pytest-parallel, no parallel transformations to save on memory + string(name: 'DOCKER_CMD_RTLSIM', defaultValue: """python setup.py test --addopts "-k rtlsim --workers auto" """, description: 'rtlsim test command') + // end2end tests: no parallel testing, use NUM_DEFAULT_WORKERS for parallel transformations + string(name: 'DOCKER_CMD_END2END', defaultValue: """python setup.py test --addopts "-k end2end" """, description: 'end2end test command') } environment { DOCKER_TAG='finn_ci:$BUILD_ID' @@ -32,13 +37,13 @@ pipeline { """ } } - stage('Test') { + stage('test-main') { steps { sh """ docker run --name $DOCKER_INST_NAME --init \ --hostname $DOCKER_INST_NAME \ -v ${params.VIVADO_PATH}:${params.VIVADO_PATH}:ro \ - -e NUM_DEFAULT_WORKERS=${params.NUM_DEFAULT_WORKERS} \ + -e NUM_DEFAULT_WORKERS=1 \ -e FINN_INST_NAME=$DOCKER_INST_NAME \ -e VIVADO_PATH=${params.VIVADO_PATH} \ -e PYNQ_BOARD=${params.PYNQ_BOARD} \ @@ -46,7 +51,43 @@ pipeline { -e PYNQ_USERNAME=${params.PYNQ_USERNAME} \ -e PYNQ_PASSWORD=${params.PYNQ_PASSWORD} \ -e PYNQ_TARGET_DIR=${params.PYNQ_TARGET_DIR} \ - $DOCKER_TAG ${params.DOCKER_CMD} + $DOCKER_TAG ${params.DOCKER_CMD_MAIN} + """ + } + } + stage('test-rtlsim') { + steps { + sh """ + docker run --name $DOCKER_INST_NAME --init \ + --hostname $DOCKER_INST_NAME \ + -v ${params.VIVADO_PATH}:${params.VIVADO_PATH}:ro \ + -e NUM_DEFAULT_WORKERS=1 \ + -e FINN_INST_NAME=$DOCKER_INST_NAME \ + -e VIVADO_PATH=${params.VIVADO_PATH} \ + -e PYNQ_BOARD=${params.PYNQ_BOARD} \ + -e PYNQ_IP=${params.PYNQ_IP} \ + -e PYNQ_USERNAME=${params.PYNQ_USERNAME} \ + -e PYNQ_PASSWORD=${params.PYNQ_PASSWORD} \ + -e PYNQ_TARGET_DIR=${params.PYNQ_TARGET_DIR} \ + $DOCKER_TAG ${params.DOCKER_CMD_RTLSIM} + """ + } + } + stage('test-end2end') { + steps { + sh """ + docker run --name $DOCKER_INST_NAME --init \ + --hostname $DOCKER_INST_NAME \ + -v ${params.VIVADO_PATH}:${params.VIVADO_PATH}:ro \ + -e NUM_DEFAULT_WORKERS=1 \ + -e FINN_INST_NAME=$DOCKER_INST_NAME \ + -e VIVADO_PATH=${params.VIVADO_PATH} \ + -e PYNQ_BOARD=${params.PYNQ_BOARD} \ + -e PYNQ_IP=${params.PYNQ_IP} \ + -e PYNQ_USERNAME=${params.PYNQ_USERNAME} \ + -e PYNQ_PASSWORD=${params.PYNQ_PASSWORD} \ + -e PYNQ_TARGET_DIR=${params.PYNQ_TARGET_DIR} \ + $DOCKER_TAG ${params.DOCKER_CMD_END2END} """ } } -- GitLab