Конвейер Jenkins: команда kubectl не найдена

Я запускаю Jenkins локально, и это последний этап моего Jenkinsfile (после выполнения этого туториала):

stage('Deploy to K8s') {
    steps {
        sshagent(credentials: ['k8s_key']) {
            sh 'scp -r -o StrictHostKeyChecking=no localPath/deployment-remes-be.yaml <user>@<ip_address>:/opt/kubernetes-system/backend'
            script {
                try {
                    sh 'ssh <user>@<ip_address> kubectl apply -f /opt/kubernetes-system/backend/deployment-remes-be.yaml --kubeconfig=~/.kube/config'
                }
                catch(error) {

                }
            }
        }
    }
}

Когда я запускаю конвейер, он завершается без блокирующих ошибок, но когда я проверяю журналы, я вижу это:

Копия перед командой применения работает. У меня есть microk8s, установленный на сервере Debian, на который я пытаюсь выполнить развертывание, и если я запускаю команду применения вручную, она работает нормально. Я создал файл .kube/config, как показано здесь, но использование файла --kubeconfig не имеет никакого значения. Также не имеет значения, использую ли я microk8s.kubectl, я всегда получаю это сообщение.

У меня установлены эти плагины:

Что я могу сделать здесь, чтобы приложение работало из конвейера?


2
103
1

Ответ:

Решено

В этой ситуации, когда возникает ошибка, заключающаяся в том, что исполняемая команда не найдена в пути, в качестве первого шага следует попытаться ввести абсолютный путь. Метод шага оболочки можно соответствующим образом обновить:

sh 'ssh <user>@<ip_address> /path/to/kubectl apply -f /opt/kubernetes-system/backend/deployment-remes-be.yaml --kubeconfig=~/.kube/config'