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

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

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved (View Workflow)
    • Major
    • Resolution: Fixed
    • ssh-agent-plugin
    • None
    • Jenkins: 2.7.1 LTS
      docker-workflow-plugin: 1.7
      ssh-agent-plugin: 1.13

    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

            duemir Denys Digtiar added a comment - - edited

            hermain 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

            duemir Denys Digtiar added a comment - - edited hermain 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

            devopsfido 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.

            hermain Hermann Schweizer added a comment - devopsfido 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.
            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

            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
            jglick Jesse Glick added a comment -

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

            jglick Jesse Glick added a comment - eshepelyuk maybe ssh-agent is not in $PATH or something.

            hermain 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...
                }
              }
            }
            
            
            mcw Matt C. Wilson added a comment - hermain  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

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

              Dates

                Created:
                Updated:
                Resolved: