-name: Build Docker image
-on: [push, pull_request]
+name: Build & Publish
+on:
+ push:
+ branches:
+ - 'master'
+ paths:
+ - '!README.md'
+ - '!examples/**'
+ tags:
+ - '*'
jobs:
build-and-testvariants:
name: Build image variants and run tests
tags: ${{ matrix.docker-tag }}
# does not work linux/arm/v5 AND linux/mips64le - composer does not support mips64le or armv5 nor does the php image support them on the alpine variant
- name: Run tests
- env:
- ROUNDCUBEMAIL_TEST_IMAGE: ${{ matrix.docker-tag }}
run: |
set -exu;
for testFile in ${{ join(matrix.test-files, ' ') }};
--- /dev/null
+name: Build & Test
+on:
+ pull_request: {}
+ push:
+ branches:
+ - '!master'
+jobs:
+ build-and-testvariants:
+ name: Build image variants and run tests
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ max-parallel: 10
+ matrix:
+ include:
+ - variant: 'apache'
+ test-files: 'apache-postgres'
+ docker-tag: roundcube/roundcubemail:test-apache
+ - variant: 'fpm'
+ test-files: 'fpm-postgres'
+ docker-tag: roundcube/roundcubemail:test-fpm
+ - variant: 'fpm-alpine'
+ test-files: 'fpm-postgres'
+ docker-tag: roundcube/roundcubemail:test-fpm-alpine
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+ - name: Get docker hub username
+ id: creds
+ run: echo '::set-output name=username::${{ secrets.DOCKER_PULL_USERNAME }}'
+ - name: Login to Docker Hub
+ if: steps.creds.outputs.username != ''
+ uses: docker/login-action@v1
+ with:
+ username: ${{ secrets.DOCKER_PULL_USERNAME }}
+ password: ${{ secrets.DOCKER_PULL_PASSWORD }}
+
+ - name: Build image for "${{ matrix.variant }}"
+ run: cd ${{ matrix.variant }} && docker buildx build ./ -t ${{ matrix.docker-tag }}
+ - name: Run tests
+ env:
+ ROUNDCUBEMAIL_TEST_IMAGE: ${{ matrix.docker-tag }}
+ run: |
+ set -exu;
+ for testFile in ${{ join(matrix.test-files, ' ') }};
+ do
+ docker-compose -f ./tests/docker-compose.test-${testFile}.yml \
+ up --exit-code-from=sut --abort-on-container-exit
+ done
+
+
services:
roundcubemail:
- image: roundcube/roundcubemail:1.6.0-apache
+ image: ${ROUNDCUBEMAIL_TEST_IMAGE:-roundcube/roundcubemail:latest-apache}
healthcheck:
# To make it obvious in logs "ping=ping" is added
test: ["CMD", "curl", "--fail", "http://localhost/?ping=ping"]
services:
roundcubemail-fpm:
- image: roundcube/roundcubemail:1.6.0-fpm
+ image: ${ROUNDCUBEMAIL_TEST_IMAGE:-roundcube/roundcubemail:latest-fpm}
healthcheck:
# Check until the FPM port is in in the LISTEN list
# test: ["CMD-SHELL", "netstat -an | grep -q -F \":9000\""]
roundcube_test_net:
volumes:
- www-vol:
\ No newline at end of file
+ www-vol: