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

sshAgent {} inside docker.image().inside {} does not work with long project name

    Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Major
    • Resolution: Fixed
    • Component/s: ssh-agent-plugin
    • Labels:
      None
    • Environment:
      Jenkins: 2.7.1 LTS
      docker-workflow-plugin: 1.7
      ssh-agent-plugin: 1.13
    • Similar Issues:

      Description

      If the socket can not be created in the tmp directory of the job, which happens if the socket path would get longer than 108, it will create the socket directly under /tmp. If I am using docker.image().inside this does not work. If I am using node {} it does work as expected.

      When using the GitHub Organisation Plugin I can not avoid long job names.

        Attachments

          Issue Links

            Activity

            Hide
            duemir Denys Digtiar added a comment - - edited

            Hermann Schweizer As Mike and Jesse alluded to, the new Agent implementation was added which is based on the CLI ssh-agent. If you have a CLI available inside the docker container and use the `sshagent` inside the docker.inside() closure, your git clone should work.

            Look for the message like "Exec ssh-agent (binary ssh-agent on a remote machine)" or any errors that mention ssh-agent

            Show
            duemir Denys Digtiar added a comment - - edited Hermann Schweizer As Mike and Jesse alluded to, the new Agent implementation was added which is based on the CLI ssh-agent . If you have a CLI available inside the docker container and use the `sshagent` inside the docker.inside() closure, your git clone should work. Look for the message like "Exec ssh-agent (binary ssh-agent on a remote machine)" or any errors that mention ssh-agent
            Hide
            hermain Hermann Schweizer added a comment -

            Bob O I managed to resolve the issue but this page was offline at the time so I forgot to mention it here:

            The problem in my case was that my git was not a known host inside the container:

            image.inside("-u root:root --network=host") {
                        sshagent(credentials: [config.gitKeyCredentialsId] ) {
                            sh "mkdir ~/.ssh"
                            sh "ssh-keyscan git.myCompany.com >> ~/.ssh/known_hosts"
                           // call scripts that do git clone...
                        }
                    }

             

            I hope that helps you and anyone else with a similar problem.

            Show
            hermain Hermann Schweizer added a comment - Bob O I managed to resolve the issue but this page was offline at the time so I forgot to mention it here: The problem in my case was that my git was not a known host inside the container: image.inside("-u root:root --network=host") {             sshagent(credentials: [config.gitKeyCredentialsId] ) {                 sh "mkdir ~/.ssh"                 sh "ssh-keyscan git.myCompany.com >> ~/.ssh/known_hosts"                // call scripts that do git clone...             }         }   I hope that helps you and anyone else with a similar problem.
            Hide
            eshepelyuk Evgeny Shepelyuk added a comment - - edited

            Hello, I'm using latest 1.17 version of SSH Agent Plugin and still expirience the same issue.
            Although docker image has ssh-agent cmd line command inside - the socket is created under {{/tmp} so it's inaccesisble

            Show
            eshepelyuk Evgeny Shepelyuk added a comment - - edited Hello, I'm using latest 1.17 version of SSH Agent Plugin and still expirience the same issue. Although docker image has ssh-agent cmd line command inside - the socket is created under {{/tmp} so it's inaccesisble
            Hide
            jglick Jesse Glick added a comment -

            Evgeny Shepelyuk maybe ssh-agent is not in $PATH or something.

            Show
            jglick Jesse Glick added a comment - Evgeny Shepelyuk maybe ssh-agent is not in $PATH or something.
            Hide
            mcw Matt C. Wilson added a comment -

            Hermann Schweizer Thank you!  This was exactly our issue.

             

            Works with SSH Agent Plugin v1.17 for us, using declarative pipeline and just a regular agent block:

            pipeline {
              agent { docker {
                image 'my_build_image'
                ...
              } }
              ...
              stage("foo") {
                sshagent(credentials: [config.gitKeyCredentialsId] ) {
                  sh "mkdir ~/.ssh && ssh-keyscan git.myCompany.com >> ~/.ssh/known_hosts"
                  // call scripts that do git clone...
                }
              }
            }
            
            
            Show
            mcw Matt C. Wilson added a comment - Hermann Schweizer  Thank you!  This was exactly our issue.   Works with SSH Agent Plugin v1.17 for us, using declarative pipeline and just a regular agent block: pipeline { agent { docker { image 'my_build_image' ... } } ... stage( "foo" ) { sshagent(credentials: [config.gitKeyCredentialsId] ) {       sh "mkdir ~/.ssh && ssh-keyscan git.myCompany.com >> ~/.ssh/known_hosts"        // call scripts that do git clone...     } } }

              People

              • Assignee:
                jglick Jesse Glick
                Reporter:
                sdomula Stan Domula
              • Votes:
                1 Vote for this issue
                Watchers:
                9 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: