name: ci on: push: branches: - '**' tags-ignore: - '*.*' pull_request: env: OC_DB_HOSTNAME: 127.0.0.1 OC_DB_USERNAME: root OC_DB_PASSWORD: root OC_DB_DATABASE: tests_opencart OC_DB_DRIVER: mysqli OC_USERNAME: admin OC_PASSWORD: admin OC_EMAIL: test@test.com SERVER_PORT: 80 SERVER_URL: http://localhost jobs: test: runs-on: ubuntu-latest strategy: matrix: include: - php-version: '7.3' test-suite: '3' oc: '3.0.0.0' - php-version: '7.3' test-suite: '3' oc: '3.0.0.2' - php-version: '7.3' test-suite: '3' oc: '3.0.1.0' - php-version: '7.3' test-suite: '3' oc: '3.0.1.1' - php-version: '7.3' test-suite: '3' oc: '3.0.1.2' - php-version: '7.3' test-suite: '3' oc: '3.0.2.0' - php-version: '7.3' test-suite: '3' oc: '3.0.3.0' - php-version: '7.3' test-suite: '3' oc: '3.0.3.1' - php-version: '7.3' test-suite: '3' oc: '3.0.3.2' - php-version: '7.3' test-suite: '3' oc: '3.0.3.3' - php-version: '7.3' test-suite: '3' oc: '3.0.3.4' - php-version: '7.3' test-suite: '3' oc: '3.0.3.5' - php-version: '7.3' test-suite: '3' oc: '3.0.3.6' - php-version: '7.3' test-suite: '3' oc: '3.0.3.7' - php-version: '7.3' test-suite: '3' oc: '3.0.3.8' - php-version: '7.4' test-suite: '3' oc: '3.0.0.0' - php-version: '7.4' test-suite: '3' oc: '3.0.0.2' - php-version: '7.4' test-suite: '3' oc: '3.0.1.0' - php-version: '7.4' test-suite: '3' oc: '3.0.1.1' - php-version: '7.4' test-suite: '3' oc: '3.0.1.2' - php-version: '7.4' test-suite: '3' oc: '3.0.2.0' - php-version: '7.4' test-suite: '3' oc: '3.0.3.0' - php-version: '7.4' test-suite: '3' oc: '3.0.3.1' - php-version: '7.4' test-suite: '3' oc: '3.0.3.2' - php-version: '7.4' test-suite: '3' oc: '3.0.3.3' - php-version: '7.4' test-suite: '3' oc: '3.0.3.4' - php-version: '7.4' test-suite: '3' oc: '3.0.3.5' - php-version: '7.4' test-suite: '3' oc: '3.0.3.6' - php-version: '7.4' test-suite: '3' oc: '3.0.3.7' - php-version: '7.4' test-suite: '3' oc: '3.0.3.8' services: mysql: image: mysql:5.7 env: MYSQL_ALLOW_EMPTY_PASSWORD: false MYSQL_ROOT_PASSWORD: ${{ env.OC_DB_PASSWORD }} MYSQL_DATABASE: ${{ env.OC_DB_DATABASE }} 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 }} coverage: xdebug tools: composer:v1 extensions: gd, mbstring, mysqli, zip, mcrypt, mysql, pdo_mysql, dom - name: Install Opencart env: TEST_SUITE: ${{ matrix.test-suite }} OPENCART: ${{ matrix.oc }} run: make before_script - name: Run tests env: TEST_SUITE: ${{ matrix.test-suite }} OPENCART: ${{ matrix.oc }} run: composer test - name: Coverage env: COVERAGE: ${{ matrix.coverage }} if: env.COVERAGE == 1 run: | make coverage bash <(curl -s https://codecov.io/bash) phpcs: needs: ['test'] 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:v1 - name: Install dependencies run: composer install - name: Check compatibility run: make phpcomp deploy: needs: ['phpcs'] 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:v1 - 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.ocmod.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.GITHUB_TOKEN }} with: tag_name: ${{ env.RELEASE_TAG }} release_name: ${{ env.RELEASE_TAG }} body: ${{ env.LAST_COMMIT }} draft: false prerelease: false - name: Upload Release Asset id: upload-release-asset if: env.LAST_TAG != env.RELEASE_TAG uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ${{ env.ARCHIVE_PATH }} asset_name: ${{ env.ARCHIVE_NAME }} asset_content_type: application/zip - name: Cleanup if: env.LAST_TAG != env.RELEASE_TAG run: make delete_archive