Bash: apt-get: команда не найдена в конвейере Bitbucket

Я пытался построить конвейер для тестирования своих развертываний в Bitbucket, но у меня постоянно возникает эта проблема.

+ apt-get update && \ apt-get install -y \ fonts-liberation \ libasound2 \ libatk-bridge2.0-0 \ libatk1.0-0 \ libatspi2.0-0 \ libcups2 \ libdbus-1-3 \ libdrm2 \ libgbm1 \ libgtk-3-0 \ libnspr4 \ libnss3 \ libu2f-udev \ libvulkan1 \ libxcomposite1 \ libxdamage1 \ libxfixes3 \ libxkbcommon0 \ libxrandr2 \ xdg-utils && \ rm -rf /var/lib/apt/lists/*
Get:1 http://deb.debian.org/debian bullseye InRelease [116 kB]
Get:2 http://security.debian.org/debian-security bullseye-security InRelease [48.4 kB]
Get:3 http://deb.debian.org/debian bullseye-updates InRelease [44.1 kB]
Get:4 http://security.debian.org/debian-security bullseye-security/main amd64 Packages [271 kB]
Get:5 http://deb.debian.org/debian bullseye/main amd64 Packages [8068 kB]
Get:6 http://deb.debian.org/debian bullseye-updates/main amd64 Packages [18.8 kB]
Fetched 8565 kB in 1s (6690 kB/s)
Reading package lists...
bash:  apt-get: command not found

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

Вот мой yml-файл

image: ruby:3.0.3

pipelines:
  default:
    - step:
        name: Run minitests
        script:
          # Dependencies          
          - apt-get update && \
            apt-get install -y \
                fonts-liberation \
                libasound2 \
                libatk-bridge2.0-0 \
                libatk1.0-0 \
                libatspi2.0-0 \
                libcups2 \
                libdbus-1-3 \
                libdrm2 \
                libgbm1 \
                libgtk-3-0 \
                libnspr4 \
                libnss3 \
                libu2f-udev \
                libvulkan1 \
                libxcomposite1 \
                libxdamage1 \
                libxfixes3 \
                libxkbcommon0 \
                libxrandr2 \
                xdg-utils && \
              rm -rf /var/lib/apt/lists/*
          # Configure chrome and chromedriver          
          - dpkg -i driver/117.0.5938.132/google-chrome.deb
          - export CHROMEDRIVER_PATH=driver/117.0.5938.132/
          - export PATH = "${CHROMEDRIVER_PATH}:${PATH}"
          - export BROWSER=:chrome
          - export LOAD=eager
          - gem install bundler
          - bundle install
          - rake runner:run_tests

Любая помощь приветствуется

Я попробовал использовать sudo, и это практически та же проблема, также попробовал использовать другой менеджер пакетов и получил тот же результат.

Очень странно, учитывая тот факт, что, судя по вашим выводам, apt-get определенно существует, потому что apt-get update работал успешно.

engineersmnky 15.04.2024 21:02

Чтобы убедиться, что не происходит никаких махинаций с пробелами, я предлагаю попробовать оба варианта: а) сделать всю команду одной строкой, удалив все обратные косые черты, и б) попробовать использовать многострочную строку YAML, начав шаг с - |, как указано. в yaml-multiline.info

WillemToorenburgh 15.04.2024 21:08
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
1
2
126
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете избавиться от обратной косой черты в конце строк сценария.

Обратная косая черта используется для объявления многострочных команд, непосредственно интерпретируемых Bash.

Но здесь, в YAML, то, что вы видите, НЕ то, что вы получаете. Многострочные строки преобразуются в одну, а обратные косые черты интерпретируются как обычные символы, тогда как они должны быть escape-символами. Например, следующий YAML:

script:
    - apt-get update \
    && apt-get install foo

Будет иметь этот вывод JSON:

{
  "script": [
    "apt-get update \\ && apt-get install foo"
  ]
}

Спасибо, так просто, но я трачу выходные на поиск ошибки

Cesar Chavana 17.04.2024 07:42

Другие вопросы по теме