diff options
Diffstat (limited to '.github/workflows/integration-tests.yml')
-rw-r--r-- | .github/workflows/integration-tests.yml | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml new file mode 100644 index 000000000..b48d2ac79 --- /dev/null +++ b/.github/workflows/integration-tests.yml @@ -0,0 +1,108 @@ +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 + 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: ['7.2', '7.3', '7.4'] + nextcloud: ['17', '18', '19'] + database: ['sqlite', 'pgsql', 'mysql'] + experimental: [false] + include: + - php-versions: 7.4 + nextcloud: pre-release + database: sqlite + experimental: true + exclude: #unsupported combination + - php-versions: 7.4 + nextcloud: 17 + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + + ### MySQL specific setup + - name: Setup mysql + if: matrix.database == 'mysql' + uses: getong/mariadb-action@v1.1 + with: + 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: true + + - name: Functional tests + run: | + cd ../server + ./occ news:generate-explore --votes 100 "https://nextcloud.com/blog/feed/" + + - name: Prep PHP tests + run: cd ../server/apps/news && make php-test-dependencies + - name: Integration tests + run: cd ../server/apps/news && make integration-test + |