Home > Mobile >  ENDSSH command not found
ENDSSH command not found

Time:10-29

I'm writing a jenkins pipeline jenkinsfile and within the script clause I have to ssh to a box and run some commands. I think the problem has to do with the env vars that I'm using within the quotes. I'm getting a ENDSSH command not found error and I'm at a loss. Any help would be much appreciated.

stage("Checkout my-git-repo"){
    steps {
      script {
        sh """
          ssh -o StrictHostKeyChecking=accept-new -o LogLevel=ERROR -o UserKnownHostsFile=/dev/null -i ${JENKINS_KEY} ${JENKINS_KEY_USR}@${env.hostname} << ENDSSH
          echo 'Removing current /opt/my-git-repo directory'
          sudo rm -rf /opt/my-git-repo
          echo 'Cloning new my-git-repo repo into /opt'
          git clone ssh://${JENKINS_USR}@git.gitbox.com:30303/my-git-repo
          sudo mv /home/jenkins/my-git-repo /opt
          ENDSSH
        """
      }
    }
  }

-bash: line 6: ENDSSH: command not found

CodePudding user response:

I'm personally not familiar with jenkins, but I'd guess the issue is the whitespace before ENDSSH

White space in front of the delimiter is not allowed.

(https://linuxize.com/post/bash-heredoc/)

Try either removing the indentation:

stage("Checkout my-git-repo"){
    steps {
      script {
        sh """
ssh -o StrictHostKeyChecking=accept-new -o LogLevel=ERROR -o UserKnownHostsFile=/dev/null -i ${JENKINS_KEY} ${JENKINS_KEY_USR}@${env.hostname} << ENDSSH
echo 'Removing current /opt/my-git-repo directory'
sudo rm -rf /opt/my-git-repo
echo 'Cloning new my-git-repo repo into /opt'
git clone ssh://${JENKINS_USR}@git.gitbox.com:30303/my-git-repo
sudo mv /home/jenkins/my-git-repo /opt
ENDSSH
        """
      }
    }
  }

OR ensure that the whitespace is only tabs and replace << with <<-:

Appending a minus sign to the redirection operator <<-, will cause all leading tab characters to be ignored. This allows you to use indentation when writing here-documents in shell scripts. Leading whitespace characters are not allowed, only tab.

  • Related