'scp' не распознается как внутренняя или внешняя команда при выполнении файла Jenkins - PullRequest
0 голосов
/ 25 января 2019

У меня есть базовый Jenkins pipeline, который создает проект Java и развертывает артефакт в экземпляре EC2.

Сборочная часть работает нормально, но развертывание не работает и выдает ошибку, связанную с scp.

Я скопировал и вставил всю команду scp, присутствующую в моем Jenkinsfile, в командную строку Windows, чтобы проверить, работает ли она и копирует ли она в экземпляр ec2 успешно и работает.

enter image description here

Не уверен, почему он не работает через Jenkins.

Jenkinsfile

pipeline {
        agent any
        tools {
            maven "Maven3"
        }
        stages {
            stage('Build and Deploy') {
                steps {
                    script {
                        def os = System.properties['os.name'].toLowerCase()
                        echo "OS: ${os}"                
                        if (os.contains("linux")) {
                          sh "mvn clean install -DskipTests" 
                        } else {
                          bat "mvn clean install -DskipTests"
                          bat "scp -i C:\\Users\\Nital\\.ssh\\LightsailDefaultKey-us-east-1.pem target\\helloworld-rest-app.jar ec2-user@35.175.125.176:/home/ec2-user/app-deploys"
                        }
                    }
                }
                post {
                    success {
                        echo 'Build and Deploy - SUCCESS'
                    }
                } 
            }
        }
    }

Командная строка Windows:

C:\Users\Nital>scp
usage: scp [-346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program] source ... target

Журнал ошибок Jenkins:

[INFO] Installing C:\Program Files (x86)\Jenkins\workspace\helloworld-rest-app-build\pom.xml to C:\Windows\system32\config\systemprofile\.m2\repository\com\example\helloworld-rest-app\0.0.1-SNAPSHOT\helloworld-rest-app-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.991 s
[INFO] Finished at: 2019-01-25T00:11:10-05:00
[INFO] ------------------------------------------------------------------------
[Pipeline] bat

C:\Program Files (x86)\Jenkins\workspace\helloworld-rest-app-build>scp -i C:\Users\Nital\.ssh\LightsailDefaultKey-us-east-1.pem target\hellworld-rest-app.jar ec2-user@35.175.125.176:/home/ec2-user/app-deploys 
'scp' is not recognized as an internal or external command,
operable program or batch file.
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 1
Finished: FAILURE

Ответы [ 4 ]

0 голосов
/ 29 апреля 2019

Это потому, что исполняемый файл находится в каталоге Windows System32 и из-за соображений безопасности не доступен из сценариев.Если вы скопируете исполняемые файлы ssh и scp из каталога Windows и поместите новый каталог в свой путь, он должен работать.

0 голосов
/ 25 января 2019

Команда Scp, используемая для безопасной передачи файлов между двумя компьютерами Linux / Unix

Синтаксис команды scp:

scp [options] username1@source_host:directory1/filename1 username2@destination_host:directory2/filename2

и для использования команды scp в windows используйте pscp:

pscp c:\documents\info.txt userid@server.example.com:/tmp/foo/info.txt

Пожалуйста, пройдите через сустав

https://it.cornell.edu/managed-servers/transfer-files-using-putty

0 голосов
/ 25 января 2019

Добавьте эту строку перед выполнением любой из команд, таких как scp и т. Д.

PATH=/sbin:/usr/sbin:/usr/bin:/usr/local/bin
0 голосов
/ 25 января 2019

Если вам нужно scp что-то из Windows, то почему бы просто не использовать pscp для этого?

установить PuTTY, который также включает PSCP (SCP для Windows).

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

выберите последнюю версию MSI («Установщик Windows») для вашего компьютера (32-разрядная или 64-разрядная)

Если вы хотите использовать ее в Javaпрограмма, то вот пример: http://www.jcraft.com/jsch/examples/ScpFrom.java.html

...