From e31522f310e7bc19bc4a15bd04e12f513423b59f Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Fri, 27 Aug 2021 22:28:47 +0200 Subject: [PATCH] [ticket/690] Add github actions workflows file B3P-690 --- .github/workflows/tests.yml | 414 ++++++++++++++++++++++++++++++++++++ 1 file changed, 414 insertions(+) create mode 100644 .github/workflows/tests.yml diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 00000000..e1e35f72 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,414 @@ +name: Tests + +env: + EXTNAME: board3/portal # Your extension vendor/package name + SNIFF: 1 # Run code sniffer on your code? 1 or 0 + IMAGE_ICC: 0 # Run icc profile sniffer on your images? 1 or 0 + EPV: 1 # Run EPV (Extension Pre Validator) on your code? 1 or 0 + EXECUTABLE_FILES: 1 # Run check for executable files? 1 or 0 + PHPBB_BRANCH: 3.3.x # The phpBB branch to run tests on + +on: + push: + branches: # Run tests when commits are pushed to these branches in your repo + - master + pull_request: # Run tests when pull requests are made on these branches in your repo + branches: + - master + +jobs: + # START Basic Checks Job (EPV, code sniffer, images check, etc.) + basic-checks: + runs-on: ubuntu-18.04 + strategy: + matrix: + include: + - php: '7.1' + db: "none" + NOTESTS: 1 + + name: PHP ${{ matrix.php }} - ${{ matrix.db }} + + steps: + - name: Checkout phpBB + uses: actions/checkout@v2 + with: + repository: phpbb/phpbb + ref: ${{ env.PHPBB_BRANCH }} + path: phpBB3 + + - name: Checkout extension + uses: actions/checkout@v2 + with: + path: phpBB3/phpBB/ext/${{ env.EXTNAME }} + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, mysqli, sqlite, pdo_sqlite, intl, gd, exif, iconv, sqlsrv, pdo_sqlsrv, ldap + coverage: none + + - name: Setup environment for phpBB + env: + DB: ${{ matrix.db }} + PHP_VERSION: ${{ matrix.php }} + NOTESTS: '1' + run: .github/setup-phpbb.sh $DB $PHP_VERSION $NOTESTS + working-directory: ./phpBB3 + + - name: Setup EPV + if: ${{ env.EPV != 0 }} + run: composer require phpbb/epv:dev-master --dev --no-interaction --ignore-platform-reqs + working-directory: ./phpBB3/phpBB + + - name: Run code sniffer + if: ${{ env.SNIFF != 0 }} + env: + NOTESTS: '1' + run: .github/ext-sniff.sh $EXTNAME $NOTESTS + working-directory: ./phpBB3 + + - name: Check image ICC profiles + if: ${{ env.IMAGE_ICC != 0 }} + run: .github/check-image-icc-profiles.sh + working-directory: ./phpBB3 + + - name: Check executable files + if: ${{ env.EXECUTABLE_FILES != 0 }} + run: .github/ext-check-executable-files.sh ./ $EXTNAME + working-directory: ./phpBB3 + + - name: Run EPV + if: ${{ env.EPV != 0 }} + run: phpBB/vendor/bin/EPV.php run --dir="phpBB/ext/$EXTNAME/" + working-directory: ./phpBB3 + # END Basic Checks Job + + # START MySQL and MariaDB Job + mysql-tests: + runs-on: ubuntu-18.04 + strategy: + matrix: + include: + - php: '7.1' + db: "mariadb:10.1" + - php: '7.1' + db: "mariadb:10.2" + - php: '7.1' + db: "mariadb:10.3" + - php: '7.1' + db: "mariadb:10.4" + - php: '7.1' + db: "mariadb:10.5" + - php: '7.1' + db: "mysql:5.6" + db_alias: "MyISAM Tests" + MYISAM: 1 + - php: '7.1' + db: "mysql:5.6" + - php: '7.1' + db: "mysql:5.7" + - php: '7.2' + db: "mysql:5.7" + - php: '7.3' + db: "mysql:5.7" + - php: '7.4' + db: "mysql:5.7" + - php: '7.4' + db: "mysql:8.0" + - php: '8.0' + db: "mysql:5.7" + - php: '8.1' + db: "mysql:5.7" + + name: PHP ${{ matrix.php }} - ${{ matrix.db_alias != '' && matrix.db_alias || matrix.db }} + + services: + mysql: + image: ${{ matrix.db }} + env: + MYSQL_ALLOW_EMPTY_PASSWORD: yes + MYSQL_DATABASE: phpbb_tests + ports: + - 3306:3306 + options: >- + --health-cmd="mysqladmin ping" + --health-interval=10s + --health-timeout=5s + --health-retries=3 + + redis: + image: redis + options: >- + --health-cmd "redis-cli ping" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 6379:6379 + + steps: + - name: Checkout phpBB + uses: actions/checkout@v2 + with: + repository: phpbb/phpbb + ref: ${{ env.PHPBB_BRANCH }} + path: phpBB3 + + - name: Checkout extension + uses: actions/checkout@v2 + with: + path: phpBB3/phpBB/ext/${{ env.EXTNAME }} + + - id: database-type + env: + MATRIX_DB: ${{ matrix.db }} + run: | + db=$(echo "${MATRIX_DB%%:*}") + echo "::set-output name=db::$db" + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, mysqli, sqlite, pdo_sqlite, intl, gd, exif, iconv, sqlsrv, pdo_sqlsrv, ldap + coverage: none + + - name: Setup environment for phpBB + env: + DB: ${{steps.database-type.outputs.db}} + PHP_VERSION: ${{ matrix.php }} + NOTESTS: '0' + run: .github/setup-phpbb.sh $DB $PHP_VERSION ${NOTESTS:-0} + working-directory: ./phpBB3 + + - name: Setup Extension composer dependencies + run: composer install + working-directory: phpBB3/phpBB/ext/${{ env.EXTNAME }} + + - name: Setup database + env: + DB: ${{steps.database-type.outputs.db}} + MYISAM: ${{ matrix.MYISAM != 1 && '0' || '1' }} + run: .github/setup-database.sh $DB $MYISAM + working-directory: ./phpBB3 + + - name: Setup PHPUnit files + run: mkdir -p phpBB/ext/$EXTNAME/.github && cp .github/phpunit* $_ + working-directory: ./phpBB3 + + - name: Run unit tests + env: + DB: ${{steps.database-type.outputs.db}} + run: phpBB/vendor/bin/phpunit --configuration phpBB/ext/$EXTNAME/.github/phpunit-$DB-github.xml --bootstrap ./tests/bootstrap.php + working-directory: ./phpBB3 + # END MySQL and MariaDB Job + + # START PostgreSQL Job + postgres-tests: + runs-on: ubuntu-18.04 + strategy: + matrix: + include: + - php: '7.1' + db: "postgres:9.5" + - php: '7.1' + db: "postgres:9.6" + - php: '7.1' + db: "postgres:10" + - php: '7.1' + db: "postgres:11" + - php: '7.1' + db: "postgres:12" + - php: '7.1' + db: "postgres:13" + + name: PHP ${{ matrix.php }} - ${{ matrix.db }} + + services: + postgres: + image: ${{ matrix.db != 'postgres:9.5' && matrix.db != 'postgres:9.6' && matrix.db != 'postgres:10' && matrix.db != 'postgres:11' && matrix.db != 'postgres:12' && matrix.db != 'postgres:13' && 'postgres:10' || matrix.db }} + env: + POSTGRES_HOST: localhost + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + ports: + - 5432:5432 + options: >- + -v /var/run/postgresql:/var/run/postgresql + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + + redis: + image: redis + options: >- + --health-cmd "redis-cli ping" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 6379:6379 + + steps: + - name: Checkout phpBB + uses: actions/checkout@v2 + with: + repository: phpbb/phpbb + ref: ${{ env.PHPBB_BRANCH }} + path: phpBB3 + + - name: Checkout extension + uses: actions/checkout@v2 + with: + path: phpBB3/phpBB/ext/${{ env.EXTNAME }} + + - id: database-type + env: + MATRIX_DB: ${{ matrix.db }} + run: | + db=$(echo "${MATRIX_DB%%:*}") + echo "::set-output name=db::$db" + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, mysqli, sqlite, pdo_sqlite, intl, gd, exif, iconv, sqlsrv, pdo_sqlsrv, ldap + coverage: none + + - name: Setup environment for phpBB + env: + DB: ${{steps.database-type.outputs.db}} + PHP_VERSION: ${{ matrix.php }} + NOTESTS: '0' + run: .github/setup-phpbb.sh $DB $PHP_VERSION ${NOTESTS:-0} + working-directory: ./phpBB3 + + - name: Setup Extension composer dependencies + run: composer install + working-directory: phpBB3/phpBB/ext/${{ env.EXTNAME }} + + - name: Setup database + env: + DB: ${{steps.database-type.outputs.db}} + MYISAM: '0' + run: .github/setup-database.sh $DB $MYISAM + working-directory: ./phpBB3 + + - name: Setup PHPUnit files + run: mkdir -p phpBB/ext/$EXTNAME/.github && cp .github/phpunit* $_ + working-directory: ./phpBB3 + + - name: Run unit tests + env: + DB: ${{steps.database-type.outputs.db}} + run: phpBB/vendor/bin/phpunit --configuration phpBB/ext/$EXTNAME/.github/phpunit-$DB-github.xml --bootstrap ./tests/bootstrap.php + working-directory: ./phpBB3 + # END PostgreSQL Job + + # START Other Tests Job (SQLite 3 and mssql) + other-tests: + runs-on: ubuntu-18.04 + strategy: + matrix: + include: + - php: '7.1' + db: "sqlite3" + - php: '7.2' + db: "mcr.microsoft.com/mssql/server:2017-latest" + db_alias: 'MSSQL 2017' + - php: '7.2' + db: "mcr.microsoft.com/mssql/server:2019-latest" + db_alias: 'MSSQL 2019' + + name: PHP ${{ matrix.php }} - ${{ matrix.db_alias != '' && matrix.db_alias || matrix.db }} + + services: + mssql: + image: ${{ matrix.db != 'mcr.microsoft.com/mssql/server:2017-latest' && matrix.db != 'mcr.microsoft.com/mssql/server:2019-latest' && 'mcr.microsoft.com/mssql/server:2017-latest' || matrix.db }} + env: + SA_PASSWORD: "Pssw0rd_12" + ACCEPT_EULA: "y" + ports: + - 1433:1433 + options: >- + --health-cmd="/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'Pssw0rd_12' -Q \"Use [master]; CREATE DATABASE [phpbb_tests] COLLATE Latin1_General_CI_AS\" || exit 1" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + --health-start-period 10s + + redis: + image: redis + options: >- + --health-cmd "redis-cli ping" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 6379:6379 + + steps: + - name: Checkout phpBB + uses: actions/checkout@v2 + with: + repository: phpbb/phpbb + ref: ${{ env.PHPBB_BRANCH }} + path: phpBB3 + + - name: Checkout extension + uses: actions/checkout@v2 + with: + path: phpBB3/phpBB/ext/${{ env.EXTNAME }} + + - id: database-type + env: + MATRIX_DB: ${{ matrix.db }} + run: | + if [ $MATRIX_DB == 'mcr.microsoft.com/mssql/server:2017-latest' ] || [ $MATRIX_DB == 'mcr.microsoft.com/mssql/server:2019-latest' ] + then + db='mssql' + else + db=$(echo "${MATRIX_DB%%:*}") + fi + echo "::set-output name=db::$db" + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, mysqli, sqlite, pdo_sqlite, intl, gd, exif, iconv, sqlsrv, pdo_sqlsrv, ldap + coverage: none + + - name: Setup environment for phpBB + env: + DB: ${{steps.database-type.outputs.db}} + PHP_VERSION: ${{ matrix.php }} + NOTESTS: '0' + run: .github/setup-phpbb.sh $DB $PHP_VERSION ${NOTESTS:-0} + working-directory: ./phpBB3 + + - name: Setup Extension composer dependencies + run: composer install + working-directory: phpBB3/phpBB/ext/${{ env.EXTNAME }} + + - name: Setup database + env: + DB: ${{steps.database-type.outputs.db}} + MYISAM: '0' + run: .github/setup-database.sh $DB $MYISAM + working-directory: ./phpBB3 + + - name: Setup PHPUnit files + run: mkdir -p phpBB/ext/$EXTNAME/.github && cp .github/phpunit* $_ + working-directory: ./phpBB3 + + - name: Run unit tests + env: + DB: ${{steps.database-type.outputs.db}} + run: phpBB/vendor/bin/phpunit --configuration phpBB/ext/$EXTNAME/.github/phpunit-$DB-github.xml --bootstrap ./tests/bootstrap.php + working-directory: ./phpBB3 + # END Other Tests Job