diff --git a/.github/Dockerfile b/.github/Dockerfile index 61f2bbaf5..8170eec15 100644 --- a/.github/Dockerfile +++ b/.github/Dockerfile @@ -45,7 +45,7 @@ RUN a2enmod ssl RUN a2ensite default-ssl.conf #can be removed if not needed WORKDIR /var/www/html COPY config/php.ini /usr/local/etc/php/ -COPY config/install_magento.sh /tmp/install_magento.sh +COPY scripts/install_magento.sh /tmp/install_magento.sh RUN if [ -x "$(command -v apache2-foreground)" ]; then a2enmod rewrite; fi @@ -55,4 +55,4 @@ ADD "https://github.com/magento/magento2-sample-data/archive/refs/tags/${MAGENTO RUN chmod +x /tmp/install_magento.sh -CMD ["bash", "/tmp/install_magento.sh"] \ No newline at end of file +CMD ["bash", "/tmp/install_magento.sh"] diff --git a/.github/Makefile b/.github/Makefile index 58fc1713a..179e2ec80 100644 --- a/.github/Makefile +++ b/.github/Makefile @@ -71,30 +71,15 @@ plugin: install configure flush fs: find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} + find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} + + chmod 777 -R var chown -R www-data:www-data . chmod u+x bin/magento echo "memory_limit = -1" > /usr/local/etc/php/conf.d/memory.ini -# Deploy sample data -sampledata: - composer config http-basic.repo.magento.com "${MAGENTO_USERNAME}" "${MAGENTO_PASSWORD}" - composer config repositories.magento composer https://repo.magento.com/ - bin/magento sampledata:deploy - bin/magento setup:upgrade - # Production mode production: bin/magento deploy:mode:set production -# JavaScript bundling -bundlejs: - bin/magento config:set dev/js/enable_js_bundling 1 - bin/magento config:set dev/js/minify_files 1 - bin/magento config:set dev/static/sign 1 - bin/magento config:set dev/js/merge_files 0 - bin/magento setup:static-content:deploy - bin/magento cache:clean config - MAGENTO_ROOT=/var/www/html GRAPHQL_XML=${MAGENTO_ROOT}/dev/tests/api-functional/phpunit_graphql.xml.dist GRAPHQL_PHP=/data/extensions/workdir/Test/phpunit_graphql.php @@ -112,16 +97,6 @@ restapi: --configuration ${MAGENTO_ROOT}/dev/tests/api-functional/phpunit_rest.xml.dist \ ${MAGENTO_ROOT}/vendor/adyen/module-payment/Test/api-functional/Webapi -# Destroy services -clean: - docker-compose -f workflows/templates/docker-compose.yml down --volumes --rmi local - docker-compose -f docker-compose.yml -f docker-compose.mftf.yml down --volumes --rmi local - -# Docker image build -image: - docker-compose -f workflows/templates/docker-compose.yml -f docker-compose.e2e.yml build - docker-compose -f docker-compose.yml -f docker-compose.mftf.yml build - # Setup environment to run functional tests (https://devdocs.magento.com/mftf/docs/getting-started.html) setup-mftf: bin/magento config:set currency/options/allow USD,EUR @@ -154,19 +129,3 @@ setup-mftf: # Magento Functional Testing Framework mftf: vendor/bin/mftf run:group --remove -- AdyenMagentoSuite || vendor/bin/mftf run:failed - -# Simulate a full CI build -ci: - docker-compose -f workflows/templates/docker-compose.yml run --rm web make magento - docker-compose -f workflows/templates/docker-compose.yml up -d web - - docker exec magento2-container make fs - docker exec magento2-container make sys-check - docker exec -u www-data magento2-container make plugin - docker exec magento2-container /etc/init.d/cron stop - docker exec -u www-data magento2-container make unit - docker exec magento2-container make graphql - docker exec -u www-data magento2-container make production - docker exec magento2-container make fs - - docker-compose -f workflows/templates/docker-compose.yml run --rm playwright /e2e.sh diff --git a/.github/docker-compose.e2e.yml b/.github/docker-compose.e2e.yml index f5e35ca5b..b22691ffc 100644 --- a/.github/docker-compose.e2e.yml +++ b/.github/docker-compose.e2e.yml @@ -1,7 +1,7 @@ version: '3' services: playwright: - image: mcr.microsoft.com/playwright:v1.41.2-focal + image: mcr.microsoft.com/playwright:focal shm_size: 1gb ipc: host cap_add: @@ -22,7 +22,8 @@ services: - GOOGLE_PASSWORD - WEBHOOK_USERNAME - WEBHOOK_PASSWORD - volumes: - - ../../scripts/e2e.sh:/e2e.sh - - ../../../test-report:/tmp/test-report + - ./scripts/e2e.sh:/e2e.sh + - ../test-report:/tmp/test-report +networks: + backend: diff --git a/.github/docker-compose.yml b/.github/docker-compose.yml index e8ca61ded..a98825c9e 100644 --- a/.github/docker-compose.yml +++ b/.github/docker-compose.yml @@ -29,31 +29,40 @@ services: - PHP_VERSION=${PHP_VERSION} - MAGENTO_VERSION=${MAGENTO_VERSION} container_name: magento2-container + extra_hosts: + - "magento2.test.com:127.0.0.1" networks: backend: aliases: - magento2.test.com environment: - - DB_SERVER=mariadb - - ELASTICSEARCH_SERVER=elasticsearch - - MAGENTO_HOST=magento2.test.com - - VIRTUAL_HOST=magento2.test.com - - ADMIN_URLEXT=admin - - DONATION_ACCOUNT - - ADMIN_USERNAME - - ADMIN_PASSWORD - - ADYEN_MERCHANT - - ADYEN_API_KEY - - ADYEN_CLIENT_KEY - - PHP_VERSION - - MAGENTO_VERSION - - WEBHOOK_USERNAME - - WEBHOOK_PASSWORD + DB_SERVER: mariadb + ELASTICSEARCH_SERVER: elasticsearch + MAGENTO_HOST: magento2.test.com + VIRTUAL_HOST: magento2.test.com + COMPOSER_MEMORY_LIMIT: -1 + DEPLOY_SAMPLEDATA: 1 + DONATION_ACCOUNT: + ADMIN_USERNAME: + ADMIN_PASSWORD: + ADYEN_MERCHANT: + ADYEN_API_KEY: + ADYEN_CLIENT_KEY: + PHP_VERSION: + MAGENTO_VERSION: + WEBHOOK_PASSWORD: + WEBHOOK_USERNAME: depends_on: - db - elastic volumes: - ../:/data/extensions/workdir - ./Makefile:/var/www/html/Makefile + - composer:/usr/local/bin + - magento:/var/www/html + - ../app-logs:/var/www/html/var/log networks: backend: +volumes: + magento: + composer: diff --git a/.github/config/install_magento.sh b/.github/scripts/install_magento.sh similarity index 100% rename from .github/config/install_magento.sh rename to .github/scripts/install_magento.sh diff --git a/.github/workflows/e2e-test-dispatch.yml b/.github/workflows/e2e-test-dispatch.yml index ecca65096..8586405e5 100644 --- a/.github/workflows/e2e-test-dispatch.yml +++ b/.github/workflows/e2e-test-dispatch.yml @@ -37,10 +37,10 @@ jobs: - uses: actions/checkout@v3 - name: Install Magento - run: docker-compose -f .github/workflows/templates/docker-compose.yml run --rm web make magento + run: docker-compose -f .github/docker-compose.yml run --rm web make magento - name: Start web server in background - run: docker-compose -f .github/workflows/templates/docker-compose.yml up -d web + run: docker-compose -f .github/docker-compose.yml up -d web env: DONATION_ACCOUNT: ${{secrets.DONATION_ACCOUNT}} ADYEN_MERCHANT: ${{secrets.ADYEN_MERCHANT}} @@ -94,7 +94,7 @@ jobs: run: docker exec magento2-container make fs - name: Run E2E tests - run: docker-compose -f .github/workflows/templates/docker-compose.yml run --rm playwright /e2e.sh ${{inputs.testGroup}} + run: docker-compose -f .github/docker-compose.e2e.yml run --rm playwright /e2e.sh ${{inputs.testGroup}} env: INTEGRATION_TESTS_BRANCH: ${{inputs.testBranch}} MAGENTO_ADMIN_USERNAME: ${{secrets.MAGENTO_ADMIN_USERNAME}} @@ -116,3 +116,10 @@ jobs: with: name: html-report path: test-report + + - name: Archive application logs + if: always() + uses: actions/upload-artifact@v3 + with: + name: app-logs + path: app-logs diff --git a/.github/workflows/e2e-test-express-checkout.yml b/.github/workflows/e2e-test-express-checkout.yml index 195af205b..2442526a3 100644 --- a/.github/workflows/e2e-test-express-checkout.yml +++ b/.github/workflows/e2e-test-express-checkout.yml @@ -27,10 +27,10 @@ jobs: - uses: actions/checkout@v3 - name: Install Magento - run: docker-compose -f .github/workflows/templates/docker-compose.yml run --rm web make magento + run: docker-compose -f .github/docker-compose.yml run --rm web make magento - name: Start web server in background - run: docker-compose -f .github/workflows/templates/docker-compose.yml up -d web + run: docker-compose -f .github/docker-compose.yml up -d web env: DONATION_ACCOUNT: ${{secrets.DONATION_ACCOUNT}} ADYEN_MERCHANT: ${{secrets.ADYEN_MERCHANT}} @@ -59,7 +59,7 @@ jobs: run: docker exec magento2-container make fs - name: Run E2E tests - run: docker-compose -f .github/workflows/templates/docker-compose.yml run --rm playwright /e2e.sh express-checkout + run: docker-compose -f .github/docker-compose.e2e.yml run --rm playwright /e2e.sh express-checkout env: INTEGRATION_TESTS_BRANCH: develop MAGENTO_ADMIN_USERNAME: ${{secrets.MAGENTO_ADMIN_USERNAME}} diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index ca67010fc..efdfe971c 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -24,10 +24,10 @@ jobs: - uses: actions/checkout@v3 - name: Install Magento - run: docker-compose -f .github/workflows/templates/docker-compose.yml run --rm web make magento + run: docker-compose -f .github/docker-compose.yml run --rm web make magento - name: Start web server in background - run: docker-compose -f .github/workflows/templates/docker-compose.yml up -d web + run: docker-compose -f .github/docker-compose.yml up -d web env: DONATION_ACCOUNT: ${{secrets.DONATION_ACCOUNT}} ADYEN_MERCHANT: ${{secrets.ADYEN_MERCHANT}} @@ -72,7 +72,7 @@ jobs: run: docker exec magento2-container make fs - name: Run E2E tests - run: docker-compose -f .github/workflows/templates/docker-compose.yml run --rm playwright /e2e.sh standard + run: docker-compose -f .github/docker-compose.e2e.yml run --rm playwright /e2e.sh standard env: INTEGRATION_TESTS_BRANCH: develop MAGENTO_ADMIN_USERNAME: ${{secrets.MAGENTO_ADMIN_USERNAME}} @@ -92,3 +92,10 @@ jobs: with: name: html-report path: test-report + + - name: Archive application logs + if: always() + uses: actions/upload-artifact@v3 + with: + name: app-logs + path: app-logs diff --git a/.github/workflows/graphql-test.yml b/.github/workflows/graphql-test.yml index ef1627349..5e48cf430 100644 --- a/.github/workflows/graphql-test.yml +++ b/.github/workflows/graphql-test.yml @@ -20,10 +20,10 @@ jobs: - uses: actions/checkout@v3 - name: Install Magento - run: docker-compose -f .github/workflows/templates/docker-compose.yml run --rm web make magento + run: docker-compose -f .github/docker-compose.yml run --rm web make magento - name: Start web server in background - run: docker-compose -f .github/workflows/templates/docker-compose.yml up -d web + run: docker-compose -f .github/docker-compose.yml up -d web env: DONATION_ACCOUNT: ${{secrets.DONATION_ACCOUNT}} ADYEN_MERCHANT: ${{secrets.ADYEN_MERCHANT}} diff --git a/.github/workflows/restapi-test.yml b/.github/workflows/restapi-test.yml index ba4607099..7e72f6752 100644 --- a/.github/workflows/restapi-test.yml +++ b/.github/workflows/restapi-test.yml @@ -20,10 +20,10 @@ jobs: - uses: actions/checkout@v3 - name: Install Magento - run: docker-compose -f .github/workflows/templates/docker-compose.yml run --rm web make magento + run: docker-compose -f .github/docker-compose.yml run --rm web make magento - name: Start web server in background - run: docker-compose -f .github/workflows/templates/docker-compose.yml up -d web + run: docker-compose -f .github/docker-compose.yml up -d web env: DONATION_ACCOUNT: ${{secrets.DONATION_ACCOUNT}} ADYEN_MERCHANT: ${{secrets.ADYEN_MERCHANT}} diff --git a/.github/workflows/templates/docker-compose.yml b/.github/workflows/templates/docker-compose.yml deleted file mode 100644 index 18a967c9c..000000000 --- a/.github/workflows/templates/docker-compose.yml +++ /dev/null @@ -1,92 +0,0 @@ -version: '3' - -services: - db: - image: mariadb:10.4 - container_name: mariadb - environment: - MARIADB_ROOT_PASSWORD: root_password - MARIADB_DATABASE: magento - MARIADB_USER: magento - MARIADB_PASSWORD: magento - networks: - - backend - elastic: - image: elasticsearch:7.17.13 - container_name: elasticsearch - ports: - - 9200:9200 - - 9300:9300 - environment: - - "discovery.type=single-node" - - ES_JAVA_OPTS=-Xms750m -Xmx750m - networks: - - backend - web: - build: - context: ../../ - args: - - PHP_VERSION=${PHP_VERSION} - - MAGENTO_VERSION=${MAGENTO_VERSION} - container_name: magento2-container - extra_hosts: - - "magento2.test.com:127.0.0.1" - environment: - DB_SERVER: mariadb - ELASTICSEARCH_SERVER: elasticsearch - MAGENTO_HOST: magento2.test.com - VIRTUAL_HOST: magento2.test.com - COMPOSER_MEMORY_LIMIT: -1 - DEPLOY_SAMPLEDATA: 1 - DONATION_ACCOUNT: - ADMIN_USERNAME: - ADMIN_PASSWORD: - ADYEN_MERCHANT: - ADYEN_API_KEY: - ADYEN_CLIENT_KEY: - PHP_VERSION: - MAGENTO_VERSION: - WEBHOOK_PASSWORD: - WEBHOOK_USERNAME: - depends_on: - - db - - elastic - volumes: - - ../../../:/data/extensions/workdir - - composer:/usr/local/bin - - magento:/var/www/html - - ../../Makefile:/var/www/html/Makefile - networks: - backend: - aliases: - - magento2.test.com - playwright: - image: mcr.microsoft.com/playwright:focal - shm_size: 1gb - ipc: host - cap_add: - - SYS_ADMIN - networks: - - backend - environment: - - INTEGRATION_TESTS_BRANCH - - MAGENTO_BASE_URL - - MAGENTO_ADMIN_USERNAME - - MAGENTO_ADMIN_PASSWORD - - PAYPAL_USERNAME - - PAYPAL_PASSWORD - - ADYEN_API_KEY - - ADYEN_CLIENT_KEY - - ADYEN_MERCHANT - - GOOGLE_USERNAME - - GOOGLE_PASSWORD - - WEBHOOK_USERNAME - - WEBHOOK_PASSWORD - volumes: - - ../../scripts/e2e.sh:/e2e.sh - - ../../../test-report:/tmp/test-report -networks: - backend: -volumes: - magento: - composer: