name: woo on: push: branches: - '**' tags-ignore: - '*.*' pull_request: env: DB_HOST: 127.0.0.1 DB_USER: root DB_PASS: root DB_NAME: wc_retailcrm_test jobs: test: runs-on: ubuntu-latest strategy: matrix: include: # WordPress 5.3 #PHP 7.1 and 7.4 - php-version: '7.1' wp: '5.3' wc: '5.4.3' coverage: 1 phpunit: 'phpunit:7.5.20' - php-version: '7.1' wp: '5.3' wc: '6.4.0' phpunit: 'phpunit:7.5.20' - php-version: '7.4' wp: '5.3' wc: '5.4.3' phpunit: 'phpunit:7.5.20' - php-version: '7.4' wp: '5.3' wc: '6.4.0' phpunit: 'phpunit:7.5.20' # WordPress 6.0 # PHP 7.1 and 7.4 - php-version: '7.1' wp: '6.0' wc: '5.4.3' phpunit: 'phpunit:7.5.20' - php-version: '7.1' wp: '6.0' wc: '6.4.0' phpunit: 'phpunit:7.5.20' - php-version: '7.4' wp: '6.0' wc: '5.4.3' phpunit: 'phpunit:7.5.20' - php-version: '7.4' wp: '6.0' wc: '6.4.0' phpunit: 'phpunit:7.5.20' services: mysql: image: mysql:5.7 env: MYSQL_ALLOW_EMPTY_PASSWORD: false MYSQL_ROOT_PASSWORD: ${{ env.DB_PASS }} MYSQL_DATABASE: ${{ env.DB_NAME }} ports: - 3306:3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5 steps: - uses: actions/checkout@v2 - name: Setup PHP ${{ matrix.php-version }} uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} tools: composer:2.1.14, ${{ matrix.phpunit }} extensions: gd, mbstring, mysqli, zip, unzip, mcrypt, mysql, pdo_mysql, dom coverage: xdebug - name: Tool versions run: | php --version composer --version phpunit --version - name: Install Polyfills dependency for WP 5.9 and 6.0 if: ${{ matrix.wp }} == '6.0' || ${{ matrix.wp }} == '5.9' run: | composer require --dev yoast/phpunit-polyfills --ignore-platform-reqs - name: Install Woocommerce env: WP_VERSION: ${{ matrix.wp }} WC_VERSION: ${{ matrix.wc }} run: make install - name: Run tests env: WP_VERSION: ${{ matrix.wp }} WC_VERSION: ${{ matrix.wc }} run: make test - name: Coverage env: COVERAGE: ${{ matrix.coverage }} if: env.COVERAGE == 1 run: | make coverage bash <(curl -s https://codecov.io/bash) deploy: needs: ['test'] if: success() && github.event_name == 'push' && github.repository_owner == 'retailcrm' && github.ref == 'refs/heads/master' runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Setup PHP 7.2 uses: shivammathur/setup-php@v2 with: php-version: '7.2' tools: composer:v2 - name: Build release run: | git fetch origin --unshallow --tags export LAST_TAG=`git describe --abbrev=0 --tags` export VERSION=`cat VERSION` export ARCHIVE_NAME=retailcrm-$VERSION.zip export ARCHIVE_PATH="/tmp/$ARCHIVE_NAME" export RELEASE_TAG=v$VERSION export LAST_COMMIT=`git log --oneline --format=%B -n 1 HEAD | head -n 1` echo RELEASE_TAG=$RELEASE_TAG >> $GITHUB_ENV echo LAST_TAG=$LAST_TAG >> $GITHUB_ENV echo LAST_COMMIT=$LAST_COMMIT >> $GITHUB_ENV echo ARCHIVE_PATH=$ARCHIVE_PATH >> $GITHUB_ENV echo ARCHIVE_NAME=$ARCHIVE_NAME >> $GITHUB_ENV make build_archive - name: Create Release id: create_release uses: actions/create-release@v1 if: env.LAST_TAG != env.RELEASE_TAG env: GITHUB_TOKEN: ${{ secrets.TOKEN }} with: tag_name: ${{ env.RELEASE_TAG }} release_name: ${{ env.RELEASE_TAG }} body: ${{ env.LAST_COMMIT }} draft: false prerelease: false - name: Deploy env: SVNREPOURL: ${{ secrets.SVNREPOURL }} USERNAME: ${{ secrets.USERNAME }} PASSWORD: ${{ secrets.PASSWORD }} run: | make svn_clone make svn_push - name: Cleanup if: env.LAST_TAG != env.RELEASE_TAG run: make remove_dir