name: Integration Tests on: pull_request: branches: [ main ] permissions: packages: read jobs: Sqlite: runs-on: ubuntu-latest container: image: ghcr.io/kanboard/tests:latest credentials: username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v4 - name: Validate composer.json and composer.lock run: composer validate - name: Install dependencies run: composer install --prefer-dist --no-progress --no-suggest - name: Start Apache run: /etc/init.d/apache2 start - name: Link document root run: | rm -rf /var/www/html ln -s $GITHUB_WORKSPACE /var/www/html cp tests/configs/config.sqlite.php /var/www/html/config.php chown -R www-data:www-data /var/www/html/data ls -l /var/www/html/ - name: Integration tests with Sqlite run: ./vendor/bin/phpunit -c tests/integration.sqlite.xml Sqlite-PHP8: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Validate composer.json and composer.lock run: composer validate - name: Install dependencies run: composer install --prefer-dist --no-progress --no-suggest - name: Refresh APT index run: sudo apt update - name: Install Apache PHP module run: sudo apt install -y libapache2-mod-php - name: Start Apache run: sudo systemctl start apache2 - name: Setup document root run: | sudo rm -rf /var/www/html sudo cp -R $GITHUB_WORKSPACE /var/www/html sudo cp tests/configs/config.sqlite.php /var/www/html/config.php sudo chown -R www-data:www-data /var/www/html/data ls -l /var/www/html/ - name: Integration tests with Sqlite run: ./vendor/bin/phpunit -c tests/integration.sqlite.xml Postgres: runs-on: ubuntu-latest container: image: ghcr.io/kanboard/tests:latest credentials: username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} services: postgres: image: postgres:9.4 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: kanboard ports: - 5432:5432 options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v4 - name: Validate composer.json and composer.lock run: composer validate - name: Install dependencies run: composer install --prefer-dist --no-progress --no-suggest - name: Start Apache run: /etc/init.d/apache2 start - name: Link document root run: | rm -rf /var/www/html ln -s $GITHUB_WORKSPACE /var/www/html cp tests/configs/config.postgres.php /var/www/html/config.php chown -R www-data:www-data /var/www/html/data ls -l /var/www/html/ - name: Integration tests with Postgres run: ./vendor/bin/phpunit -c tests/integration.postgres.xml env: DB_HOSTNAME: postgres DB_PORT: ${{ job.services.postgres.ports[5432] }} Mysql: runs-on: ubuntu-latest container: image: ghcr.io/kanboard/tests:latest credentials: username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} services: mysql: image: mysql:5.7 env: MYSQL_ROOT_PASSWORD: "kanboard" MYSQL_DATABASE: "kanboard" MYSQL_USER: "kanboard" MYSQL_PASSWORD: "kanboard" ports: - 3306:3306 options: >- --health-cmd="mysqladmin ping" --health-interval 10s --health-timeout 5s --health-retries 10 steps: - uses: actions/checkout@v4 - name: Validate composer.json and composer.lock run: composer validate - name: Install dependencies run: composer install --prefer-dist --no-progress --no-suggest - name: Start Apache run: /etc/init.d/apache2 start - name: Link document root run: | rm -rf /var/www/html ln -s $GITHUB_WORKSPACE /var/www/html cp tests/configs/config.mysql.php /var/www/html/config.php chown -R www-data:www-data /var/www/html/data ls -l /var/www/html/ - name: Integration tests with Mysql run: ./vendor/bin/phpunit -c tests/integration.mysql.xml env: DB_HOSTNAME: mysql DB_PORT: ${{ job.services.mysql.ports[3306] }}