Как использовать Codeception и Gitlab CI (непрерывная интеграция)

В настоящее время я провожу свои приемочные тесты с помощью кода приема вручную. Теперь пришло время сделать следующий шаг.

Я хочу создать конвейер в Gitlab для автоматического запуска приемочных тестов.

Самая первая проблема — это .gitlab-ci.yml, где я действительно не знаю, как это реализовать.

Сделал как описано в этой документации: https://codeception.com/docs/12-непрерывная интеграция

Но я всегда получаю ошибки.

Самая новая ошибка следующая: *error: zip support requires ZLIB. Use --with-zlib-dir=<DIR> to specify prefix where ZLIB include and library are located*

Я пробовал серверные образы из Docker Hub, но ни один из них не увенчался успехом.

Это мой текущий .gitlab-ci.yml:


# Select what we should cache
cache:
  paths:
  - vendor/

services:
    - selenium/standalone-chrome:latest

before_script:

# Install git and unzip (composer will need them)
- apt-get update && apt-get install -qqy git unzip

#zip
- apt-get install -y zlib1g-dev
- apt-get update && apt-get install -y libzip-dev
- docker-php-ext-install zip

# Install composer
- curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Install all project dependencies
- composer install

#install node
- apt-get update && curl -sL https://deb.nodesource.com/setup_8.x | bash - && apt-get install -y build-essential nodejs
- npm init -y 
- npm install -g eslint --unsafe-perm=true --alow-root
- npm config set prefix ~/.local  
- PATH=~/.local/bin/:$PATH
- apt-get update -q -y
- apt-get --yes install libnss3
- apt-get --yes install libgconf-2-4

#install wget
- apt-get --yes install wget

#install gnupg2
- apt-get update && apt-get install -y gnupg2


# Install chrome
# Add key
- curl -sS -L https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
# Add repo
- echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list
- apt-get update -q -y
- apt-get install -y google-chrome-stable

- npm install chromedriver -g
- npm install https://gitlab.com/gitlab-org/gitlab-selenium-server.git -g
# The `&` at the end causes it to run in the background and not block the following commands

- nohup chromedriver --port=4444 --url-base=wd/hub &
- nohup gitlab-selenium-server &


# Test
test:
  script:
  - vendor/bin/codecept run --env chrome


Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
1
0
1 408
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы также пытались установить zlib1g-dev? Этот комментарий может быть полезен — https://github.com/docker-library/php/issues/61#issuecomment-468874705 Но я предлагаю просто начать с добавления apt install -y zlib1g-dev перед установкой расширения php и посмотреть, решит ли это проблему.

Другой вопрос, как я могу использовать npm install, потому что, если я хочу использовать npm install, он говорит, что команда npm не найдена. Могу ли я просто добавить второе изображение (узел), чтобы использовать его?

Panchovilo 19.06.2019 12:30

Вы можете просто запустить apt-get install -y nodejs и у вас должен быть доступен npm

Kārlis Ābele 19.06.2019 12:37

Я лично предпочитаю использовать Gitlab-CI runner оболочки с установленными docker и docker-compose, поэтому у меня есть полный контроль над фактическим экземпляром, на котором я это делаю, но в то же время я могу просто использовать любой образ докера для установки композитора или npm. просто установив мои проекты в контейнер и выполнив необходимые команды. Однако иногда возникают проблемы с разрешениями, поэтому вам необходимо правильно настроить экземпляр. Но в вашем случае вы сможете просто установить nodejs и запустить npm i просто отлично

Kārlis Ābele 19.06.2019 12:39

Я использовал apt-get update && apt-get install -y nodejs, но все еще получаю сообщение об ошибке: команда npm не найдена

Panchovilo 19.06.2019 13:23

Можете ли вы обновить файл gitlab-ci.yml внесенными вами изменениями?

Kārlis Ābele 19.06.2019 13:25

Да, надеюсь, не запутал ^^

Panchovilo 19.06.2019 13:28

Похоже, что в Stretch npm не поставляется с nodejs... Его всегда сложно настроить :D Вы можете сделать это тогда: apt-get update && curl -sL https://deb.nodesource.com/setup_8.x | bash - && apt-get install build-essential nodejs Протестировано с тем же изображением php и сработало. URL-адрес curl зависит от того, какую версию вы хотите установить.

Kārlis Ābele 19.06.2019 13:35

Это сработало для меня, приятель, большое спасибо, единственное, что осталось, это следующая ошибка, которая происходит по адресу: - nohup chromedriver --port=4444 --url-base=wd/hub & - nohup gitlab-selenium-server & Это сообщение об ошибке, которое я получаю nohup: failed to run command 'chromedriver': No such file or directory nohup: failed to run command 'gitlab-selenium-server': No such file or directory

Panchovilo 19.06.2019 14:58

chromedriver отсутствует в вашем $PATH, поэтому его нельзя найти, поскольку вы установили его локально для своего проекта... Вам нужно либо указать полный путь к нему, либо добавить папку bin в $PATH

Kārlis Ābele 19.06.2019 15:07

Я снова обновил свой .yml. Я пытаюсь установить chromedriver глобально, но всегда получаю следующее сообщение об ошибке Cannot find module '/root/.local/lib/node_modules/chromedriver/install.js Но когда я устанавливаю его без -g, он устанавливается без проблем

Panchovilo 24.06.2019 10:35

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