From dd1a36b2345cd9596b5d2688d5c6e1bc8725ffbd Mon Sep 17 00:00:00 2001 From: Damien Retzinger Date: Sun, 26 Jun 2022 12:56:31 -0400 Subject: [PATCH 1/2] feat: add runner version to supported version (#7) --- supported-version/supported.json | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/supported-version/supported.json b/supported-version/supported.json index bb4dd075..d65f89fb 100644 --- a/supported-version/supported.json +++ b/supported-version/supported.json @@ -18,7 +18,8 @@ "rabbitmq": "rabbitmq:3.8", "redis": "redis:6.0", "varnish": "varnish:6.0", - "nginx": "nginx:1.18" + "nginx": "nginx:1.18", + "os": "ubuntu-18.04" }, { "magento": "magento/project-community-edition:>=2.4.0 <2.4.1", @@ -29,7 +30,7 @@ "rabbitmq": "rabbitmq:3.8", "redis": "redis:5.0", "varnish": "varnish:6.0", - "nginx": "nginx:1.18" + "os": "ubuntu-latest" }, { "magento": "magento/project-community-edition:>=2.4.1 <2.4.2", @@ -40,7 +41,8 @@ "rabbitmq": "rabbitmq:3.8", "redis": "redis:5.0", "varnish": "varnish:6.0", - "nginx": "nginx:1.18" + "nginx": "nginx:1.18", + "os": "ubuntu-latest" }, { "magento": "magento/project-community-edition:>=2.4.2 <2.4.3", @@ -51,7 +53,8 @@ "rabbitmq": "rabbitmq:3.8", "redis": "redis:6.0", "varnish": "varnish:6.0", - "nginx": "nginx:1.18" + "nginx": "nginx:1.18", + "os": "ubuntu-latest" }, { "magento": "magento/project-community-edition:>=2.4.3 <2.4.4", @@ -62,7 +65,8 @@ "rabbitmq": "rabbitmq:3.8", "redis": "redis:6.0", "varnish": "varnish:6.0", - "nginx": "nginx:1.18" + "nginx": "nginx:1.18", + "os": "ubuntu-latest" }, { "magento": "magento/project-community-edition:>=2.4.4 <2.4.5", @@ -73,7 +77,8 @@ "rabbitmq": "rabbitmq:3.9", "redis": "redis:6.2", "varnish": "varnish:7.0", - "nginx": "nginx:1.18" + "nginx": "nginx:1.18", + "os": "ubuntu-latest" }, { "magento": "magento/project-community-edition", @@ -84,7 +89,8 @@ "rabbitmq": "rabbitmq:3.9", "redis": "redis:6.2", "varnish": "varnish:7.0", - "nginx": "nginx:1.18" + "nginx": "nginx:1.18", + "os": "ubuntu-latest" } ] } \ No newline at end of file From fb1ac5f41aa183408aa32ec944536cf225831191 Mon Sep 17 00:00:00 2001 From: Damien Retzinger Date: Sun, 26 Jun 2022 12:56:54 -0400 Subject: [PATCH 2/2] feat: add matrix to integration-test workflow (#7) --- .github/workflows/_internal-integration.yaml | 11 ++++ .github/workflows/integration-README.md | 37 ++++++++++- .github/workflows/integration.yaml | 67 ++++++-------------- 3 files changed, 66 insertions(+), 49 deletions(-) diff --git a/.github/workflows/_internal-integration.yaml b/.github/workflows/_internal-integration.yaml index 457685c3..e603fcba 100644 --- a/.github/workflows/_internal-integration.yaml +++ b/.github/workflows/_internal-integration.yaml @@ -17,11 +17,22 @@ on: - ".github/workflows/integration.yaml" jobs: + compute_matrix: + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.supported-version.outputs.matrix }} + steps: + - uses: actions/checkout@v2 + - uses: ./supported-version + id: supported-version + - run: echo ${{ steps.supported-version.outputs.matrix }} integration-workflow: + needs: compute_matrix uses: ./.github/workflows/integration.yaml with: package_name: graycore/magento2-demo-package source_folder: $GITHUB_WORKSPACE/_test/demo-package + matrix: ${{ needs.compute_matrix.outputs.matrix }} test_command: ../../../vendor/bin/phpunit ../../../vendor/graycore/magento2-demo-package/Test/Integration secrets: composer_auth: ${{ secrets.COMPOSER_AUTH }} diff --git a/.github/workflows/integration-README.md b/.github/workflows/integration-README.md index 8a3d6089..4c814ea6 100644 --- a/.github/workflows/integration-README.md +++ b/.github/workflows/integration-README.md @@ -6,6 +6,26 @@ A Github Workflow that runs the Integration Tests of a Magento Package See the [integration.yaml](./integration.yaml) +| Input | Description | Required | Default | +| ------------------ | ------------------------------------------------------------- | -------- | ----------------------------- | +| matrix | JSON string of [version matrix for Magento](#./matrix-format) | true | NULL | +| package_name | The name of the package | true | NULL | +| source_folder | The source folder of the package | false | $GITHUB_WORKSPACE | +| magento_directory | The folder where Magento will be installed | false | ../magento2 | +| magento_repository | Where to install Magento from | false | https://repo.magento.com/ | +| test_command | The integration test command to run | false | "../../../vendor/bin/phpunit" | + +## Secrets +| Input | Description | Required | Default | +| ------------- | --------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------- | +| composer_auth | JSON string of [composer credentials]([#./matrix-format](https://devdocs.magento.com/guides/v2.4/install-gde/prereq/connect-auth.html)) | true | NULL | + +### Matrix Format + +The Magento matrix format outlined by the [supported versions action.](https://github.com/graycoreio/github-actions-magento2/tree/main/supported-version/supported.json +) + + ## Usage ```yml @@ -20,12 +40,23 @@ on: - main jobs: + compute_matrix: + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.supported-version.outputs.matrix }} + steps: + - uses: actions/checkout@v2 + - uses: graycoreio/github-actions-magento2/supported-version@main + id: supported-version + - run: echo ${{ steps.supported-version.outputs.matrix }} integration-workflow: + needs: compute_matrix uses: graycoreio/github-actions-magento2/.github/workflows/integration.yaml@main with: - package_name: YOUR_PACKAGE_NAME - source_folder: $GITHUB_WORKSPACE - test_command: ../../../vendor/bin/phpunit ../../../vendor/YOUR_VENDOR/YOUR_PACKAGE_NAME/Test/Integration + package_name: graycore/magento2-demo-package + source_folder: $GITHUB_WORKSPACE/_test/demo-package + matrix: ${{ needs.compute_matrix.outputs.matrix }} + test_command: ../../../vendor/bin/phpunit ../../../vendor/graycore/magento2-demo-package/Test/Integration secrets: composer_auth: ${{ secrets.COMPOSER_AUTH }} ``` diff --git a/.github/workflows/integration.yaml b/.github/workflows/integration.yaml index 88234120..7ca0c8b9 100644 --- a/.github/workflows/integration.yaml +++ b/.github/workflows/integration.yaml @@ -12,24 +12,6 @@ on: type: string required: true description: "The name of the package" - - composer_version: - type: string - default: "2" - description: The composer version to use. - required: false - - php_version: - type: string - default: "7.4" - description: The php version to use. - required: false - - magento_version: - type: string - default: magento/project-community-edition:>2.4.3 <2.4.4 - description: The magento version to use. - required: false magento_directory: type: string @@ -42,25 +24,12 @@ on: required: false default: "https://repo.magento.com/" description: "Where to install Magento from" - - mysql_image: - type: string - default: mysql:8.0 - description: The mysql image to use. - required: false - - rabbitmq_image: + + matrix: type: string - default: rabbitmq:3.10-alpine - description: The RabbitMQ image to use. - required: false + required: true + description: "The matrix of Magento versions to test against" - elasticsearch_image: - type: string - default: docker.elastic.co/elasticsearch/elasticsearch:7.16.3 - description: The elasticsearch image to use. - required: false - test_command: type: string required: false @@ -73,10 +42,12 @@ on: jobs: integration_test: - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} + strategy: + matrix: ${{ fromJSON(inputs.matrix) }} services: elasticsearch: - image: ${{ inputs.elasticsearch_image }} + image: ${{ matrix.elasticsearch }} env: discovery.type: single-node options: >- @@ -88,7 +59,7 @@ jobs: - 9200:9200 mysql: - image: ${{ inputs.mysql_image }} + image: ${{ matrix.mysql }} env: MYSQL_DATABASE: magento_integration_tests MYSQL_USER: user @@ -99,7 +70,7 @@ jobs: options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 rabbitmq: - image: ${{ inputs.rabbitmq_image }} + image: ${{ matrix.rabbitmq }} env: RABBITMQ_DEFAULT_USER: guest RABBITMQ_DEFAULT_PASS: guest @@ -110,17 +81,17 @@ jobs: - name: Set PHP Version uses: shivammathur/setup-php@v2 with: - php-version: ${{ inputs.php_version }} + php-version: ${{ matrix.php }} - - run: composer self-update --${{ inputs.composer_version }} - name: Pin to Composer Version ${{ inputs.composer_version }} + - run: composer self-update --${{ matrix.composer }} + name: Pin to Composer Version ${{ matrix.composer }} shell: bash - - run: composer create-project --repository-url="${{ inputs.magento_repository }}" "${{ inputs.magento_version }}" ${{ inputs.magento_directory }} --no-install + - 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 ${{ inputs.magento_version }} Project + name: Create Magento ${{ matrix.magento }} Project - name: Get Composer Cache Directory shell: bash @@ -132,14 +103,18 @@ jobs: - name: "Cache Composer Packages" uses: actions/cache@v3 with: - key: 'composer | v3 | "$(Agent.OS)" | composer.lock | ${{ inputs.composer_version }} | ${{ inputs.php_version }} | ${{ inputs.magento_version }}' + key: 'composer | v3 | "$(Agent.OS)" | composer.lock | ${{ 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 - + + - 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 }} + - run: composer require ${{ inputs.package_name }} "@dev" --no-update && composer install name: Require and attempt install working-directory: ${{ inputs.magento_directory }}