diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bed5e2e3f..3ddf5e163 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,7 +6,7 @@ jobs: strategy: fail-fast: false matrix: - php: [ '7.4', '8.0', '8.1', '8.2', '8.3' ] + php: [ '7.4', '8.0', '8.1', '8.2', '8.3', '8.4' ] name: PHP ${{ matrix.php }} steps: @@ -14,18 +14,11 @@ jobs: - name: Checkout Repository uses: actions/checkout@v4 - - name: Setup PHP - uses: nanasess/setup-php@master - with: - php-version: ${{ matrix.php }} + - name: Install PHP + run: chmod +x .github/workflows/setup-php.sh && .github/workflows/setup-php.sh ${{ matrix.php }} - - name: Start MySQL and create database - run: | - sudo systemctl start mysql.service - sudo mysql -uroot -proot -e "CREATE DATABASE rhymix CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci" - sudo mysql -uroot -proot -e "CREATE USER rhymix@localhost IDENTIFIED WITH mysql_native_password BY 'rhymix'" - sudo mysql -uroot -proot -e "GRANT ALL ON rhymix.* to rhymix@localhost; FLUSH PRIVILEGES" - sudo mysql -uroot -proot -e "SELECT VERSION()" + - name: Create test database + run: chmod +x .github/workflows/setup-mysql.sh && .github/workflows/setup-mysql.sh - name: PHP Lint run: if find . -name "*.php" ! -path "./common/vendor/*" -print0 | xargs -0 -n 1 -P 8 php -l | grep -v "No syntax errors detected"; then exit 1; fi diff --git a/.github/workflows/setup-mysql.sh b/.github/workflows/setup-mysql.sh new file mode 100644 index 000000000..2f90347cd --- /dev/null +++ b/.github/workflows/setup-mysql.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +AUTH="-uroot -proot" + +# Start MySQL +sudo systemctl start mysql.service + +# Create default database +sudo mysql $AUTH -e "CREATE DATABASE rhymix CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci" +sudo mysql $AUTH -e "CREATE USER rhymix@localhost IDENTIFIED WITH mysql_native_password BY 'rhymix'" +sudo mysql $AUTH -e "GRANT ALL ON rhymix.* to rhymix@localhost; FLUSH PRIVILEGES" + +# Check MySQL version +sudo mysql $AUTH -e "SELECT VERSION()" diff --git a/.github/workflows/setup-php.sh b/.github/workflows/setup-php.sh new file mode 100644 index 000000000..3852c4089 --- /dev/null +++ b/.github/workflows/setup-php.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# Based on https://github.com/nanasess/setup-php +sudo add-apt-repository -y ppa:ondrej/php + +# Install all required packages +sudo apt -y install \ + php$1-apcu \ + php$1-bcmath \ + php$1-cli \ + php$1-common \ + php$1-curl \ + php$1-gd \ + php$1-intl \ + php$1-mbstring \ + php$1-mysql \ + php$1-opcache \ + php$1-readline \ + php$1-sqlite3 \ + php$1-xml \ + php$1-zip + +# Enable and tune opcache +sudo bash -c 'echo "opcache.enable = 1" >> /etc/php/$1/cli/conf.d/10-opcache.ini' +sudo bash -c 'echo "opcache.enable_cli = 1" >> /etc/php/$1/cli/conf.d/10-opcache.ini' +sudo bash -c 'echo "opcache.jit = tracing" >> /etc/php/$1/cli/conf.d/10-opcache.ini' +sudo bash -c 'echo "opcache.jit_buffer_size = 128M" >> /etc/php/$1/cli/conf.d/10-opcache.ini' + +# Enable APCu +sudo bash -c 'echo "apc.enable_cli = 1" >> /etc/php/$1/cli/conf.d/20-apcu.ini' + +# Disable xdebug +sudo phpdismod -v ALL -s ALL xdebug + +# Set and check default PHP version +sudo update-alternatives --set php /usr/bin/php$1 +php -v