Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-46988

String.eachLine only reads first line

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      As with JENKINS-26481 the eachLine-method on String only works for the first iteration.

      Using version 3.39

      We use a cleanup-pipeline to find all running docker-containers without a corresponding feature-branch (deleted after merge).

      stage('clean') {
       def branches = []
       // extract available branches from git
       sh (returnStdout: true, script: "ssh-agent bash -c 'ssh-add /var/lib/jenkins/.ssh/id_rsa &>/dev/null; git ls-remote --heads --refs ssh://git@myrepo/project.git' | cut -f 2")
        .eachLine { branches << it }
       // extract all containers (including stopped)
       def containers = []
       sh (returnStdout: true, script: "docker ps -a --format '{{.Names}}' --filter name=project")
        .trim()
        .eachLine { containers << it }
       println(containers) // <---- only prints first container
       println(branches) // <---- only prints first branch
      
       //stop containers for non existing branches...
       containers.each{ containername ->
        if(branches.findAll({branch -> branch.contains(containername)}).isEmpty()){
         println("trying to stop ${containername}")
         //sh ("docker stop ${containername} || true") // container might already be stopped
         println("removing ${containername}")
         //sh ("docker rm ${containername}")
        }
       }
      }

      As a workaround replace eachLine with split('\n').each { ... }

        Attachments

          Activity

          Hide
          dmitryb Dmitry Bigunyak added a comment -

          Also wasted time one this issue, but thanks to this bug report, quickly switched to workaround.

          Show
          dmitryb Dmitry Bigunyak added a comment - Also wasted time one this issue, but thanks to this bug report, quickly switched to workaround.
          Hide
          nancyrobertson Nancy Robertson added a comment -

          Affects us as well

          Show
          nancyrobertson Nancy Robertson added a comment - Affects us as well
          Hide
          tonyhoylerps Tony Hoyle added a comment -

          Same here.  What's worse is the error message links to a page https://jenkins.io/redirect/pipeline-cps-method-mismatches/ which has absolutely no hints on what the error could be, and assumes you know the internal workings of the groovy compiler.  No, I just want a simple and obvious construct to work..

           

           

           

          Show
          tonyhoylerps Tony Hoyle added a comment - Same here.  What's worse is the error message links to a page https://jenkins.io/redirect/pipeline-cps-method-mismatches/  which has absolutely no hints on what the error could be, and assumes you know the internal workings of the groovy compiler.  No, I just want a simple and obvious construct to work..      
          Hide
          pkozuchowski Piotr Kożuchowski added a comment -

          I've just stumbled over this as well.

          Show
          pkozuchowski Piotr Kożuchowski added a comment - I've just stumbled over this as well.
          Hide
          flash1212 Dominique Thornton added a comment -

          Likewise. Just burned a bit of time on this. Moving to the workaround.

          Show
          flash1212 Dominique Thornton added a comment - Likewise. Just burned a bit of time on this. Moving to the workaround.

            People

            Assignee:
            Unassigned Unassigned
            Reporter:
            lostiniceland Marc Schlegel
            Votes:
            30 Vote for this issue
            Watchers:
            25 Start watching this issue

              Dates

              Created:
              Updated: