Merge pull request #36 from michielgerritsen/new-versions #316
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Magento 2.4 Community Edition Docker container build | |
on: | |
push: | |
pull_request: | |
schedule: | |
- cron: '0 0 * * 1' | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
cfg: | |
- { PHP_VERSION: php82-fpm, MAGENTO_VERSION: 2.4.7-beta2, SAMPLE_DATA: false } | |
- { PHP_VERSION: php82-fpm, MAGENTO_VERSION: 2.4.7-beta2, SAMPLE_DATA: true } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.7-beta2, SAMPLE_DATA: false } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.7-beta2, SAMPLE_DATA: true } | |
- { PHP_VERSION: php82-fpm, MAGENTO_VERSION: 2.4.6-p3, SAMPLE_DATA: false } | |
- { PHP_VERSION: php82-fpm, MAGENTO_VERSION: 2.4.6-p3, SAMPLE_DATA: true } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.6-p3, SAMPLE_DATA: false } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.6-p3, SAMPLE_DATA: true } | |
# 2.4.6-p2 is disabled due to this error that keeps haunting me: | |
# Connection "default" is not defined | |
# - { PHP_VERSION: php82-fpm, MAGENTO_VERSION: 2.4.6-p2, SAMPLE_DATA: false } | |
# - { PHP_VERSION: php82-fpm, MAGENTO_VERSION: 2.4.6-p2, SAMPLE_DATA: true } | |
# - { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.6-p2, SAMPLE_DATA: false } | |
# - { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.6-p2, SAMPLE_DATA: true } | |
- { PHP_VERSION: php82-fpm, MAGENTO_VERSION: 2.4.6-p1, SAMPLE_DATA: false } | |
- { PHP_VERSION: php82-fpm, MAGENTO_VERSION: 2.4.6-p1, SAMPLE_DATA: true } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.6-p1, SAMPLE_DATA: false } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.6-p1, SAMPLE_DATA: true } | |
- { PHP_VERSION: php82-fpm, MAGENTO_VERSION: 2.4.6, SAMPLE_DATA: false } | |
- { PHP_VERSION: php82-fpm, MAGENTO_VERSION: 2.4.6, SAMPLE_DATA: true } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.6, SAMPLE_DATA: false } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.6, SAMPLE_DATA: true } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.5-p5, SAMPLE_DATA: false } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.5-p5, SAMPLE_DATA: true } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.5-p4, SAMPLE_DATA: false } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.5-p4, SAMPLE_DATA: true } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.5-p3, SAMPLE_DATA: false } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.5-p3, SAMPLE_DATA: true } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.5-p2, SAMPLE_DATA: false } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.5-p2, SAMPLE_DATA: true } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.5-p1, SAMPLE_DATA: false } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.5-p1, SAMPLE_DATA: true } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.5, SAMPLE_DATA: false } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.5, SAMPLE_DATA: true } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.4-p6, SAMPLE_DATA: false } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.4-p6, SAMPLE_DATA: true } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.4-p5, SAMPLE_DATA: false } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.4-p5, SAMPLE_DATA: true } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.4-p4, SAMPLE_DATA: false } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.4-p4, SAMPLE_DATA: true } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.4-p4, SAMPLE_DATA: false } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.4-p4, SAMPLE_DATA: true } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.4-p3, SAMPLE_DATA: false } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.4-p3, SAMPLE_DATA: true } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.4-p3, SAMPLE_DATA: false } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.4-p3, SAMPLE_DATA: true } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.4-p2, SAMPLE_DATA: false } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.4-p2, SAMPLE_DATA: true } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.4-p2, SAMPLE_DATA: false } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.4-p2, SAMPLE_DATA: true } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.4-p1, SAMPLE_DATA: false } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.4-p1, SAMPLE_DATA: true } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.4-p1, SAMPLE_DATA: false } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.4-p1, SAMPLE_DATA: true } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.4, SAMPLE_DATA: false } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.4, SAMPLE_DATA: true } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.4, SAMPLE_DATA: false } | |
- { PHP_VERSION: php81-fpm, MAGENTO_VERSION: 2.4.4, SAMPLE_DATA: true } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.3-p2, SAMPLE_DATA: false } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.3-p2, SAMPLE_DATA: true } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.3-p1, SAMPLE_DATA: false } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.3-p1, SAMPLE_DATA: true } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.3-p1, SAMPLE_DATA: false } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.3-p1, SAMPLE_DATA: true } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.3, SAMPLE_DATA: false } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.3, SAMPLE_DATA: true } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.3, SAMPLE_DATA: false } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.3, SAMPLE_DATA: true } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.2-p2, SAMPLE_DATA: false } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.2-p2, SAMPLE_DATA: true } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.2-p2, SAMPLE_DATA: false } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.2-p2, SAMPLE_DATA: true } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.2-p1, SAMPLE_DATA: false } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.2-p1, SAMPLE_DATA: true } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.2-p1, SAMPLE_DATA: false } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.2-p1, SAMPLE_DATA: true } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.2, SAMPLE_DATA: false } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.2, SAMPLE_DATA: true } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.2, SAMPLE_DATA: false } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.2, SAMPLE_DATA: true } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.1-p1, SAMPLE_DATA: false } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.1-p1, SAMPLE_DATA: true } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.1-p1, SAMPLE_DATA: false } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.1-p1, SAMPLE_DATA: true } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.1, SAMPLE_DATA: false } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.1, SAMPLE_DATA: true } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.1, SAMPLE_DATA: false } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.1, SAMPLE_DATA: true } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.0-p1, SAMPLE_DATA: false } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.0-p1, SAMPLE_DATA: true } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.0-p1, SAMPLE_DATA: false } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.0-p1, SAMPLE_DATA: true } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.0, SAMPLE_DATA: false } | |
- { PHP_VERSION: php73-fpm, MAGENTO_VERSION: 2.4.0, SAMPLE_DATA: true } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.0, SAMPLE_DATA: false } | |
- { PHP_VERSION: php74-fpm, MAGENTO_VERSION: 2.4.0, SAMPLE_DATA: true } | |
steps: | |
- uses: actions/checkout@v1 | |
- name: Cache Composer packages | |
uses: actions/cache@v3 | |
with: | |
path: magento/vendor | |
key: ${{ matrix.cfg.PHP_VERSION }}-magento${{ matrix.cfg.MAGENTO_VERSION }} | |
- name: Create vendor folder | |
run: mkdir magento/vendor || echo "Vendor folder already exists" | |
# Step 1: Build the docker image | |
- name: Build the Docker image (without sample data) | |
if: matrix.cfg.SAMPLE_DATA == false | |
run: | |
docker build magento -f magento/Dockerfile-2.4 | |
-t michielgerritsen/magento-project-community-edition:${{ matrix.cfg.PHP_VERSION }}-magento${{ matrix.cfg.MAGENTO_VERSION }} | |
--build-arg MAGENTO_VERSION=${{ matrix.cfg.MAGENTO_VERSION }} | |
--build-arg PHP_VERSION=${{ matrix.cfg.PHP_VERSION }} | |
- name: Build the Docker image (with sample data) | |
if: matrix.cfg.SAMPLE_DATA == true | |
run: | |
docker build magento -f magento/Dockerfile-2.4 | |
-t michielgerritsen/magento-project-community-edition:${{ matrix.cfg.PHP_VERSION }}-magento${{ matrix.cfg.MAGENTO_VERSION }}-sample-data | |
--build-arg MAGENTO_VERSION=${{ matrix.cfg.MAGENTO_VERSION }} | |
--build-arg PHP_VERSION=${{ matrix.cfg.PHP_VERSION }} | |
--build-arg SAMPLE_DATA=true | |
# Step 2: Test the docker image | |
- name: Start the docker image (without sample date) | |
if: matrix.cfg.SAMPLE_DATA == false | |
run: | |
docker run --memory=4G --detach --name magento-project-community-edition | |
michielgerritsen/magento-project-community-edition:${{ matrix.cfg.PHP_VERSION }}-magento${{ matrix.cfg.MAGENTO_VERSION }} | |
- name: Start the docker image (with sample date) | |
if: matrix.cfg.SAMPLE_DATA == true | |
run: | |
docker run --detach --name magento-project-community-edition | |
michielgerritsen/magento-project-community-edition:${{ matrix.cfg.PHP_VERSION }}-magento${{ matrix.cfg.MAGENTO_VERSION }}-sample-data | |
- name: Create the dummy test directory | |
run: docker exec magento-project-community-edition mkdir -p /data/app/code/MichielGerritsen/Magento2ExtensionIntegrationTest/Test/Integration | |
- name: Copy the example test module | |
run: | | |
docker exec magento-project-community-edition mkdir -p /data/extensions/MichielGerritsen-ExampleTest/Test/Integration/ | |
docker cp Test/composer.json magento-project-community-edition:/data/extensions/MichielGerritsen-ExampleTest/ | |
docker cp Test/ExampleTest.php magento-project-community-edition:/data/extensions/MichielGerritsen-ExampleTest/Test/Integration/ | |
- name: Install the example test module | |
run: docker exec magento-project-community-edition composer require michielgerritsen/exampletest:@dev | |
- name: Enable developer mode | |
run: docker exec magento-project-community-edition ./retry "bin/magento deploy:mode:set developer" | |
- name: Run setup:di:compile | |
run: docker exec magento-project-community-edition ./retry "php bin/magento setup:di:compile" | |
- name: Run the example test | |
run: docker exec magento-project-community-edition bash -c "cd /data/dev/tests/integration/ && ../../../vendor/bin/phpunit /data/vendor/michielgerritsen/exampletest/Test/Integration/ExampleTest.php" | |
# Step 3: Upload the images to Docker Hub. | |
- name: Docker hub login | |
if: github.ref == 'refs/heads/master' | |
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin | |
- name: Push the image to Docker hub (without sample data) | |
if: github.ref == 'refs/heads/master' && matrix.cfg.SAMPLE_DATA == false | |
run: docker push michielgerritsen/magento-project-community-edition:${{ matrix.cfg.PHP_VERSION }}-magento${{ matrix.cfg.MAGENTO_VERSION }} | |
- name: Push the image to Docker hub (with sample data) | |
if: github.ref == 'refs/heads/master' && matrix.cfg.SAMPLE_DATA == true | |
run: docker push michielgerritsen/magento-project-community-edition:${{ matrix.cfg.PHP_VERSION }}-magento${{ matrix.cfg.MAGENTO_VERSION }}-sample-data | |
- name: Copy the vendor folder for caching | |
run: docker cp magento-project-community-edition:/data/vendor magento/vendor | |
- name: Dump Docker logs files (on failure) | |
if: failure() | |
run: | | |
mkdir failure-logs | |
docker logs magento-project-community-edition > failure-logs/docker.log | |
docker cp magento-project-community-edition:/data/var/log failure-logs/var/log | |
- name: Upload failure artifacts | |
if: failure() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: failure-artifacts-${{ matrix.cfg.PHP_VERSION }}-magento${{ matrix.cfg.MAGENTO_VERSION }} | |
path: | | |
failure-logs |