summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Molakvoæ <skjnldsv@users.noreply.github.com>2020-02-28 11:32:36 +0100
committerGitHub <noreply@github.com>2020-02-28 11:32:36 +0100
commite18a849e949f5fbc11a2fb0b0ded66a42519697f (patch)
tree0029f874ff2d6c49448416e0eaab223f767cdffd
parent84b0ac48d511c6966e7d248847ab711289e272a8 (diff)
parent0da2b95fc89a0bc4e75df2874f12ff4efe0003fc (diff)
Merge pull request #1487 from nextcloud/github-actions-phpunit
GitHub actions phpunit
-rw-r--r--.github/workflows/lint.yml69
-rw-r--r--.github/workflows/node.yml34
-rw-r--r--.github/workflows/phpunit.yml218
-rw-r--r--.travis.yml120
4 files changed, 294 insertions, 147 deletions
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 3e50644f..229fb498 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -1,36 +1,51 @@
name: Lint
-on: pull_request
+
+on:
+ pull_request:
+ push:
+ branches:
+ - master
+ - stable*
jobs:
- php-linters:
+ php:
runs-on: ubuntu-latest
+
strategy:
matrix:
- php-versions: ['7.2', '7.3', 7.4]
- name: php${{ matrix.php-versions }} lint
+ php-versions: ['7.2', '7.3', '7.4']
+
+ name: php${{ matrix.php-versions }}
steps:
- - name: Checkout
- uses: actions/checkout@master
- - name: Set up php${{ matrix.php-versions }}
- uses: shivammathur/setup-php@master
- with:
- php-version: ${{ matrix.php-versions }}
- coverage: none
- - name: Lint
- run: composer run lint
-
- node-linters:
+ - uses: actions/checkout@v2
+
+ - name: Set up php ${{ matrix.php-versions }}
+ uses: shivammathur/setup-php@v1
+ with:
+ php-version: ${{ matrix.php-versions }}
+ coverage: none
+
+ - name: Lint
+ run: composer run lint
+
+ node:
runs-on: ubuntu-latest
- name: ESLint
+
+ strategy:
+ matrix:
+ node-versions: [12.x]
+
+ name: node${{ matrix.node-versions }}
steps:
- - uses: actions/checkout@master
- - name: Set up Node
- uses: actions/setup-node@v1
- with:
- node-version: 12.x
- - name: npm install
- run: npm ci
- - name: eslint
- run: npm run lint
- env:
- CI: true
+ - uses: actions/checkout@v2
+
+ - name: Set up node ${{ matrix.node-versions }}
+ uses: actions/setup-node@v1
+ with:
+ node-versions: ${{ matrix.node-versions }}
+
+ - name: Install dependencies
+ run: npm ci
+
+ - name: Lint
+ run: npm run lint
diff --git a/.github/workflows/node.yml b/.github/workflows/node.yml
new file mode 100644
index 00000000..d5c403df
--- /dev/null
+++ b/.github/workflows/node.yml
@@ -0,0 +1,34 @@
+name: Node
+
+on:
+ pull_request:
+ push:
+ branches:
+ - master
+ - stable*
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ node-versions: [12.x]
+
+ name: node${{ matrix.node-versions }}
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Set up node ${{ matrix.node-versions }}
+ uses: actions/setup-node@v1
+ with:
+ node-versions: ${{ matrix.node-versions }}
+
+ - name: Install dependencies & build
+ run: |
+ npm ci
+ npm run build --if-present
+
+ - name: Check webpack build changes
+ run: |
+ bash -c "[[ ! \"`git status --porcelain `\" ]] || ( echo 'Uncommited changes in webpack build' && git status && exit 1 )"
diff --git a/.github/workflows/phpunit.yml b/.github/workflows/phpunit.yml
new file mode 100644
index 00000000..74d94799
--- /dev/null
+++ b/.github/workflows/phpunit.yml
@@ -0,0 +1,218 @@
+name: PHPUnit
+
+on:
+ pull_request:
+ push:
+ branches:
+ - master
+ - stable*
+
+env:
+ APP_NAME: contacts
+
+jobs:
+ php:
+ runs-on: ubuntu-latest
+
+ strategy:
+ # do not stop on another job's failure
+ fail-fast: false
+ matrix:
+ php-versions: ['7.4']
+ databases: ['sqlite']
+ server-versions: ['master']
+
+ name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
+
+ steps:
+ - name: Checkout server
+ uses: actions/checkout@v2
+ with:
+ repository: nextcloud/server
+ ref: ${{ matrix.server-versions }}
+
+ - name: Checkout submodules
+ shell: bash
+ run: |
+ auth_header="$(git config --local --get http.https://github.com/.extraheader)"
+ git submodule sync --recursive
+ git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
+
+ - name: Checkout app
+ uses: actions/checkout@v2
+ with:
+ path: apps/${{ env.APP_NAME }}
+
+ - name: Set up php ${{ matrix.php-versions }}
+ uses: shivammathur/setup-php@v1
+ with:
+ php-version: ${{ matrix.php-versions }}
+ tools: phpunit
+ extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite
+
+ - name: Set up PHPUnit
+ working-directory: apps/${{ env.APP_NAME }}
+ run: composer i
+
+ - name: Set up Nextcloud
+ env:
+ DB_PORT: 4444
+ run: |
+ mkdir data
+ ./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
+ ./occ app:enable ${{ env.APP_NAME }}
+ php -S localhost:8080 &
+
+ - name: PHPUnit & coverage
+ working-directory: apps/${{ env.APP_NAME }}
+ run: ./vendor/phpunit/phpunit/phpunit --coverage-clover coverage.xml -c phpunit.xml
+
+ - name: PHPUnit integration
+ working-directory: apps/${{ env.APP_NAME }}
+ run: ./vendor/phpunit/phpunit/phpunit -c phpunit.integration.xml
+
+ - name: Upload coverage
+ working-directory: apps/${{ env.APP_NAME }}
+ run: bash <(curl -s https://codecov.io/bash)
+
+ mysql:
+ runs-on: ubuntu-latest
+
+ strategy:
+ # do not stop on another job's failure
+ fail-fast: false
+ matrix:
+ php-versions: ['7.2', '7.3', '7.4']
+ databases: ['mysql']
+ server-versions: ['master']
+
+ name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
+
+ services:
+ mysql:
+ image: mariadb
+ ports:
+ - 4444:3306/tcp
+ env:
+ MYSQL_ROOT_PASSWORD: rootpassword
+ options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 5
+
+ steps:
+ - name: Checkout server
+ uses: actions/checkout@v2
+ with:
+ repository: nextcloud/server
+ ref: ${{ matrix.server-versions }}
+
+ - name: Checkout submodules
+ shell: bash
+ run: |
+ auth_header="$(git config --local --get http.https://github.com/.extraheader)"
+ git submodule sync --recursive
+ git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
+
+ - name: Checkout app
+ uses: actions/checkout@v2
+ with:
+ path: apps/${{ env.APP_NAME }}
+
+ - name: Set up php ${{ matrix.php-versions }}
+ uses: shivammathur/setup-php@v1
+ with:
+ php-version: ${{ matrix.php-versions }}
+ tools: phpunit
+ extensions: mbstring, iconv, fileinfo, intl, mysql, pdo_mysql
+ coverage: none
+
+ - name: Set up PHPUnit
+ working-directory: apps/${{ env.APP_NAME }}
+ run: composer i
+
+ - name: Set up Nextcloud
+ env:
+ DB_PORT: 4444
+ run: |
+ mkdir data
+ ./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
+ ./occ app:enable ${{ env.APP_NAME }}
+ php -S localhost:8080 &
+
+ - name: PHPUnit
+ working-directory: apps/${{ env.APP_NAME }}
+ run: ./vendor/phpunit/phpunit/phpunit -c phpunit.xml
+
+ - name: PHPUnit integration
+ working-directory: apps/${{ env.APP_NAME }}
+ run: ./vendor/phpunit/phpunit/phpunit -c phpunit.integration.xml
+
+ pgsql:
+ runs-on: ubuntu-latest
+
+ strategy:
+ # do not stop on another job's failure
+ fail-fast: false
+ matrix:
+ php-versions: ['7.4']
+ databases: ['pgsql']
+ server-versions: ['master']
+
+ name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
+
+ services:
+ postgres:
+ image: postgres
+ ports:
+ - 4444:5432/tcp
+ env:
+ POSTGRES_USER: root
+ POSTGRES_PASSWORD: rootpassword
+ POSTGRES_DB: nextcloud
+ options: --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
+
+ steps:
+ - name: Checkout server
+ uses: actions/checkout@v2
+ with:
+ repository: nextcloud/server
+ ref: ${{ matrix.server-versions }}
+
+ - name: Checkout submodules
+ shell: bash
+ run: |
+ auth_header="$(git config --local --get http.https://github.com/.extraheader)"
+ git submodule sync --recursive
+ git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
+
+ - name: Checkout app
+ uses: actions/checkout@v2
+ with:
+ path: apps/${{ env.APP_NAME }}
+
+ - name: Set up php ${{ matrix.php-versions }}
+ uses: shivammathur/setup-php@v1
+ with:
+ php-version: ${{ matrix.php-versions }}
+ tools: phpunit
+ extensions: mbstring, iconv, fileinfo, intl, pgsql, pdo_pgsql
+ coverage: none
+
+ - name: Set up PHPUnit
+ working-directory: apps/${{ env.APP_NAME }}
+ run: composer i
+
+ - name: Set up Nextcloud
+ env:
+ DB_PORT: 4444
+ run: |
+ mkdir data
+ ./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
+ ./occ app:enable ${{ env.APP_NAME }}
+ php -S localhost:8080 &
+
+ - name: PHPUnit
+ working-directory: apps/${{ env.APP_NAME }}
+ run: ./vendor/phpunit/phpunit/phpunit -c phpunit.xml
+
+ - name: PHPUnit integration
+ working-directory: apps/${{ env.APP_NAME }}
+ run: ./vendor/phpunit/phpunit/phpunit -c phpunit.integration.xml
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index c5a9c417..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,120 +0,0 @@
-sudo: required
-dist: trusty
-language: php
-php:
- - 7.2
- - 7.3
-
-# Server requires PostgreSQL >= 9.5
-addons:
- postgresql: "9.5"
- apt:
- packages:
- - mysql-server-5.6
- - mysql-client-core-5.6
- - mysql-client-5.6
- - php5-pgsql
- - libxml2-utils
-
-services:
- - postgresql
-
-env:
- global:
- - CORE_BRANCH=master
- - TEST_JS=FALSE
- - PHP_COVERAGE=FALSE
- matrix:
- - DB=sqlite
-
-branches:
- only:
- - master
- - /^stable\d+(\.\d+)?$/
- - /^v\d++(\.\d+)?+(\.\d+)?+(\.\d+)?$/
-
-matrix:
- include:
- - php: 7.2
- env: "DB=mysql CORE_BRANCH=master"
- - php: 7.3
- env: "DB=mysql CORE_BRANCH=master TEST_JS=TRUE PHP_COVERAGE=TRUE"
- - php: 7.2
- env: "DB=pgsql CORE_BRANCH=master"
- - php: 7.3
- env: "DB=pgsql CORE_BRANCH=master"
- fast_finish: true
-
-cache:
- directories:
- - "$HOME/.composer/cache/files"
- - "$HOME/.npm"
-
-before_install:
- - php --info
-
- # Set up DB
- - if [[ "$DB" == 'pgsql' ]]; then createuser -U travis -s oc_autotest; fi
- - if [[ "$DB" == 'mysql' ]]; then mysql -u root -e 'create database oc_autotest;'; fi
- - if [[ "$DB" == 'mysql' ]]; then mysql -u root -e "CREATE USER 'oc_autotest'@'localhost' IDENTIFIED BY '';"; fi
- - if [[ "$DB" == 'mysql' ]]; then mysql -u root -e "GRANT ALL ON oc_autotest.* TO 'oc_autotest'@'localhost';"; fi
- - composer self-update
- - make install-composer-deps-dev
- - cd ..
- - git clone https://github.com/nextcloud/server.git --recursive --depth 1 -b $CORE_BRANCH core
- - mv contacts core/apps/
-
-before_script:
- # Set up core
- - php -f core/occ maintenance:install --database-name oc_autotest --database-user oc_autotest --admin-user admin --admin-pass admin --database $DB --database-pass=''
-
- # Set up app
- - php -f core/occ app:enable contacts
-
- # Enable app twice to check occ errors of registered commands
- - php -f core/occ app:enable contacts
- - cd core/apps/contacts
-
- # Run JS tests
- - npm install -g npm@latest
- - make dev-setup
-
- # XDebug is only needed if we report coverage -> speeds up other builds
- - if [[ "$PHP_COVERAGE" = "FALSE" ]];
- then phpenv config-rm xdebug.ini;
- fi
-
-script:
- # Check info.xml schema validity
- - wget https://apps.nextcloud.com/schema/apps/info.xsd
- - xmllint appinfo/info.xml --schema info.xsd --noout
- - rm info.xsd
-
- # Check PHP syntax errors
- - find . -name \*.php -not -path './vendor/*' -exec php -l "{}" \;
-
- # Run server's app code checker
- - php ../../occ app:check-code contacts
-
- # Run JS tests
- - if [[ "$TEST_JS" = "TRUE" ]];
- then make test;
- fi
-
- # Test JS compilation
- - make build-js-production
-
- # Test php
- - make test-php
- - if [[ "$PHP_COVERAGE" = "TRUE" ]];
- then make test-php-coverage;
- else make test-php;
- fi
-
-after_success:
- - if [[ "$PHP_COVERAGE" = "TRUE" ]];
- then bash <(curl -s https://codecov.io/bash);
- fi
-
-after_failure:
- - cat ../../data/nextcloud.log