From d9bde18acca067c4e53746044d96aaebd341105c Mon Sep 17 00:00:00 2001 From: Sean Molenaar Date: Thu, 4 Feb 2021 23:19:05 +0100 Subject: Actions: Upload coverage on main branch Signed-off-by: Sean Molenaar Signed-off-by: Sean Molenaar --- .github/workflows/api-integration-tests.yml | 145 ++++++++++++++++++++++++ .github/workflows/api-php-static-code-check.yml | 42 +++++++ .github/workflows/api-php-tests.yml | 61 ++++++++++ .github/workflows/build-release.yml | 2 +- .github/workflows/frontend-nodejs-tests.yml | 47 ++++++++ .github/workflows/frontend-tests.yml | 47 -------- .github/workflows/integration-tests.yml | 145 ------------------------ .github/workflows/php-tests.yml | 61 ---------- .github/workflows/post-merge-tasks.yml | 52 +++++++++ .github/workflows/release-drafter.yml | 13 --- .github/workflows/static-code-check.yml | 42 ------- 11 files changed, 348 insertions(+), 309 deletions(-) create mode 100644 .github/workflows/api-integration-tests.yml create mode 100644 .github/workflows/api-php-static-code-check.yml create mode 100644 .github/workflows/api-php-tests.yml create mode 100644 .github/workflows/frontend-nodejs-tests.yml delete mode 100644 .github/workflows/frontend-tests.yml delete mode 100644 .github/workflows/integration-tests.yml delete mode 100644 .github/workflows/php-tests.yml create mode 100644 .github/workflows/post-merge-tasks.yml delete mode 100644 .github/workflows/release-drafter.yml delete mode 100644 .github/workflows/static-code-check.yml diff --git a/.github/workflows/api-integration-tests.yml b/.github/workflows/api-integration-tests.yml new file mode 100644 index 000000000..2d98a4776 --- /dev/null +++ b/.github/workflows/api-integration-tests.yml @@ -0,0 +1,145 @@ +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.3', '7.4'] + nextcloud: ['stable20', 'stable21'] + database: ['sqlite', 'pgsql', 'mysql'] + experimental: [false] + include: + - php-versions: 7.4 + nextcloud: pre-release + database: sqlite + experimental: true + - php-versions: 8.0 + 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 }} + extensions: pdo_sqlite,pdo_mysql,pdo_pgsql,gd,zip + coverage: none + + ### 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: Setup problem matchers for PHP + run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" + + - name: Functional tests maintenance + working-directory: ../server + run: | + ./occ migrations:migrate news + ./occ maintenance:repair + + - name: Functional tests explore + working-directory: ../server + run: ./occ news:generate-explore --votes 100 "https://nextcloud.com/blog/feed/" + + - name: Functional tests folder + working-directory: ../server + run: | + ./occ news:folder:add 'admin' 'Something' + ./occ news:folder:list 'admin' | grep 'Something' + + - name: Functional tests feed + working-directory: ../server + run: | + ./occ news:feed:add 'admin' "https://nextcloud.com/blog/feed/" + ./occ news:feed:list 'admin' | grep 'nextcloud\.com' + + - name: Functional tests opml + working-directory: ../server + run: ./occ news:opml:export 'admin' | grep 'nextcloud\.com' + + - name: Functional tests cleanup + working-directory: ../server + run: | + ./occ news:folder:delete 'admin' $(./occ news:folder:list 'admin' | grep 'Something' -1 | head -1 | grep -oE '[0-9]*') + ./occ news:feed:delete 'admin' $(./occ news:feed:list 'admin' | grep 'nextcloud\.com' -1 | head -1 | grep -oE '[0-9]*') + + - 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 diff --git a/.github/workflows/api-php-static-code-check.yml b/.github/workflows/api-php-static-code-check.yml new file mode 100644 index 000000000..0c0d4cab8 --- /dev/null +++ b/.github/workflows/api-php-static-code-check.yml @@ -0,0 +1,42 @@ +name: Static analysis +on: + pull_request +jobs: + static-psalm-analysis: + runs-on: ubuntu-latest + continue-on-error: true + strategy: + matrix: + php-versions: [ '7.4' ] + nextcloud: [ 'stable20', 'stable21' ] + database: [ 'sqlite' ] + name: "Psalm: Nextcloud ${{ matrix.nextcloud }}" + steps: + - name: Checkout + uses: actions/checkout@master + - name: Set up php + uses: shivammathur/setup-php@master + with: + php-version: 7.4 + extensions: pdo_sqlite,pdo_mysql,pdo_pgsql,gd,zip + coverage: none + + - name: Set up server non MySQL + uses: SMillerDev/nextcloud-actions/setup-nextcloud@main + with: + cron: true + version: ${{ matrix.nextcloud }} + database-type: ${{ matrix.database }} + + - name: Install dependencies + run: composer install + + - name: Configure server with app + uses: SMillerDev/nextcloud-actions/setup-nextcloud-app@main + with: + app: 'news' + check-code: false + + - name: Run coding standards check + working-directory: ../server/apps/news + run: ./vendor/bin/psalm \ No newline at end of file diff --git a/.github/workflows/api-php-tests.yml b/.github/workflows/api-php-tests.yml new file mode 100644 index 000000000..fa4d4a9dd --- /dev/null +++ b/.github/workflows/api-php-tests.yml @@ -0,0 +1,61 @@ +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: ['stable21'] + 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 }} + extensions: pdo_sqlite,pdo_mysql,pdo_pgsql,gd,zip + coverage: pcov + + ### Back to normal setup + - name: Set up server non 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: Setup problem matchers for PHPUnit + run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" + + - name: Prep PHP tests + working-directory: ../server/apps/news + run: make php-test-dependencies + - name: PHPCS + working-directory: ../server/apps/news + run: make phpcs + - name: PHPStan + working-directory: ../server/apps/news + run: make phpstan + - name: Unittests + working-directory: ../server/apps/news + run: make unit-test + - name: Upload codecoverage + working-directory: ../server/apps/news + run: bash <(curl -s https://codecov.io/bash) -f build/php-unit.clover diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index 56ae89329..c87f0f5e5 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -15,7 +15,7 @@ jobs: strategy: matrix: php-versions: ['7.4'] - nextcloud: ['stable20'] + nextcloud: ['stable21'] database: ['sqlite'] steps: - name: Checkout diff --git a/.github/workflows/frontend-nodejs-tests.yml b/.github/workflows/frontend-nodejs-tests.yml new file mode 100644 index 000000000..91cab7d8f --- /dev/null +++ b/.github/workflows/frontend-nodejs-tests.yml @@ -0,0 +1,47 @@ +name: Frontend tests +on: + pull_request + +jobs: + php: + runs-on: ubuntu-latest + continue-on-error: ${{ matrix.experimental }} + name: "Frontend: Nextcloud ${{ matrix.nextcloud }} - PHP ${{ matrix.php-versions }} - DB ${{ matrix.database }}" + strategy: + matrix: + php-versions: ['7.4'] + nextcloud: ['stable20'] + 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 }} + extensions: pdo_sqlite,pdo_mysql,pdo_pgsql,gd,zip + coverage: none + + ### Back to normal setup + - name: Set up server non 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: Install frontend requirements + run: sudo apt update && sudo apt install firefox + - name: Run frontend tests + run: cd ../server/apps/news && make js-test diff --git a/.github/workflows/frontend-tests.yml b/.github/workflows/frontend-tests.yml deleted file mode 100644 index 91cab7d8f..000000000 --- a/.github/workflows/frontend-tests.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: Frontend tests -on: - pull_request - -jobs: - php: - runs-on: ubuntu-latest - continue-on-error: ${{ matrix.experimental }} - name: "Frontend: Nextcloud ${{ matrix.nextcloud }} - PHP ${{ matrix.php-versions }} - DB ${{ matrix.database }}" - strategy: - matrix: - php-versions: ['7.4'] - nextcloud: ['stable20'] - 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 }} - extensions: pdo_sqlite,pdo_mysql,pdo_pgsql,gd,zip - coverage: none - - ### Back to normal setup - - name: Set up server non 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: Install frontend requirements - run: sudo apt update && sudo apt install firefox - - name: Run frontend tests - run: cd ../server/apps/news && make js-test diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml deleted file mode 100644 index 5c77e784a..000000000 --- a/.github/workflows/integration-tests.yml +++ /dev/null @@ -1,145 +0,0 @@ -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.3', '7.4'] - nextcloud: ['stable20'] - database: ['sqlite', 'pgsql', 'mysql'] - experimental: [false] - include: - - php-versions: 7.4 - nextcloud: pre-release - database: sqlite - experimental: true - - php-versions: 8.0 - 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 }} - extensions: pdo_sqlite,pdo_mysql,pdo_pgsql,gd,zip - coverage: none - - ### 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: Setup problem matchers for PHP - run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" - - - name: Functional tests maintenance - working-directory: ../server - run: | - ./occ migrations:migrate news - ./occ maintenance:repair - - - name: Functional tests explore - working-directory: ../server - run: ./occ news:generate-explore --votes 100 "https://nextcloud.com/blog/feed/" - - - name: Functional tests folder - working-directory: ../server - run: | - ./occ news:folder:add 'admin' 'Something' - ./occ news:folder:list 'admin' | grep 'Something' - - - name: Functional tests feed - working-directory: ../server - run: | - ./occ news:feed:add 'admin' "https://nextcloud.com/blog/feed/" - ./occ news:feed:list 'admin' | grep 'nextcloud\.com' - - - name: Functional tests opml - working-directory: ../server - run: ./occ news:opml:export 'admin' | grep 'nextcloud\.com' - - - name: Functional tests cleanup - working-directory: ../server - run: | - ./occ news:folder:delete 'admin' $(./occ news:folder:list 'admin' | grep 'Something' -1 | head -1 | grep -oE '[0-9]*') - ./occ news:feed:delete 'admin' $(./occ news:feed:list 'admin' | grep 'nextcloud\.com' -1 | head -1 | grep -oE '[0-9]*') - - - 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 diff --git a/.github/workflows/php-tests.yml b/.github/workflows/php-tests.yml deleted file mode 100644 index e057bbda4..000000000 --- a/.github/workflows/php-tests.yml +++ /dev/null @@ -1,61 +0,0 @@ -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: ['v21.0.0RC1'] - 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 }} - extensions: pdo_sqlite,pdo_mysql,pdo_pgsql,gd,zip - coverage: pcov - - ### Back to normal setup - - name: Set up server non 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: Setup problem matchers for PHPUnit - run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - - - name: Prep PHP tests - working-directory: ../server/apps/news - run: make php-test-dependencies - - name: PHPCS - working-directory: ../server/apps/news - run: make phpcs - - name: PHPStan - working-directory: ../server/apps/news - run: make phpstan - - name: Unittests - working-directory: ../server/apps/news - run: make unit-test - - name: Upload codecoverage - working-directory: ../server/apps/news - run: bash <(curl -s https://codecov.io/bash) -f build/php-unit.clover diff --git a/.github/workflows/post-merge-tasks.yml b/.github/workflows/post-merge-tasks.yml new file mode 100644 index 000000000..f497d790d --- /dev/null +++ b/.github/workflows/post-merge-tasks.yml @@ -0,0 +1,52 @@ +name: Post-merge tasks +on: + push: + branches: + - master +jobs: + update-release-draft: + runs-on: ubuntu-latest + name: "Release Drafter" + steps: + - uses: release-drafter/release-drafter@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + php: + runs-on: ubuntu-latest + continue-on-error: false + name: "Coverage: Nextcloud PHP ${{ matrix.php-versions }}" + strategy: + matrix: + nextcloud: ['stable21'] + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + + ### Back to normal setup + - name: Set up server non MySQL + uses: SMillerDev/nextcloud-actions/setup-nextcloud@main + with: + cron: true + version: ${{ matrix.nextcloud }} + database-type: sqlite + + - 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: Unittests + run: cd ../server/apps/news && make unit-test + - name: Upload codecoverage + run: cd ../server/apps/news && bash <(curl -s https://codecov.io/bash) -f build/php-unit.clover diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml deleted file mode 100644 index 67b555468..000000000 --- a/.github/workflows/release-drafter.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: Release Drafter -on: - push: - branches: - - master - -jobs: - update-release-draft: - runs-on: ubuntu-latest - steps: - - uses: release-drafter/release-drafter@v5 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/static-code-check.yml b/.github/workflows/static-code-check.yml deleted file mode 100644 index 4473057bb..000000000 --- a/.github/workflows/static-code-check.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Static analysis -on: - pull_request -jobs: - static-psalm-analysis: - runs-on: ubuntu-latest - continue-on-error: true - strategy: - matrix: - php-versions: [ '7.4' ] - nextcloud: [ 'stable20', 'v21.0.0RC1' ] - database: [ 'sqlite' ] - name: "Psalm: Nextcloud ${{ matrix.nextcloud }}" - steps: - - name: Checkout - uses: actions/checkout@master - - name: Set up php - uses: shivammathur/setup-php@master - with: - php-version: 7.4 - extensions: pdo_sqlite,pdo_mysql,pdo_pgsql,gd,zip - coverage: none - - - name: Set up server non MySQL - uses: SMillerDev/nextcloud-actions/setup-nextcloud@main - with: - cron: true - version: ${{ matrix.nextcloud }} - database-type: ${{ matrix.database }} - - - name: Install dependencies - run: composer install - - - name: Configure server with app - uses: SMillerDev/nextcloud-actions/setup-nextcloud-app@main - with: - app: 'news' - check-code: false - - - name: Run coding standards check - working-directory: ../server/apps/news - run: ./vendor/bin/psalm \ No newline at end of file -- cgit v1.2.3