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を使用してみましたが、実質的に同じ問題でした。また、別のパケットマネージャーを使用してみても、同じ結果が得られました。

解決策

スクリプト行の末尾にあるバックスラッシュを削除できます。

バックスラッシュは、Bash によって直接解釈される複数行のコマンドを宣言するために使用されます。

しかし、ここ YAML では、表示されるものは取得されるものではありません。複数行は単一行に置き換えられ、バックスラッシュはエスケープ文字である必要がある場合に通常の文字として解釈されます。たとえば、次の YAML は次のとおりです。

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

次の JSON 出力が得られます。

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