before_script: # set stack isolation - export ISOLATION=buildpipeline${CI_PIPELINE_ID}${CI_BUILD_NAME} - export COMPOSE_PROJECT_NAME=${ISOLATION} - export TUPLE_C=$(expr ${CI_BUILD_ID} % 99) - echo ${TUPLE_C} # run docker-compose commands from tests environment - cd tests - cp .env-dist .env after_script: - export ISOLATION=buildpipeline${CI_PIPELINE_ID}${CI_BUILD_NAME} - export COMPOSE_PROJECT_NAME=${ISOLATION} # run docker-compose commands from tests environment - cd tests - cp .env-dist .env - docker-compose down -v --remove-orphans - docker ps -f name=${ISOLATION} stages: - travis - test - cleanup test: stage: test only: - tests/base - tests/all script: - docker-compose up --build -d - docker-compose run --rm php vendor/bin/phpunit -v --exclude caching,db,data --log-junit tests/_junit/test.xml caching: stage: test only: - tests/caching - tests/all script: - export COMPOSE_FILE=docker-compose.yml:docker-compose.${CI_BUILD_NAME}.yml - docker-compose up --build -d - docker-compose run --rm php vendor/bin/phpunit -v --group caching --exclude db db: stage: test only: - tests/mysql - tests/all script: - docker-compose up --build -d - docker-compose run --rm php vendor/bin/phpunit -v --group db --exclude caching,mysql,pgsql,mssql,cubrid - docker-compose down -v --remove-orphans mysql: stage: test only: - tests/mysql - tests/all script: - export COMPOSE_FILE=docker-compose.yml:docker-compose.${CI_BUILD_NAME}.yml - docker-compose up --build -d # wait for db (retry X times) - docker-compose run --rm php bash -c "while ! curl mysql:3306; do ((c++)) && ((c==30)) && break; sleep 2; done" - docker-compose run --rm php vendor/bin/phpunit -v --group mysql - docker-compose down -v --remove-orphans pgsql: stage: test only: - tests/pgsql - tests/all script: - export COMPOSE_FILE=docker-compose.yml:docker-compose.${CI_BUILD_NAME}.yml - docker-compose up --build -d # wait for db (retry X times) - docker-compose run --rm php bash -c 'while [ true ]; do curl postgres:5432; if [ $? == 52 ]; then break; fi; ((c++)) && ((c==25)) && break; sleep 2; done' - docker-compose run --rm php vendor/bin/phpunit -v --group pgsql - docker-compose down -v --remove-orphans cubrid: stage: test only: - tests/cubrid - tests/all script: - cd cubrid - docker-compose up --build -d # wait for db (retry X times) - docker-compose run --rm php bash -c 'while [ true ]; do curl cubrid:1523; if [ $? == 56 ]; then break; fi; ((c++)) && ((c==20)) && break; sleep 3; done' - sleep 5 - docker-compose run --rm php /project/vendor/bin/phpunit -v --group cubrid - docker-compose down -v --remove-orphans mssql: stage: test only: - tests/mssql - tests/all script: - cd mssql - docker-compose up --build -d # wait for db (retry X times) - docker-compose run --rm php bash -c 'while [ true ]; do curl mssql:1433; if [ $? == 52 ]; then break; fi; ((c++)) && ((c==15)) && break; sleep 5; done' - sleep 3 # Note: Password has to be the last parameter - docker-compose run --rm sqlcmd sh -c 'sqlcmd -S mssql -U sa -Q "CREATE DATABASE yii2test" -P Microsoft-12345' - docker-compose run --rm php vendor/bin/phpunit -v --group mssql - docker-compose down -v --remove-orphans travis: stage: travis only: - travis script: - export COMPOSE_FILE=docker-compose.yml:docker-compose.mysql.yml:docker-compose.pgsql.yml - docker-compose up --build -d # TODO: retry/wait for db - sleep 10 - docker-compose run --rm php vendor/bin/phpunit -v --exclude mssql,cubrid,oci,wincache,xcache,zenddata,cubrid - docker-compose down -v --remove-orphans # temporary cleanup stage cleanup: stage: cleanup when: always script: - docker-compose down -v --remove-orphans - export COMPOSE_PROJECT_NAME=${ISOLATION}caching - docker-compose down -v --remove-orphans - export COMPOSE_PROJECT_NAME=${ISOLATION}db - docker-compose down -v --remove-orphans - export COMPOSE_PROJECT_NAME=${ISOLATION}mysql - docker-compose down -v --remove-orphans - export COMPOSE_PROJECT_NAME=${ISOLATION}pgsql - docker-compose down -v --remove-orphans - export COMPOSE_PROJECT_NAME=${ISOLATION}travis - docker-compose down -v --remove-orphans - pushd mssql - export COMPOSE_PROJECT_NAME=${ISOLATION}mssql - docker-compose down -v --remove-orphans - popd - pushd cubrid - export COMPOSE_PROJECT_NAME=${ISOLATION}cubrid - docker-compose down -v --remove-orphans - popd