name: MageCheck Store on: workflow_call: inputs: path: type: string required: false default: "." description: "The folder of the Magento store that you are testing." composer_cache_key: type: string required: false default: "_mageos" description: A key to version the composer cache. Can be incremented if you need to bust the cache. store_artifact_name: type: string required: false default: "" description: "If provided, download store files from this artifact instead of using actions/checkout." stamp: type: boolean required: false default: false description: "Cache the vendor/ directory in addition to the Composer download cache." secrets: composer_auth: required: false description: "Your composer credentials (typically a stringified json object of the contents of your auth.json)" jobs: compute_matrix: runs-on: ubuntu-latest outputs: matrix: ${{ steps.supported-version.outputs.matrix }} steps: - uses: actions/checkout@v6 if: inputs.store_artifact_name == '' - uses: actions/download-artifact@v8 if: inputs.store_artifact_name != '' with: name: ${{ inputs.store_artifact_name }} path: ${{ inputs.path }} - uses: graycoreio/github-actions-magento2/get-magento-version@v8.0.0-rc.0 id: get-magento-version with: working-directory: ${{ inputs.path }} - uses: graycoreio/github-actions-magento2/supported-version@v8.0.0-rc.0 id: supported-version with: kind: custom custom_versions: ${{ steps.get-magento-version.outputs.project }}:${{ fromJSON(steps.get-magento-version.outputs.version) }} unit-test: runs-on: ${{ matrix.os }} needs: compute_matrix strategy: matrix: ${{ fromJSON(needs.compute_matrix.outputs.matrix) }} steps: - uses: actions/checkout@v6 if: inputs.store_artifact_name == '' - uses: actions/download-artifact@v8 if: inputs.store_artifact_name != '' with: name: ${{ inputs.store_artifact_name }} path: ${{ inputs.path }} - uses: graycoreio/github-actions-magento2/setup-magento@v8.0.0-rc.0 id: setup-magento with: php-version: ${{ matrix.php }} tools: composer:v${{ matrix.composer }} mode: store working-directory: ${{ inputs.path }} composer_auth: ${{ secrets.composer_auth }} - uses: graycoreio/github-actions-magento2/cache-magento@v8.0.0-rc.0 with: composer_cache_key: ${{ inputs.composer_cache_key }} working-directory: ${{ steps.setup-magento.outputs.path }} stamp: ${{ inputs.stamp }} - name: Composer install working-directory: ${{ steps.setup-magento.outputs.path }} run: composer install env: COMPOSER_AUTH: ${{ secrets.composer_auth }} - name: Configure phpunit.xml.dist working-directory: ${{ steps.setup-magento.outputs.path }} run: | mkdir -p app/code cat > /tmp/testsuite.xml << 'EOF' ../../../app/code EOF sed -i '//r /tmp/testsuite.xml' dev/tests/unit/phpunit.xml.dist ## Disable allure (See https://github.com/magento/magento2/issues/36702 ) sed -i '//,/<\/extensions>/d' dev/tests/unit/phpunit.xml.dist - name: Run unit tests working-directory: ${{ steps.setup-magento.outputs.path }} run: | if find app/code -name "*Test.php" -print -quit | grep -q .; then vendor/bin/phpunit -c dev/tests/unit/phpunit.xml.dist --testsuite Store_Unit_Tests else echo "No unit tests found in app/code, skipping." fi coding-standard: runs-on: ${{ matrix.os }} needs: compute_matrix strategy: matrix: ${{ fromJSON(needs.compute_matrix.outputs.matrix) }} steps: - uses: actions/checkout@v6 if: inputs.store_artifact_name == '' - uses: actions/download-artifact@v8 if: inputs.store_artifact_name != '' with: name: ${{ inputs.store_artifact_name }} path: ${{ inputs.path }} - uses: graycoreio/github-actions-magento2/setup-magento@v8.0.0-rc.0 id: setup-magento with: php-version: ${{ matrix.php }} tools: composer:v${{ matrix.composer }} mode: store working-directory: ${{ inputs.path }} composer_auth: ${{ secrets.composer_auth }} - uses: graycoreio/github-actions-magento2/cache-magento@v8.0.0-rc.0 with: composer_cache_key: ${{ inputs.composer_cache_key }} working-directory: ${{ steps.setup-magento.outputs.path }} stamp: ${{ inputs.stamp }} - name: Composer install working-directory: ${{ steps.setup-magento.outputs.path }} run: composer install env: COMPOSER_AUTH: ${{ secrets.composer_auth }} - name: Create default phpcs.xml if none exists working-directory: ${{ steps.setup-magento.outputs.path }} run: | mkdir -p app/code if [ ! -f .phpcs.xml ] && [ ! -f phpcs.xml ] && [ ! -f .phpcs.xml.dist ] && [ ! -f phpcs.xml.dist ]; then cat > phpcs.xml << 'EOF' app/code EOF fi - uses: graycoreio/github-actions-magento2/coding-standard@v8.0.0-rc.0 with: path: ${{ steps.setup-magento.outputs.path }} composer_auth: ${{ secrets.composer_auth }}