Дженкинс, как запустить задание, которое требует входа в систему как другой пользователь? - PullRequest
0 голосов
/ 05 мая 2020

Мое задание Jenkins должно запускать сценарии.

Эти сценарии должны выполнять команды как другие пользователи. Вот пример:

/usr/bin/su -c "/usr/bin/hive -e \"$QR_TABLE_DELETION\"" hive

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

Пароль: Пароль: su: Ошибка аутентификации

Как мне запускать скрипты, которые должны иметь возможность запускать команды от имени другого пользователя с Jenkins?

JenkinsFile:

pipeline {
    agent any
    stages {
        stage ('QR GOLD TABLE DELETION/CREATION') {
            steps {
                sh 'chmod +x ./load/bin/1.1.1_quality_results'
                sh './load/bin/1.1.1_quality_results'
            }
        }
        stage ('Finish') {
            steps {
                echo 'End'
            }
        }
    }
}

Редактировать : './load/bin/1.1.1_quality_results' содержит команду, которая должна быть запущена от имени другого пользователя.

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Решение, которое я выбрал до сих пор, - дать определенные c права sudo пользователю Jenkins, чтобы он мог использовать некоторые команды, такие как hive или hdfs.

0 голосов
/ 05 мая 2020

Что ж, простое решение - создать узел, который будет работать от имени пользователя на соответствующем хосте. Затем в jenkinsfile просто скажите Дженкинсу вызвать стадию, используя этот узел. В шагах выполните команду (без SU).

1.) Создайте узел как пользователь. Создайте узел в Jenkins, как обычно - вероятно, он должен использовать «Launch Method» = «Launch Agents via S SH». Укажите хост (который может быть localhost) и предоставьте учетные данные (имя пользователя / пароль) для пользователя, которому вы пытаетесь выполнить «su» как.

2.) Jenkinsfile. Будет выглядеть примерно так:

pipeline {
    agent { node { label 'SomeUserNode' } }
    stages {
        stage ('QR GOLD TABLE DELETION/CREATION - runs as user') {
            steps {
                sh '/usr/bin/hive -e \"$QR_TABLE_DELETION\"" hive'
            }
        }
        stage ('Finish') {
            steps {
                echo 'End'
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...