Skip to content

Release 23.0.0-beta1 #1577

Release 23.0.0-beta1

Release 23.0.0-beta1 #1577

name: Integration Tests
on:
pull_request
env:
POSTGRES_PASSWORD: nc_test_db
MYSQL_USER: nc_test
MYSQL_PASSWORD: nc_test_db
MYSQL_DATABASE: nc_test
MYSQL_PORT: 3800
jobs:
integration:
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental }}
name: "Integration: Nextcloud ${{ matrix.nextcloud }} - PHP ${{ matrix.php-versions }} - DB ${{ matrix.database }}"
services:
postgres:
image: postgres:14
env:
POSTGRES_PASSWORD: ${{ env.POSTGRES_PASSWORD }}
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432 # Maps tcp port 5432 on service container to the host
strategy:
matrix:
php-versions: ['8.0', '8.1']
nextcloud: ['stable25', 'stable26', 'stable27']
database: ['sqlite', 'pgsql', 'mysql']
experimental: [false]
include:
- php-versions: 8.1
nextcloud: pre-release
database: sqlite
experimental: true
- php-versions: 8.2
nextcloud: pre-release
database: sqlite
experimental: true
- php-versions: 8.2
nextcloud: stable26
database: sqlite
experimental: false
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
extensions: pdo_sqlite,pdo_mysql,pdo_pgsql,gd,zip
coverage: none
- name: Setup BATS & httpie
run: sudo apt-get install -y httpie && npm install -g [email protected]
### MySQL specific setup
- name: Setup mysql
if: matrix.database == 'mysql'
uses: getong/[email protected]
with:
mariadb version: '10.5'
host port: ${{ env.MYSQL_PORT }}
mysql database: ${{ env.MYSQL_DATABASE }}
mysql root password: ${{ env.MYSQL_PASSWORD }}
mysql user: ${{ env.MYSQL_USER }}
mysql password: ${{ env.MYSQL_PASSWORD }}
- name: Set up server MySQL
if: matrix.database == 'mysql'
uses: SMillerDev/nextcloud-actions/setup-nextcloud@main
with:
version: ${{ matrix.nextcloud }}
cron: true
database-type: ${{ matrix.database }}
database-host: 127.0.0.1
database-port: ${{ env.MYSQL_PORT }}
database-name: ${{ env.MYSQL_DATABASE }}
database-user: root
database-password: ${{ env.MYSQL_PASSWORD }}
### Back to normal setup
- name: Set up server non MySQL
if: matrix.database != 'mysql'
uses: SMillerDev/nextcloud-actions/setup-nextcloud@main
with:
version: ${{ matrix.nextcloud }}
cron: true
database-type: ${{ matrix.database }}
database-host: localhost
database-port: 5432
database-name: postgres
database-user: postgres
database-password: ${{ env.POSTGRES_PASSWORD }}
- name: Prime app build
run: make
- name: Configure server with app
uses: SMillerDev/nextcloud-actions/setup-nextcloud-app@main
with:
app: 'news'
check-code: false
force: ${{ matrix.experimental }}
- name: Run API tests
working-directory: ../server
run: |
php -S localhost:8080 &> /tmp/webserver.log &
cd apps/news/tests/test_helper/feeds && php -S localhost:8090 &> /tmp/feedserver.log &
sleep 2
cd ${{ github.workspace }}/../server
bats apps/news/tests/api
# Kill php server
kill %1
kill %2
- name: Functional tests maintenance
working-directory: ../server
run: |
./occ maintenance:repair
- name: Functional tests
working-directory: ../server
run: |
cd apps/news/tests/test_helper/feeds && php -S localhost:8090 &> /tmp/feedserver.log &
sleep 2
cd ${{ github.workspace }}/../server
bats apps/news/tests/command
kill %1
- name: Prep PHP tests
working-directory: ../server/apps/news
run: make php-test-dependencies
- name: Feed tests
working-directory: ../server/apps/news
run: make feed-test