@@ -492,68 +492,104 @@ def indent(line, level=1):
492492
493493 lines = header + [
494494 "" ,
495- "node {" ,
495+ "pipeline {" ,
496+ "agent any" ,
497+ "stages {" ,
496498 indent ("stage('checkout git') {" ),
497- indent ("checkout scm" , level = 2 ),
498- indent ("// remove untracked files (*.pyc for example)" , level = 2 ),
499- indent ("sh 'git clean -fxd'" , level = 2 ),
499+ indent ("steps {" , level = 2 ),
500+ indent ("checkout scm" , level = 3 ),
501+ indent ("// remove untracked files (*.pyc for example)" , level = 3 ),
502+ indent ("sh 'git clean -fxd'" , level = 3 ),
503+ indent ("}" , level = 2 ),
500504 indent ("}" ),
501505 ]
502506
507+ if vsc_ci_cfg [RUN_RUFF_CHECK ] or vsc_ci_cfg [RUN_RUFF_FORMAT_CHECK ]:
508+ r_url = (
509+ f"https://github.com/astral-sh/ruff/releases/download/{ RUFF_VERSION } /ruff-x86_64-unknown-linux-gnu.tar.gz"
510+ )
511+ ruff_install_lines = [
512+ indent ("stage('install ruff') {" ),
513+ indent ("steps {" , level = 2 ),
514+ indent (f"sh 'curl -L --silent { r_url } --output - | tar -xzv'" , level = 3 ),
515+ indent ("sh 'cp ruff-x86_64-unknown-linux-gnu/ruff .'" , level = 3 ),
516+ indent ("sh './ruff --version'" , level = 3 ),
517+ indent ("}" , level = 2 ),
518+ indent ("}" ),
519+ ]
520+ lines .extend (ruff_install_lines )
521+
522+ lines .extend ([
523+ indent ("stage('test pipeline') {" ),
524+ indent ("parallel {" , level = 2 ),
525+ ])
526+
503527 if vsc_ci_cfg [RUN_SHELLCHECK ]:
504528 # see https://github.com/koalaman/shellcheck#installing-a-pre-compiled-binary
505529 shellcheck_url = "https://github.com/koalaman/shellcheck/releases/download/latest/"
506530 shellcheck_url += "shellcheck-latest.linux.x86_64.tar.xz"
507531 lines .extend ([
508- indent ("stage ('shellcheck') {" ),
509- indent (f"sh 'curl -L --silent { shellcheck_url } --output - | tar -xJv'" , level = 2 ),
510- indent ("sh 'cp shellcheck-latest/shellcheck .'" , level = 2 ),
511- indent ("sh 'rm -r shellcheck-latest'" , level = 2 ),
512- indent ("sh './shellcheck --version'" , level = 2 ),
513- indent ("sh './shellcheck bin/*.sh'" , level = 2 ),
514- indent ("}" ),
532+ indent ("stage ('shellcheck') {" , level = 3 ),
533+ indent ("steps {" , level = 4 ),
534+ indent (f"sh 'curl -L --silent { shellcheck_url } --output - | tar -xJv'" , level = 5 ),
535+ indent ("sh 'cp shellcheck-latest/shellcheck .'" , level = 5 ),
536+ indent ("sh 'rm -r shellcheck-latest'" , level = 5 ),
537+ indent ("sh './shellcheck --version'" , level = 5 ),
538+ indent ("sh './shellcheck bin/*.sh'" , level = 5 ),
539+ indent ("}" , level = 4 ),
540+ indent ("}" , level = 3 ),
515541 ])
516542
517- r_url = f"https://github.com/astral-sh/ruff/releases/download/{ RUFF_VERSION } /ruff-x86_64-unknown-linux-gnu.tar.gz"
518- ruff_install_lines = [
519- indent (f"sh 'curl -L --silent { r_url } --output - | tar -xzv'" , level = 2 ),
520- indent ("sh 'cp ruff-x86_64-unknown-linux-gnu/ruff .'" , level = 2 ),
521- indent ("sh './ruff --version'" , level = 2 ),
522- ]
523543 if vsc_ci_cfg [RUN_RUFF_FORMAT_CHECK ]:
524- lines .extend ([indent ("stage ('ruff format') {" )])
525- lines .extend (ruff_install_lines )
526- lines .extend ([indent ("sh './ruff format --check .'" , level = 2 ), indent ("}" )])
544+ lines .extend ([
545+ indent ("stage ('ruff format') {" , level = 3 ),
546+ indent ("steps {" , level = 4 ),
547+ indent ("sh './ruff format --check .'" , level = 5 ),
548+ indent ("}" , level = 4 ),
549+ indent ("}" , level = 3 ),
550+ ])
527551
528552 if vsc_ci_cfg [RUN_RUFF_CHECK ]:
529- lines .extend ([indent ("stage ('ruff check') {" )])
530- lines .extend (ruff_install_lines )
531- lines .extend ([indent ("sh './ruff check .'" , level = 2 ), indent ("}" )])
553+ lines .extend ([
554+ indent ("stage ('ruff check') {" , level = 3 ),
555+ indent ("steps {" , level = 4 ),
556+ indent ("sh './ruff check .'" , level = 5 ),
557+ indent ("}" , level = 4 ),
558+ indent ("}" , level = 3 ),
559+ ])
532560
533- lines .append (indent ("stage('test') {" ))
561+ lines .append (indent ("stage('test') {" , level = 3 ))
562+ lines .append (indent ("steps {" , level = 4 ))
534563 for test_cmd in test_cmds :
535564 # be careful with test commands that include single quotes!
536565 if "'" in test_cmd :
537- lines .append (indent (f'sh """{ test_cmd } """' , level = 2 ))
566+ lines .append (indent (f'sh """{ test_cmd } """' , level = 5 ))
538567 else :
539- lines .append (indent (f"sh '{ test_cmd } '" , level = 2 ))
540- lines .append (indent ("}" ))
568+ lines .append (indent (f"sh '{ test_cmd } '" , level = 5 ))
569+ lines .append (indent ("}" , level = 4 ))
570+ lines .append (indent ("}" , level = 3 ))
541571
542572 if vsc_ci_cfg [JIRA_ISSUE_ID_IN_PR_TITLE ]:
543573 lines .extend ([
544- indent ("stage('PR title JIRA link') {" ),
545- indent ("if (env.CHANGE_ID) {" , level = 2 ),
546- indent (r"if (env.CHANGE_TITLE =~ /\s+\(?HPC-\d+\)?/) {" , level = 3 ),
547- indent ('echo "title ${env.CHANGE_TITLE} seems to contain JIRA ticket number."' , level = 4 ),
548- indent ("} else {" , level = 3 ),
549- indent ("echo \" ERROR: title ${env.CHANGE_TITLE} does not end in 'HPC-number'.\" " , level = 4 ),
550- indent ('error("malformed PR title ${env.CHANGE_TITLE}.")' , level = 4 ),
574+ indent ("stage('PR title JIRA link') {" , level = 3 ),
575+ indent ("steps {" , level = 4 ),
576+ indent ("if (env.CHANGE_ID) {" , level = 5 ),
577+ indent (r"if (env.CHANGE_TITLE =~ /\s+\(?HPC-\d+\)?/) {" , level = 6 ),
578+ indent ('echo "title ${env.CHANGE_TITLE} seems to contain JIRA ticket number."' , level = 7 ),
579+ indent ("} else {" , level = 6 ),
580+ indent ("echo \" ERROR: title ${env.CHANGE_TITLE} does not end in 'HPC-number'.\" " , level = 7 ),
581+ indent ('error("malformed PR title ${env.CHANGE_TITLE}.")' , level = 7 ),
582+ indent ("}" , level = 6 ),
583+ indent ("}" , level = 5 ),
584+ indent ("}" , level = 4 ),
551585 indent ("}" , level = 3 ),
552- indent ("}" , level = 2 ),
553- indent ("}" ),
554586 ])
555587
556- lines .append ("}" )
588+ # close parallel stages
589+ lines .append (indent ("}" , level = 2 ))
590+ lines .append (indent ("}" ))
591+
592+ lines .append ("}}" )
557593
558594 return "\n " .join (lines ) + "\n "
559595
0 commit comments