как запускать команды docker на удаленной машине через jenkins и S SH? - PullRequest
0 голосов
/ 11 июля 2020

Я новичок в jenkins, и я пытаюсь выполнить команду docker на Ubuntu 18.04 Live Server. Я установил на него docker и смог запустить команду docker через s sh. Теперь мне нужно запустить ту же команду на сервере через Jenkins. Я установил jenkins на моем локальном настольном компьютере с Ubuntu 20.04. Еще у меня на нем установлена ​​docker. Когда я пытаюсь запустить любую команду через S SH от jenkins, она работает, но когда я пытаюсь запустить команду docker (docker -v), она говорит, что

[SSH] выполняется ... bash: строка 1: docker: команда не найдена

Я использую echo $ USER и получаю, что пользователь jenkins пытается запустить команду, но я не установил jenkins на удаленный сервер, и нет имя пользователя jenkins на сервере, поэтому, возможно, он не сможет запустить

Затем я создал пользователя jenkns (sudo useradd -s / sbin / nologin jenkins) на удаленном сервере и добавил его в группу docker (sudo useradd -aG docker jenkins), но он все еще не работает. что я делаю не так! или есть другой лучший способ вместо S SH запустить контейнер docker на удаленном сервере с помощью jenkins, установленного на другом компьютере. или мне нужно установить jenkins на удаленный сервер?

я решил с помощью команды

sudo ln -s /snap/bin/docker /usr/bin/docker

Ответы [ 2 ]

0 голосов
/ 12 июля 2020
sudo ln -s /snap/bin/docker /usr/bin/docker

Эта команда помогла мне решить мою проблему

0 голосов
/ 11 июля 2020

Чтобы jenkins выполнял команды удаленно, вам нужно добавить удаленный хост в конфигурацию jenkins. Go на Manage Jenkins -> Configure System -> SSH remote hosts -> Add.

Добавьте имя хоста или его IP-адрес, порт и учетные данные. Проверьте свои настройки, если все в порядке, вы их пройдете.

Следующим шагом является настройка вашего задания. Для подопытной свиньи используйте работу вольным стилем. В конфигурации задания от go до Build выберите раздел Execute shell script on remote host using ssh. Выберите хост s sh и введите нужную команду.

На удаленном хосте должно быть установлено docker, и пользователь должен быть добавлен в группу docker.

Для задания конвейера вы можете найти примеры здесь

ОБНОВЛЕНИЕ:

Проверьте этот код

node {
  def remote = [:]
  remote.name = 'docker-srv'
  remote.host = '192.168.1.40'
  remote.user = 'vagrant'
  remote.password = 'vagrant'
  remote.allowAnyHosts = true
  stage('Remote SSH') {
    sshCommand remote: remote, command: "ls -lrt"
    sshCommand remote: remote, command: "docker -v"
    sshCommand remote: remote, command: "for i in {1..5}; do echo -n \"Loop \$i \"; date ; sleep 1; done"
  }
}

Результат должен быть как Executing command on docker-srv[192.168.1.40]: docker -v sudo: false Docker version 19.03.9, build 9d988398e7

...