Jenkinsfile: подключиться к серверу и выполнять операции на сервере - PullRequest
0 голосов
/ 20 марта 2020

В Jenkinsfile я пытаюсь войти на сервер и оттуда запустить docker -compose. Однако я получаю ошибку AccessDeniedException. Root пользователь имеет разрешения на все папки на сервере.

Я предполагаю, что у меня возникла ошибка: я подозреваю, что после s sh на сервер команда dir не запускается сервер, а точнее там, где работает Дженкинс.

Jenkinsfile:

pipeline {
    agent any

    environment {
        PATH = "$PATH:/usr/local/bin/"
    }

    stages {

        stage('Deploy to digital ocean') {
            steps {
                sshagent(['my-private-ssh-key']) {

                    sh """
                            ssh root@host
                        """
                     dir("/var/www/car_prices"){
                        sh "docker-compose down"

                     }

                 }
            }

        }
    }
}

Стек ошибок:

[Pipeline] dir
Running in /var/www/car_prices
[Pipeline] {
[Pipeline] sh
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
$ ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 67144 killed;
[ssh-agent] Stopped.
[Pipeline] // sshagent
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
java.nio.file.AccessDeniedException: /var/www

Вопрос: 1. Почему выдается ошибка?

1 Ответ

1 голос
/ 22 марта 2020

Вам нужно использовать ssh, чтобы выполнить работу за вас, что довольно просто:

...
sshagent(['my-private-ssh-key']) {
    sh """
        ssh root@host "cd /var/www/car_prices; docker-compose down"
    """
}
...

Это уродливо, но работает. Если вам интересно, вы можете разбить команды на несколько строк для лучшей читаемости. Этот подход становится еще сложнее, если вы хотите предоставить более сложные функции, такие как обработка ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...