summaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
authorSean Molenaar <sean@seanmolenaar.eu>2020-08-31 22:19:35 +0200
committerBenjamin Brahmer <info@b-brahmer.de>2020-09-13 19:02:25 +0200
commit18983f03b84d4d4a4ebbe62a7cf7f22e22807b61 (patch)
treecc15868ce5f6f8cb13825dfbe2a6d34a4e765d5e /.github
parent1f9db32c67f2a0116526e2bc6a06b830ad078db3 (diff)
Test GH actions flow
Signed-off-by: Sean Molenaar <sean@seanmolenaar.eu>
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/integration-tests.yml108
-rw-r--r--.github/workflows/php-tests.yml50
2 files changed, 158 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
+
diff --git a/.github/workflows/php-tests.yml b/.github/workflows/php-tests.yml
new file mode 100644
index 000000000..79a26d437
--- /dev/null
+++ b/.github/workflows/php-tests.yml
@@ -0,0 +1,50 @@
+name: PHP Tests
+on:
+ pull_request
+
+jobs:
+ php:
+ runs-on: ubuntu-latest
+ continue-on-error: ${{ matrix.experimental }}
+ name: "PHP: Nextcloud ${{ matrix.nextcloud }} - PHP ${{ matrix.php-versions }} - DB ${{ matrix.database }}"
+ strategy:
+ matrix:
+ php-versions: ['7.4']
+ nextcloud: ['19']
+ database: ['sqlite']
+ experimental: [false]
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php-versions }}
+
+ ### Back to normal setup
+ - name: Set up server non MySQL
+ if: matrix.database != 'mysql'
+ uses: SMillerDev/nextcloud-actions/setup-nextcloud@main
+ with:
+ cron: true
+ version: ${{ matrix.nextcloud }}
+ database-type: ${{ matrix.database }}
+
+ - 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: Prep PHP tests
+ run: cd ../server/apps/news && make php-test-dependencies
+ - name: PHPCS
+ run: cd ../server/apps/news && make phpcs
+ - name: PHPStan
+ run: cd ../server/apps/news && make phpstan
+ - name: Unittests
+ run: cd ../server/apps/news && make unit-test \ No newline at end of file