Merge pull request #58 from iyzoer/master

Travis build matrix
This commit is contained in:
Alex Lushpai 2020-03-05 12:13:30 +03:00 committed by GitHub
commit c9dc7acc6d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 223 additions and 129 deletions

30
.docker/Dockerfile Normal file
View File

@ -0,0 +1,30 @@
FROM php:7.1-fpm
RUN apt-get update
RUN apt-get install -y zlib1g-dev libpq-dev git libicu-dev libxml2-dev libpng-dev libjpeg-dev libmcrypt-dev libxslt-dev libfreetype6-dev \
&& docker-php-ext-configure intl \
&& docker-php-ext-install intl \
&& docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
&& docker-php-ext-install mysqli pdo pdo_mysql \
&& docker-php-ext-install zip \
&& docker-php-ext-install xml \
&& docker-php-ext-configure gd --with-png-dir=/usr/local/ --with-jpeg-dir=/usr/local/ --with-freetype-dir=/usr/local/ \
&& docker-php-ext-install gd \
&& docker-php-ext-install mcrypt \
&& docker-php-ext-install bcmath \
&& docker-php-ext-install soap \
&& docker-php-ext-install xsl \
&& docker-php-ext-install mbstring
RUN apt-get install -y wget
RUN wget -O /usr/bin/phpunit https://phar.phpunit.de/phpunit-7.phar && chmod +x /usr/bin/phpunit
RUN curl --insecure https://getcomposer.org/composer.phar -o /usr/bin/composer && chmod +x /usr/bin/composer
# Set timezone
RUN rm /etc/localtime
RUN ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
RUN "date"
WORKDIR /code

View File

@ -1,40 +1,106 @@
os: linux
dist: trusty
language: php
if: tag IS blank
addons:
apt:
packages:
- apache2
- libapache2-mod-fastcgi
sudo: required
dist: trusty
before_install:
- export LAST_TAG=`git describe --abbrev=0 --tags`
- export CURRENT_VERSION=v`cat VERSION`
php:
- 7.1
- 7.2
before_script: make before_script
matrix:
script: make test
stages:
- test
- deploy
jobs:
include:
- php: 5.6
env: BRANCH=1.6.1.x
- php: 7.0
env: BRANCH=1.6.1.x
- php: 7.1
env: BRANCH=1.6.1.x
- php: 5.6
env: BRANCH=1.6.1.18 COMPOSER_IN_TESTS=1
- php: 7.0
env: BRANCH=1.6.1.18 COMPOSER_IN_TESTS=1
- php: 7.1
env: BRANCH=1.6.1.18 COMPOSER_IN_TESTS=1
before_script:
- bash tests/bin/clone_prestashop.sh
- bash tests/bin/setup-apache.sh
- bash tests/bin/before_script.sh
- php: 5.6
env: BRANCH=1.6.1.19 COMPOSER_IN_TESTS=1
- php: 7.0
env: BRANCH=1.6.1.19 COMPOSER_IN_TESTS=1
- php: 7.1
env: BRANCH=1.6.1.19 COMPOSER_IN_TESTS=1
script:
- bash tests/bin/script.sh
- php: 5.6
env: BRANCH=1.6.1.20 COMPOSER_IN_TESTS=1
- php: 7.0
env: BRANCH=1.6.1.20 COMPOSER_IN_TESTS=1
- php: 7.1
env: BRANCH=1.6.1.20 COMPOSER_IN_TESTS=1
#deploy:
# skip_cleanup: true
# provider: script
# script: make
# on:
# php: 7.2
# branch: master
# condition: "$DEPLOY = true"
- php: 5.6
env: BRANCH=1.6.1.21 COMPOSER_IN_TESTS=1
- php: 7.0
env: BRANCH=1.6.1.21 COMPOSER_IN_TESTS=1
- php: 7.1
env: BRANCH=1.6.1.21 COMPOSER_IN_TESTS=1
- php: 5.6
env: BRANCH=1.6.1.22 COMPOSER_IN_TESTS=1
- php: 7.0
env: BRANCH=1.6.1.22 COMPOSER_IN_TESTS=1
- php: 7.1
env: BRANCH=1.6.1.22 COMPOSER_IN_TESTS=1
- php: 5.6
env: BRANCH=1.6.1.23 COMPOSER_IN_TESTS=1
- php: 7.0
env: BRANCH=1.6.1.23 COMPOSER_IN_TESTS=1
- php: 7.1
env: BRANCH=1.6.1.23 COMPOSER_IN_TESTS=1
- php: 5.6
env: BRANCH=1.6.1.24 COMPOSER_IN_TESTS=1
- php: 7.0
env: BRANCH=1.6.1.24 COMPOSER_IN_TESTS=1
- php: 7.1
env: BRANCH=1.6.1.24 COMPOSER_IN_TESTS=1
- php: 7.1
env: BRANCH=1.7.4.0
- php: 7.2
env: BRANCH=1.7.4.0
- php: 7.1
env: BRANCH=1.7.5.x
- php: 7.2
env: BRANCH=1.7.5.x
after_success: bash <(curl -s https://codecov.io/bash)
- stage: deploy
before_script: skip
script: make build_archive
before_deploy:
- export VERSION=`cat VERSION`
- export ARCHIVE_NAME=/tmp/retailcrm-$VERSION.zip
- git config --local user.name "retailCRM"
- git config --local user.email "support@retailcrm.ru"
- export TRAVIS_TAG=v$VERSION
- git tag $TRAVIS_TAG
deploy:
provider: releases
token: $GITHUB_OAUTH_TOKEN
cleanup: false
file: $ARCHIVE_NAME
on:
condition: "$LAST_TAG != $CURRENT_VERSION"
if: branch = master AND type = push AND fork = false
after_deploy: make delete_archive

View File

@ -1,17 +1,57 @@
ROOT_DIR=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
PRESTASHOP_DIR=$(ROOT_DIR)/../PrestaShop
FILE = $(TRAVIS_BUILD_DIR)/VERSION
VERSION = `cat $(FILE)`
ARCHIVE_NAME = '/tmp/retailcrm-'$(VERSION)'.zip'
all: build_archive send_to_ftp delete_archive
.PHONY: build_archive delete_archive
build_archive:
zip -r $(ARCHIVE_NAME) ./retailcrm/*
zip -r /tmp/retailcrm.zip ./retailcrm/*
send_to_ftp:
curl -T $(ARCHIVE_NAME) -u $(FTP_USER):$(FTP_PASSWORD) ftp://$(FTP_HOST)
curl -T /tmp/retailcrm.zip -u $(FTP_USER):$(FTP_PASSWORD) ftp://$(FTP_HOST)
delete_archive:
rm -f $(ARCHIVE_NAME)
rm -f /tmp/retailcrm.zip
composer: clone_prestashop
@cd $(PRESTASHOP_DIR) && git checkout $(BRANCH)
ifeq ($(COMPOSER_IN_TESTS),1)
@cd $(PRESTASHOP_DIR)/tests && composer install
else
@cd $(PRESTASHOP_DIR) && composer install --prefer-dist --no-interaction --no-progress
endif
clone_prestashop:
cd $(ROOT_DIR)/../ && git clone https://github.com/PrestaShop/PrestaShop
setup_apache:
bash $(PRESTASHOP_DIR)/travis-scripts/setup-php-fpm.sh
echo "* Preparing Apache ..."
sudo a2enmod rewrite actions fastcgi alias
# Use default config
sudo cp -f $(PRESTASHOP_DIR)/tests/travis-ci-apache-vhost /etc/apache2/sites-available/000-default.conf
sudo sed -e "s?%PRESTASHOP_DIR%?$(pwd)?g" --in-place /etc/apache2/sites-available/000-default.conf
sudo chmod 777 -R $(HOME)
# Starting Apache
sudo service apache2 restart
before_script: composer
ifneq ($(COMPOSER_IN_TESTS),1)
ifeq ("$(wildcard $(PRESTASHOP_DIR)/tests/parameters.yml.travis)","")
cd $(PRESTASHOP_DIR) && cp tests/parameters.yml.travis app/config/parameters.yml
else
cd $(PRESTASHOP_DIR) && cp tests-legacy/parameters.yml.travis app/config/parameters.yml
endif
cd $(PRESTASHOP_DIR) && bash travis-scripts/install-prestashop
else
cd $(PRESTASHOP_DIR) && bash travis-scripts/install-prestashop.sh
endif
test:
ifeq ($(COMPOSER_IN_TESTS),1)
phpunit -c phpunit.xml.dist
else
cd $(PRESTASHOP_DIR) && composer run-script create-test-db --timeout=0
cd $(PRESTASHOP_DIR) && php vendor/bin/phpunit -c $(ROOT_DIR)/phpunit.xml.dist
endif

25
docker-compose.yml Normal file
View File

@ -0,0 +1,25 @@
version: '3'
services:
app:
build:
context: ./.docker
volumes:
- ./:/code
links:
- "mysql"
depends_on:
- mysql
environment:
- DB_NAME=presta
- DB_USER=presta
- DB_PASS=presta
- DB_HOST=presta
mysql:
image: mysql:5.7
environment:
- MYSQL_DATABASE=presta
- MYSQL_USER=presta
- MYSQL_PASSWORD=presta
- MYSQL_ROOT_PASSWORD=root
ports:
- "3306:3306"

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
bootstrap="tests/phpunit/bootstrap.php"
bootstrap="tests/bootstrap.php"
backupGlobals="false"
colors="true"
convertErrorsToExceptions="true"
@ -12,16 +12,16 @@
syntaxCheck="true"
>
<testsuites>
<testsuite name="Retailcrm PrestaShop Test Suite">
<directory>tests/phpunit</directory>
<testsuite name="PrestaShop retailCRM Test Suite">
<directory suffix="Test.php">tests</directory>
<exclude>tests/helpers</exclude>
</testsuite>
</testsuites>
<filter>
<whitelist addUncoveredFilesFromWhitelist="true">
<whitelist>
<directory suffix=".php">retailcrm</directory>
<exclude>
<directory suffix=".php">retailcrm/translations</directory>
<directory suffix=".php">retailcrm/job</directory>
<file>bootstrap.php</file>
<file>index.php</file>
<file>logo.gif</file>
@ -30,4 +30,7 @@
</exclude>
</whitelist>
</filter>
<logging>
<log type="coverage-clover" target="coverage.xml"/>
</logging>
</phpunit>

View File

@ -1,21 +0,0 @@
#!/usr/bin/env bash
if [ -z $TRAVIS_BUILD_DIR ]; then
exit 0;
fi
PRESTASHOP_DIR=$TRAVIS_BUILD_DIR/../PrestaShop
cd $PRESTASHOP_DIR
if [ -z $BRANCH ]; then
if [ -f "tests/parameters.yml.travis" ]; then
cp tests/parameters.yml.travis app/config/parameters.yml
else
cp tests-legacy/parameters.yml.travis app/config/parameters.yml
fi
bash travis-scripts/install-prestashop
else
bash travis-scripts/install-prestashop.sh
fi

View File

@ -1,19 +0,0 @@
#!/usr/bin/env bash
if [ -z $TRAVIS_BUILD_DIR ]; then
exit 0;
fi
PRESTASHOP_DIR=$TRAVIS_BUILD_DIR/../PrestaShop
cd ..
git clone https://github.com/PrestaShop/PrestaShop
cd PrestaShop
if ! [ -z $BRANCH ]; then
git checkout $BRANCH;
cd tests
composer install
else
composer install --prefer-dist --no-interaction --no-progress
fi

View File

@ -1,15 +0,0 @@
#!/usr/bin/env bash
if [ -z $TRAVIS_BUILD_DIR ]; then
exit 0;
fi
PRESTASHOP_DIR=$TRAVIS_BUILD_DIR/../PrestaShop
if ! [ -z $BRANCH ]; then
phpunit
else
cd $PRESTASHOP_DIR
composer run-script create-test-db --timeout=0
php ../PrestaShop/vendor/bin/phpunit -c $TRAVIS_BUILD_DIR/phpunit.xml.dist
fi

View File

@ -1,19 +0,0 @@
#!/bin/bash
PRESTASHOP_DIR=$TRAVIS_BUILD_DIR/../PrestaShop
cd $PRESTASHOP_DIR
bash travis-scripts/setup-php-fpm.sh
echo "* Preparing Apache ...";
sudo a2enmod rewrite actions fastcgi alias
# Use default config
sudo cp -f tests/travis-ci-apache-vhost /etc/apache2/sites-available/000-default.conf
sudo sed -e "s?%PRESTASHOP_DIR%?$(pwd)?g" --in-place /etc/apache2/sites-available/000-default.conf
sudo chmod 777 -R $HOME
# Starting Apache
sudo service apache2 restart

18
tests/bootstrap.php Normal file
View File

@ -0,0 +1,18 @@
<?php
if (file_exists(__DIR__ . '/../../PrestaShop/tests-legacy')) {
require_once __DIR__ . '/../../PrestaShop/tests-legacy/bootstrap.php';
} else {
require_once __DIR__ . '/../../PrestaShop/tests/bootstrap.php';
}
require_once __DIR__ . '/../../PrestaShop/config/config.inc.php';
require_once __DIR__ . '/../../PrestaShop/config/defines_uri.inc.php';
require_once __DIR__ . '/../retailcrm/bootstrap.php';
require_once __DIR__ . '/../retailcrm/retailcrm.php';
require_once __DIR__ . '/../../PrestaShop/init.php';
require_once __DIR__ . '/helpers/RetailcrmTestCase.php';
require_once __DIR__ . '/helpers/RetailcrmTestHelper.php';
$module = new RetailCRM();
$module->install();

View File

@ -1,5 +1,9 @@
<?php
if (class_exists('LegacyTests\Unit\ContextMocker')) {
class_alias('LegacyTests\Unit\ContextMocker', 'Tests\Unit\ContextMocker');
}
abstract class RetailcrmTestCase extends \PHPUnit\Framework\TestCase
{
protected $contextMock;
@ -9,7 +13,7 @@ abstract class RetailcrmTestCase extends \PHPUnit\Framework\TestCase
parent::setUp();
if (version_compare(_PS_VERSION_, '1.7', '>')) {
$contextMocker = new \LegacyTests\Unit\ContextMocker();
$contextMocker = new \Tests\Unit\ContextMocker();
$this->contextMock = $contextMocker->mockContext();
}
}

View File

@ -1,18 +0,0 @@
<?php
if (\file_exists(__DIR__ . '/../../../PrestaShop/tests-legacy')) {
require_once __DIR__ . '/../../../PrestaShop/tests-legacy/bootstrap.php';
} else {
require_once __DIR__ . '/../../../PrestaShop/tests/bootstrap.php';
}
require_once dirname(__DIR__) . '../../../PrestaShop/config/config.inc.php';
require_once dirname(__DIR__) . '../../../PrestaShop/config/defines_uri.inc.php';
require_once dirname(__DIR__) . '../../retailcrm/bootstrap.php';
require_once __DIR__ . '/../../retailcrm/retailcrm.php';
require_once __DIR__ . '/../helpers/RetailcrmTestCase.php';
require_once __DIR__ . '/../helpers/RetailcrmTestHelper.php';
require_once dirname(__DIR__) . '../../../PrestaShop/init.php';
$module = new RetailCRM();
$module->install();