diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 071e9676e..56026d394 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,6 +8,10 @@ on: branches: - 3.x +env: + IMAGE_CACHE_DIR: /tmp/cache/docker-image + IMAGE_CACHE_KEY: cache-image + jobs: test: timeout-minutes: 10 @@ -19,8 +23,29 @@ jobs: with: submodules: recursive - - name: Build test containers - run: docker-compose -f docker-compose.yml -f docker-compose.dev.yml --env-file="./docker/.env.test" build + - name: Get docker dir checksum + id: docker-dir-checksum + run: | + echo "SHA=$(find ./docker -type f -print0 | LC_ALL=C sort -z | xargs -0 shasum | shasum | head -c 40)" >> $GITHUB_OUTPUT + + - name: Cache docker images + id: cache-docker-images + uses: actions/cache@v3 + with: + path: ${{ env.IMAGE_CACHE_DIR }} + key: 3.x-docker-images-test-${{ steps.docker-dir-checksum.outputs.SHA }} + + - if: ${{ steps.cache-docker-images.outputs.cache-hit != 'true' }} + name: Build test containers and save cache + run: | + docker-compose -f docker-compose.yml -f docker-compose.dev.yml --env-file="./docker/.env.test" build + mkdir -p ${{ env.IMAGE_CACHE_DIR }} + docker save -o ${{ env.IMAGE_CACHE_DIR }}/misp3-image.tar misp3/php:8.2-fpm + + - if: ${{ steps.cache-docker-images.outputs.cache-hit == 'true' }} + name: Docker load cached image + run: | + docker load --input ${{ env.IMAGE_CACHE_DIR }}/misp3-image.tar - name: Run tests run: docker-compose -f docker-compose.yml -f docker-compose.dev.yml --env-file="./docker/.env.test" run misp diff --git a/docker/misp/Dockerfile b/docker/misp/Dockerfile index 5066b9865..7065b3bff 100644 --- a/docker/misp/Dockerfile +++ b/docker/misp/Dockerfile @@ -14,7 +14,7 @@ COPY --from=composer /usr/bin/composer /usr/bin/composer # Install additional PHP extensions and system packages RUN apt-get -y update \ - && apt-get install -y libicu-dev libpq-dev zip libzip-dev default-mysql-client gnupg supervisor \ + && apt-get install -y libicu-dev libpq-dev zip libzip-dev default-mysql-client gnupg supervisor git sendmail sudo \ && docker-php-ext-configure intl \ && docker-php-ext-install intl pdo pdo_mysql mysqli zip \ && apt-get remove -y --purge libicu-dev libzip-dev \ @@ -77,11 +77,11 @@ RUN pecl install -f xdebug pcov \ && docker-php-ext-enable xdebug pcov # Install additional packages -RUN apt-get update \ - && apt-get install -y \ - git sendmail sudo \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* +# RUN apt-get update \ +# && apt-get install -y \ +# && \ +# && apt-get clean \ +# && rm -rf /var/lib/apt/lists/* # Write Xdebug configuration RUN echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \