Skip to content

[JENKINS-54177] Multibranch Pipeline and MercurialSCM and Windows node and subrepos #579

@jenkins-infra-bot

Description

@jenkins-infra-bot

Summary:

Checking out source with MercurialSCM on Windows Node, results in Error by checking out the sub-repositories.
The main repository is correctly checked out on the windows machine, it only failed on the sub-repos.

The error message received:
subrepo merge 000000000000+ 8331f24993aa 000000000000+
subrepo subprojects/mySubRepo: remote added, get ssh://hg@​myhost/myrepo:[myhash]:hg
running ssh -i c:\Jenkins\jenkins-mercurial*********.sshkey -l hg "hg@​myhost" "hg -R myrepo serve --stdio"
sending hello command
sending between command
remote: 'ssh' is not recognized as an internal or external command

Detailed description

I created a multi-branche pipeline, running on Jenkins master in Linux.

Jenkins Pipeline script:

 

....
stage('Checkout') {
   agent {label 'windows64&&build2013'}
   steps {
   echo "start checkout"

  checkout changelog: false, poll: false, scm: [
  $class: 'MercurialSCM',
                  clean: true, credentials_id: 'hg_ssh2_key',
                  disableChangeLog: true,
                  installation: 'MercurialWindows)']

   echo "end checkout ... start stashing the source"
  stash excludes: '.hg', name: 'src'

}
...

 

Mercurial Installations:

I am using two installations of Mercurial ( Manage Jenkins -> Global Tool Configurations: Mercurial -> Mercurial Installations:

  • Mercurial: The linux configuration (used by the master to check modifications).
  • MercurialWindows: The Windows configuration, configuring TortoiseHg

Windows node:

myjenkinsmaster.nl/computer/Windows_node/systemInfo:

In the environment variables, the path contains the path of the Tortoise application (C:\program files\TortoiseHg).

Pageant is active, with the ssh-key activated.

mercurial.ini is created in c:\Users\john

 

Error message:

Running on
Windows_node
in c:\Jenkins\workspace\mydir[Pipeline] {[Pipeline] checkout[......] $ hg --config ******** showconfig paths.default
Acquired master cache lock.
[....] $ hg --debug --config ******** pull
pulling from ssh://hg@​myhost/myrepo
running ssh -i /var/jenkins_home/jenkins-mercurial******.sshkey -l hg 'hg@​myhost' 'hg -R myrepo serve --stdio'
sending hello command
sending between command
........
... checking out all files:

checking out the first subrep:
subrepo merge 000000000000+ 8331f24993aa 000000000000+
subrepo subprojects/mysubrepo: remote added, get ssh://hg@​myhost/mysubrepo:*****:hg
running ssh -i c:\Jenkins\jenkins-mercurial******.sshkey -l hg "hg@​myhost" "hg -R mysubrepo serve --stdio"
sending hello command
sending between command
remote: 'ssh' is not recognized as an internal or external command,
remote: operable program or batch file.
abort: no suitable response from remote hg!
ERROR: Failed to update
 

The strange thing is that in the console log, the main repository is checked out with the same ssh-command, but then with the ssh-key as linux-style:

ssh -i /var/jenkins_home/jenkins-mercurial*********.sshkey -l hg "hg@​myhost" "hg -R myrepo serve --stdio"

 


Originally reported by nlwillem, imported from: Multibranch Pipeline and MercurialSCM and Windows node and subrepos
  • status: Open
  • priority: Blocker
  • component(s): mercurial-plugin
  • resolution: Unresolved
  • votes: 0
  • watchers: 1
  • imported: 20251216-225446
Raw content of original issue

Summary:

Checking out source with MercurialSCM on Windows Node, results in Error by checking out the sub-repositories. The main repository is correctly checked out on the windows machine, it only failed on the sub-repos.

The error message received: subrepo merge 000000000000+ 8331f24993aa 000000000000+ subrepo subprojects/mySubRepo: remote added, get ssh://hg@myhost/myrepo:[myhash]:hg running ssh -i c:\Jenkins\jenkins-mercurial*********.sshkey -l hg "hg@myhost" "hg -R myrepo serve --stdio" sending hello command sending between command remote: 'ssh' is not recognized as an internal or external command

Detailed description

I created a multi-branche pipeline, running on Jenkins master in Linux.

Jenkins Pipeline script:

 

....
stage('Checkout') {
   agent {label 'windows64&&build2013'}
   steps {
   echo "start checkout"

  checkout changelog: false, poll: false, scm: [
  $class: 'MercurialSCM',
                  clean: true, credentials_id: 'hg_ssh2_key',
                  disableChangeLog: true,
                  installation: 'MercurialWindows)']

   echo "end checkout ... start stashing the source"
  stash excludes: '.hg', name: 'src'

}
...

 

Mercurial Installations:

I am using two installations of Mercurial ( Manage Jenkins -> Global Tool Configurations: Mercurial -> Mercurial Installations:

  • Mercurial: The linux configuration (used by the master to check modifications).
  • MercurialWindows: The Windows configuration, configuring TortoiseHg

Windows node:

myjenkinsmaster.nl/computer/Windows_node/systemInfo:

In the environment variables, the path contains the path of the Tortoise application (C:\program files\TortoiseHg).

Pageant is active, with the ssh-key activated.

mercurial.ini is created in c:\Users\john

 

Error message:

Running on Windows_node in c:\Jenkins\workspace\mydir[Pipeline] {[Pipeline] checkout[......] $ hg --config ******** showconfig paths.default Acquired master cache lock. [....] $ hg --debug --config ******** pull pulling from ssh://hg@myhost/myrepo running ssh -i /var/jenkins_home/jenkins-mercurial******.sshkey -l hg 'hg@myhost' 'hg -R myrepo serve --stdio' sending hello command sending between command ........ ... checking out all files:

checking out the first subrep: subrepo merge 000000000000+ 8331f24993aa 000000000000+ subrepo subprojects/mysubrepo: remote added, get ssh://hg@myhost/mysubrepo:*****:hg running ssh -i c:\Jenkins\jenkins-mercurial******.sshkey -l hg "hg@myhost" "hg -R mysubrepo serve --stdio" sending hello command sending between command remote: 'ssh' is not recognized as an internal or external command, remote: operable program or batch file. abort: no suitable response from remote hg! ERROR: Failed to update  

The strange thing is that in the console log, the main repository is checked out with the same ssh-command, but then with the ssh-key as linux-style:

ssh -i /var/jenkins_home/jenkins-mercurial*********.sshkey -l hg "hg@myhost" "hg -R myrepo serve --stdio"

 

environment
Jenkins ver. 2.138.1<br/>
Mercurial Plugin 2.4<br/>
Windows node connected via Java Web Start<br/>
Jenkins Master:<br/>
Running in Docker, latest version of Jenkins:Jenkins:LTS<br/>
Windows Node:<br/>
OS: Windows 10<br/>
Applications:<br/>
- TortoiseHG version 4.7.2, installed via installer.<br/>
- Running as user John

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions