TL; DR: кто-нибудь знает, как создать действительный образ докера stencil.js для запуска сборки и тестирования трафарета?
Полная форма:
Для запуска тестов stencil.js e2e в Google Cloud Build вам понадобится настраиваемый шаг сборки в виде образа докера.
Вот пример файла Docker:
# THESE STEPS GET STENCIL BUILD WORKING & SHOULD HAVE GOT TESTING WORKING
FROM node:10-jessie-slim
WORKDIR /
RUN npm init stencil app stencil
WORKDIR /stencil
COPY package*.json ./
RUN npm install
WORKDIR /stencil/node_modules/puppeteer
RUN npm install
WORKDIR /stencil
# STEPS ADDED BASED ON https://github.com/puppeteer/puppeteer/blob/master/docs/troubleshooting.md#running-puppeteer-in-docker
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates curl wget && rm -rf /var/lib/apt/lists/*
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
&& sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
&& apt-get update \
&& apt-get install -y google-chrome-unstable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf \
--no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
RUN npm i puppeteer \
# Add user so we don't need --no-sandbox.
# same layer as npm install to keep re-chowned files from using up several hundred MBs more space
&& groupadd -r pptruser && useradd -r -g pptruser -G audio,video pptruser \
&& mkdir -p /stencil/home/pptruser/Downloads \
&& chown -R pptruser:pptruser /stencil/home/pptruser \
&& chown -R pptruser:pptruser /stencil/node_modules
ENTRYPOINT ["npm"]
Теперь вы вставляете это в файл cloud build.yaml:
steps:
#1 Build stencil project
- name: 'gcr.io/$PROJECT_ID/stencil'
args: ['run','build']
#2 Test stencil project
- name: 'gcr.io/$PROJECT_ID/stencil'
args: ['test']
В этом файле сборки работает шаг №1, проверяющий установку трафарета. Однако на шаге 2 появляется сообщение об ошибке:
[ОШИБКА] Версия Chromium не загружена. Запустите «npm install» или «yarn Step # 2: install». Ошибка: версия Chromium не загружена. Выполните "npm Step # 2: install" или "yarn install" в Launcher.launch Step # 2: (/workspace/node_modules/puppeteer/lib/Launcher.js:120:15)
Вышеупомянутая ошибка связана с тем, что кукловод не находит хром (даже если установлена локальная версия), и я уже запустил установку npm на кукловод и подтвердил, что локальный хром установлен. Однако документация по кукловоду делает упомянуть, что запуск кукловода в Docker сложен и дает решение, но их решение предназначено для контейнера докеров, предназначенного только для Puppeteer.
Кто-нибудь знает, как я могу создать действительный образ докера stencil.js с действующей настройкой кукловода?