Я пытался построить конвейер для тестирования своих развертываний в 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, и это практически та же проблема, также попробовал использовать другой менеджер пакетов и получил тот же результат.
Чтобы убедиться, что не происходит никаких махинаций с пробелами, я предлагаю попробовать оба варианта: а) сделать всю команду одной строкой, удалив все обратные косые черты, и б) попробовать использовать многострочную строку YAML, начав шаг с - |
, как указано. в yaml-multiline.info
Вы можете избавиться от обратной косой черты в конце строк сценария.
Обратная косая черта используется для объявления многострочных команд, непосредственно интерпретируемых Bash.
Но здесь, в YAML, то, что вы видите, НЕ то, что вы получаете. Многострочные строки преобразуются в одну, а обратные косые черты интерпретируются как обычные символы, тогда как они должны быть escape-символами. Например, следующий YAML:
script:
- apt-get update \
&& apt-get install foo
Будет иметь этот вывод JSON:
{
"script": [
"apt-get update \\ && apt-get install foo"
]
}
Спасибо, так просто, но я трачу выходные на поиск ошибки
Очень странно, учитывая тот факт, что, судя по вашим выводам,
apt-get
определенно существует, потому чтоapt-get update
работал успешно.