mirror of
https://github.com/graycoreio/github-actions-magento2.git
synced 2026-06-08 19:46:41 +00:00
191 lines
7.4 KiB
YAML
191 lines
7.4 KiB
YAML
on:
|
|
workflow_call:
|
|
inputs:
|
|
use_local_source:
|
|
type: boolean
|
|
required: false
|
|
default: true
|
|
description: "Whether or not you want to test your local package or not."
|
|
|
|
source_folder:
|
|
type: string
|
|
required: false
|
|
default: $GITHUB_WORKSPACE
|
|
description: "The source folder of the package"
|
|
|
|
package_name:
|
|
type: string
|
|
required: true
|
|
description: "The name of the package"
|
|
|
|
magento_directory:
|
|
type: string
|
|
required: false
|
|
default: "../magento2"
|
|
description: "The folder where Magento will be installed"
|
|
|
|
magento_repository:
|
|
type: string
|
|
required: false
|
|
default: "https://mirror.mage-os.org/"
|
|
description: "Where to install Magento from"
|
|
|
|
matrix:
|
|
type: string
|
|
required: true
|
|
description: "The matrix of Magento versions to test against"
|
|
|
|
fail-fast:
|
|
type: boolean
|
|
required: false
|
|
default: true
|
|
|
|
test_command:
|
|
type: string
|
|
required: false
|
|
default: ../../../vendor/bin/phpunit
|
|
description: "The integration test command to run"
|
|
|
|
composer_cache_key:
|
|
type: string
|
|
required: false
|
|
default: ''
|
|
description: A key to version the composer cache. Can be incremented if you need to bust the cache.
|
|
|
|
secrets:
|
|
composer_auth:
|
|
required: false
|
|
|
|
jobs:
|
|
integration_test:
|
|
runs-on: ${{ matrix.os }}
|
|
services: ${{ matrix.services }}
|
|
strategy:
|
|
fail-fast: ${{ inputs.fail-fast }}
|
|
matrix: ${{ fromJSON(inputs.matrix) }}
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Set PHP Version
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: ${{ matrix.php }}
|
|
tools: composer:v${{ matrix.composer }}
|
|
coverage: none
|
|
|
|
- name: Allow SQL triggers
|
|
run: |
|
|
mysql --host 127.0.0.1 --port ${{ job.services.mysql.ports['3306'] }} -u root -prootpassword -e "set global log_bin_trust_function_creators=1;"
|
|
|
|
- run: composer create-project --repository-url="${{ inputs.magento_repository }}" "${{ matrix.magento }}" ${{ inputs.magento_directory }} --no-install
|
|
shell: bash
|
|
env:
|
|
COMPOSER_AUTH: ${{ secrets.composer_auth }}
|
|
name: Create Magento ${{ matrix.magento }} Project
|
|
|
|
- uses: graycoreio/github-actions-magento2/get-magento-version@main
|
|
id: magento-version
|
|
with:
|
|
working-directory: ${{ inputs.magento_directory }}
|
|
|
|
- name: Get Composer Cache Directory
|
|
shell: bash
|
|
working-directory: ${{ inputs.magento_directory }}
|
|
id: composer-cache
|
|
run: |
|
|
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
|
|
|
|
|
- name: "Cache Composer Packages"
|
|
uses: actions/cache@v5
|
|
with:
|
|
key: "composer | v5 | ${{ inputs.composer_cache_key }} | ${{ hashFiles('composer.lock') }} | ${{ matrix.os }} | ${{ matrix.composer }} | ${{ matrix.php }} | ${{ matrix.magento }}"
|
|
path: ${{ steps.composer-cache.outputs.dir }}
|
|
|
|
- run: composer config repositories.local path ${{ inputs.source_folder }}
|
|
name: Add Github Repo for Testing
|
|
working-directory: ${{ inputs.magento_directory }}
|
|
shell: bash
|
|
if: ${{ inputs.use_local_source == true }}
|
|
|
|
- run: composer require monolog/monolog:"<2.7.0" --no-update
|
|
name: Fixup Monolog (https://github.com/magento/magento2/pull/35596)
|
|
working-directory: ${{ inputs.magento_directory }}
|
|
if: |
|
|
steps.magento-version.outputs.version == '"2.4.4"'
|
|
|
|
- run: composer require "dotmailer/dotmailer-magento2-extension-package:4.6.0-p2 as 4.6.0" --no-update
|
|
name: Fixup Dotmailer (https://devdocs.magento.com/guides/v2.4/release-notes/release-notes-2-4-0-commerce.html#dotdigital-1)
|
|
working-directory: ${{ inputs.magento_directory }}
|
|
if: |
|
|
steps.magento-version.outputs.version == '"2.4.0"'
|
|
|
|
- run: |
|
|
composer config --no-interaction allow-plugins.dealerdirect/phpcodesniffer-composer-installer true
|
|
composer config --no-interaction allow-plugins.laminas/laminas-dependency-plugin true
|
|
composer config --no-interaction allow-plugins.magento/* true
|
|
name: Fixup Composer Plugins
|
|
working-directory: ${{ inputs.magento_directory }}
|
|
if: ${{ !startsWith(matrix.composer, '1') }}
|
|
|
|
- run: |
|
|
composer global require hirak/prestissimo
|
|
name: Install composer plugin for parallel downloads
|
|
working-directory: ${{ inputs.magento_directory }}
|
|
if: ${{ startsWith(matrix.composer, '1') }}
|
|
|
|
- run: composer require ${{ inputs.package_name }} "@dev" --no-update && composer install
|
|
name: Require and attempt install
|
|
working-directory: ${{ inputs.magento_directory }}
|
|
shell: bash
|
|
env:
|
|
COMPOSER_CACHE_DIR: ${{ steps.composer-cache.outputs.dir }}
|
|
COMPOSER_AUTH: ${{ secrets.composer_auth }}
|
|
|
|
- name: Replace Configuration Settings for env
|
|
working-directory: ${{ inputs.magento_directory }}/dev/tests/integration
|
|
run: |
|
|
sed -i "s/'db-host' => 'localhost'/'db-host' => '127.0.0.1'/" etc/install-config-mysql.php.dist
|
|
sed -i "s/'db-user' => 'root'/'db-user' => 'user'/" etc/install-config-mysql.php.dist
|
|
sed -i "s/'db-password' => '123123q'/'db-password' => 'password'/" etc/install-config-mysql.php.dist
|
|
sed -i "s/'elasticsearch-host' => 'localhost'/'elasticsearch-host' => '127.0.0.1'/" etc/install-config-mysql.php.dist
|
|
sed -i "s/'amqp-host' => 'localhost'/'amqp-host' => '127.0.0.1'/" etc/install-config-mysql.php.dist
|
|
|
|
# mysql server 5.7 doesn't have the column-statistics expected by mysql client 8 (failing 2.3.7-p* builds)
|
|
# ref: https://gist.github.com/tobias-khs/8dcf82f719a2b3a7c3b9604b4df53bbf
|
|
- name: Switch from mysql-client 8 to mysql-client 5.7
|
|
if: |
|
|
steps.magento-version.outputs.version == '"2.3.7-p3"' || steps.magento-version.outputs.version == '"2.3.7-p4"'
|
|
run: |
|
|
mkdir -p /tmp/mysql-5.7
|
|
cd /tmp/mysql-5.7
|
|
sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*
|
|
sudo rm -rf /etc/mysql /var/lib/mysql
|
|
sudo apt-get autoremove
|
|
sudo apt-get autoclean
|
|
wget --quiet https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.30-1ubuntu18.04_amd64.deb-bundle.tar
|
|
tar -xf mysql-server_5.7.30-1ubuntu18.04_amd64.deb-bundle.tar
|
|
sudo dpkg -i mysql-common_5.7.30-1ubuntu18.04_amd64.deb
|
|
sudo dpkg -i libmysqlclient20_5.7.30-1ubuntu18.04_amd64.deb
|
|
sudo dpkg -i mysql-community-client_5.7.30-1ubuntu18.04_amd64.deb
|
|
sudo dpkg -i mysql-client_5.7.30-1ubuntu18.04_amd64.deb
|
|
sudo dpkg -i libmysqlclient20_5.7.30-1ubuntu18.04_amd64.deb
|
|
mysqldump --version
|
|
|
|
- name: Enable log-bin-trust-function-creators
|
|
run: |
|
|
mysql -h127.0.0.1 -uroot -prootpassword -e "SET GLOBAL log_bin_trust_function_creators = 1;"
|
|
|
|
|
|
- run: ${{ inputs.test_command }}
|
|
working-directory: ${{ inputs.magento_directory }}/dev/tests/integration
|
|
name: Run Integration Tests
|
|
|
|
- name: Upload test sandbox dir
|
|
uses: actions/upload-artifact@v4
|
|
if: failure()
|
|
with:
|
|
name: sandbox-data-${{ steps.magento-version.outputs.version }}
|
|
path: /home/runner/work/infrastructure/magento2/dev/tests/integration/tmp/sandbox-*
|
|
retention-days: 3
|
|
|