Мне нужна помощь, чтобы справиться с CircleCI.
Проблема, с которой я столкнулся, заключается в том, что я не могу успешно реплицировать требования локальной инфраструктуры в сборку CircleCI.
Например, у меня есть 2 Docker контейнеров. Один из них является приватным (Apache), а другой использует самый последний MySQL образ.
Чтобы избежать DRY и избежать отслеживания как Dockerfile, так и .circleci / config.yaml, я бы в идеале нужно сохранить минимальную пользовательскую конфигурацию CircleCI, чтобы в качестве основного источника использовался Dockerfile.
За последние несколько дней я пробовал много разных подходов, но ни один из них не работает (ie . сборка не завершена - или службы не работают).
Я планирую сделать следующее:
- Загрузить точную копию пользовательских Apache Docker контейнер
- загрузка точной копии MySQL Docker контейнера
- копирование пользовательских файлов из томов в Apache контейнер
- загрузка данных из текущей базы данных в MySQL База данных
- Выполнение тестов
В настоящее время я застрял на первых двух шагах.
Текущий код (который, как я говорил ранее, многократно прерывался в попытка заставить это работать)
# PHP CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-php/ for more details
#
version: 2
jobs:
build:
docker:
- image: skipton/cododigital.co.uk:latest
auth:
username: $DOCKERHUB_USERNAME
password: $DOCKERHUB_PASSWORD
environment:
- WP_TEST_URL: http://localhost
- WP_TEST_USER: test
- WP_TEST_USER_PASS: test
- WP_ENV: ci
- MYSQL_DATABASE: circle_test
- MYSQL_HOST: 127.0.0.1
- DB_HOST: 127.0.0.1
- DB_USER: root
- DB_PASSWORD: ''
- DB_NAME: circle_test
command: apache2-foreground
- image: circleci/mysql:8
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD: 1
steps:
- run:
name: Install Composer
command: |
echo "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKICAgIC91c3IvbG9jYWwvYmluL3BocCAtciAiY29weSgnaHR0cHM6Ly9nZXRjb21wb3Nlci5vcmcvaW5zdGFsbGVyJywgJ2NvbXBvc2VyLXNldHVwLnBocCcpOyIgJiYgXAogICAgL3Vzci9sb2NhbC9iaW4vcGhwIC1yICJjb3B5KCdodHRwczovL2NvbXBvc2VyLmdpdGh1Yi5pby9pbnN0YWxsZXIuc2lnJywgJ2NvbXBvc2VyLWluc3RhbGxlci5zaWcnKTsiICYmIFwKICAgIC91c3IvbG9jYWwvYmluL3BocCAtciAiaWYgKGhhc2hfZmlsZSgnU0hBMzg0JywgJ2NvbXBvc2VyLXNldHVwLnBocCcpID09PSB0cmltKGZpbGVfZ2V0X2NvbnRlbnRzKCdjb21wb3Nlci1pbnN0YWxsZXIuc2lnJykpKSB7IGVjaG8gJ0luc3RhbGxlciB2ZXJpZmllZCc7IH0gZWxzZSB7IGVjaG8gJ0luc3RhbGxlciBjb3JydXB0JzsgdW5saW5rKCdjb21wb3Nlci1zZXR1cC5waHAnKTsgfSBlY2hvIFBIUF9FT0w7IiAmJiBcCiAgICAvdXNyL2xvY2FsL2Jpbi9waHAgY29tcG9zZXItc2V0dXAucGhwICYmIFwKICAgIC91c3IvbG9jYWwvYmluL3BocCAtciAidW5saW5rKCdjb21wb3Nlci1zZXR1cC5waHAnKTsiICYmIFwKICAgIC91c3IvbG9jYWwvYmluL3BocCAtciAidW5saW5rKCdjb21wb3Nlci1pbnN0YWxsZXIuc2lnJyk7IiAmJiBcCiAgICAvdXNyL2xvY2FsL2Jpbi9waHAgLi9jb21wb3Nlci5waGFyIGNsZWFyY2FjaGU=" | base64 --decode > composer.sh && \
chmod a+x composer.sh && \
./composer.sh && \
rm ./composer.sh
chmod a+x composer.phar && \
php composer.phar require --dev phpunit/phpunit-selenium:* facebook/webdriver:dev-master
- run:
name: Install Dependencies
command: |
php composer.phar install
- run:
name: Downloading tunnel binary
command: |
apt-get update
apt-get install -y wget
wget http://downloads.lambdatest.com/tunnel/linux/64bit/LT_Linux.zip
- run:
name: Extracting tunnel binary
command: |
apt-get install -y unzip
unzip LT_Linux.zip
- run:
name: Executing tunnel binary
background: true
command: |
./LT -user $LAMBDATEST_EMAIL -key $LAMBDATEST_KEY
- run:
name: Setup custom environment variables
command: |
echo 'export LT_USERNAME="$LAMBDATEST_USERNAME"' >> $BASH_ENV
- run:
name: Setup custom environment variables
command: |
echo 'export LT_ACCESS_KEY="$LAMBDATEST_ACCESS_KEY"' >> $BASH_ENV
- store_artifacts:
path: /var/www/tests
- store_artifacts:
path: /var/www/html
- run:
name: Run Tests
command: |
sleep 10
php /var/www/tests/HomepageTest.php
Кто-нибудь может дать мне какие-нибудь указатели?
Одна вещь, которую я заметил, - это то, что контейнер MySQL действительно запускается, однако я не вижу аналогичного шага для контейнер Apache.