Скрипт Jenkins для удаления всех контейнеров docker - Windows :( - PullRequest
0 голосов
/ 01 февраля 2020

ниже - строка кода, которую я использую в сценарии конвейера jenkins для удаления всех контейнеров ..... поэтому я могу затем заменить контейнер новой версией

bat 'docker rm $(docker ps -a -q) -f'

Но я получаю ошибку

unknown shorthand flag: 'a' in -a

Команда docker rm $(docker ps -a -q) -f работает нормально в Powershell ......, но при вызове из Jenkins с использованием bat она не срабатывает

Ответы [ 2 ]

0 голосов
/ 01 февраля 2020

Запуск с помощью 'bat' означает, что это команда Windows, поэтому Windows вообще не знает, что такое:

$(docker ps -a -q)

, поскольку это linux (bash / sh) синтаксис!

Вы должны заменить его на что-то вроде этого:

bat '''
  FOR /F "tokens=* USEBACKQ" %%F IN (`docker ps -a -q`) DO (
   SET var=%%F
  )
 docker rm -f %var% 
'''

Или любой трюк Windows, который поместит вывод первой команды docker в и используйте его для удаления контейнера.

0 голосов
/ 01 февраля 2020

Пожалуйста, попробуйте docker rm -f $(docker ps -aq)

или

sh """
  docker rm -f $(docker ps -aq)
  """

Обновление:

stage('Remove Containers') {
      sh 'docker rm -f $(docker ps -aq)'
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...