From 6184797b2261860bc5647d0f3ac59ef3fa8cd82b Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Sat, 30 Nov 2024 18:02:01 +0900 Subject: [PATCH] Add PHP 8.4 to test matrix, and reorganize github CI configuration --- .github/workflows/ci.yml | 17 +++++---------- .github/workflows/setup-mysql.sh | 14 ++++++++++++ .github/workflows/setup-php.sh | 37 ++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 12 deletions(-) create mode 100644 .github/workflows/setup-mysql.sh create mode 100644 .github/workflows/setup-php.sh 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