diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index c9924b99c..17c1c6bd5 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -11,5 +11,6 @@ on: jobs: builds: uses: ./.github/workflows/shared_workflow.yml + secrets: inherit with: branch: master diff --git a/.github/workflows/nighlty-ci-release-branch.yml b/.github/workflows/nighlty-ci-release-branch.yml index fe33f2327..3750d8272 100644 --- a/.github/workflows/nighlty-ci-release-branch.yml +++ b/.github/workflows/nighlty-ci-release-branch.yml @@ -7,5 +7,6 @@ on: jobs: builds: uses: ./.github/workflows/shared_workflow.yml + secrets: inherit with: branch: release/2.4 diff --git a/.github/workflows/shared_workflow.yml b/.github/workflows/shared_workflow.yml index 42d358bd9..b7c600151 100644 --- a/.github/workflows/shared_workflow.yml +++ b/.github/workflows/shared_workflow.yml @@ -11,162 +11,162 @@ concurrency: cancel-in-progress: true jobs: -# unittest-linting: -# name: unit tests and linting -# strategy: -# matrix: -# nextcloudVersion: [ stable25, stable26, stable27, master ] -# phpVersion: [ 7.4, 8.0, 8.1 ] -# exclude: -# - nextcloudVersion: stable26 -# phpVersion: 7.4 -# - nextcloudVersion: stable27 -# phpVersion: 7.4 -# - nextcloudVersion: master -# phpVersion: 7.4 -# runs-on: ubuntu-20.04 -# steps: -# - name: Checkout -# uses: actions/checkout@v3 -# with: -# ref: ${{ inputs.branch }} -# -# - name: Setup PHP ${{ matrix.phpVersion }} -# uses: shivammathur/setup-php@v2 -# with: -# php-version: ${{ matrix.phpVersion }} -# tools: composer, phpunit -# coverage: xdebug -# extensions: gd, sqlite3 -# -# - name: Get composer cache directory -# id: composer-cache -# run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT -# -# - name: Cache PHP dependencies -# uses: actions/cache@v3 -# with: -# path: ${{ steps.composer-cache.outputs.dir }} -# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} -# restore-keys: ${{ runner.os }}-composer- -# -# - name: Read package.json node and npm engines version -# uses: skjnldsv/read-package-engines-version-actions@v2 -# id: versions -# with: -# fallbackNode: '^14' -# fallbackNpm: '^7' -# -# - name: Setup NodeJS ${{ steps.versions.outputs.nodeVersion }} -# uses: actions/setup-node@v3 -# with: -# node-version: ${{ steps.versions.outputs.nodeVersion }} -# cache: 'npm' -# -# - name: Setup NPM ${{ steps.versions.outputs.npmVersion }} -# run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" -# -# - name: Install PHP Dependencies -# run: | -# composer install --no-progress --prefer-dist --optimize-autoloader -# git clone --depth 1 https://github.com/nextcloud/server.git -b ${{ matrix.nextcloudVersion }} -# cd server && git submodule update --init -# ./occ maintenance:install --admin-pass=admin -# -# - name: PHP code analysis -# run: | -# if [[ ${{ matrix.nextcloudVersion }} != "master" ]] -# then -# make phpstan -# fi -# -# - name: PHP code style -# run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 ) -# -# - name: Install NPM Dependencies -# run: npm install -# -# - name: JS Lint -# run: npm run lint -# -# - name: Style Lint -# run: npm run stylelint -# -# - name: PHP & Vue Unit Tests -# run: | -# git clone --depth 1 https://github.com/nextcloud/groupfolders.git -b ${{ matrix.nextcloudVersion }} server/apps/groupfolders -# mkdir -p server/apps/integration_openproject -# cp -r `ls -A | grep -v 'server'` server/apps/integration_openproject/ -# cd server -# ./occ a:e groupfolders -# ./occ a:e integration_openproject -# cd apps/integration_openproject -# make phpunit -# make jsunit -# -# - name: JS Code Coverage Summary Report -# if: ${{ github.event_name == 'pull_request' && matrix.nextcloudVersion == 'master' && matrix.phpVersion == '8.1' }} -# uses: romeovs/lcov-reporter-action@v0.3.1 -# with: -# github-token: ${{ secrets.GITHUB_TOKEN }} -# lcov-file: ./server/apps/integration_openproject/coverage/jest/lcov.info -# delete-old-comments: true -# title: "JS Code Coverage" -# -# - name: Setup .NET Core # this is required to execute Convert PHP cobertura coverage to lcov step -# if: ${{ github.event_name == 'pull_request' && matrix.nextcloudVersion == 'master' && matrix.phpVersion == '8.1' }} -# uses: actions/setup-dotnet@v3 -# with: -# dotnet-version: 6.0.101 -# dotnet-quality: 'ga' -# -# - name: Convert PHP cobertura coverage to lcov -# if: ${{ github.event_name == 'pull_request' && matrix.nextcloudVersion == 'master' && matrix.phpVersion == '8.1' }} -# uses: danielpalme/ReportGenerator-GitHub-Action@5.1.23 -# with: -# reports: './server/apps/integration_openproject/coverage/php/cobertura.xml' # REQUIRED # The coverage reports that should be parsed (separated by semicolon). Globbing is supported. -# targetdir: './server/apps/integration_openproject/coverage/php' # REQUIRED # The directory where the generated report should be saved. -# reporttypes: 'lcov' # The output formats and scope (separated by semicolon) Values: Badges, Clover, Cobertura, CsvSummary, Html, HtmlChart, HtmlInline, HtmlInline_AzurePipelines, HtmlInline_AzurePipelines_Dark, HtmlSummary, JsonSummary, Latex, LatexSummary, lcov, MarkdownSummary, MHtml, PngChart, SonarQube, TeamCitySummary, TextSummary, Xml, XmlSummary -# sourcedirs: '' # Optional directories which contain the corresponding source code (separated by semicolon). The source directories are used if coverage report contains classes without path information. -# historydir: '' # Optional directory for storing persistent coverage information. Can be used in future reports to show coverage evolution. -# plugins: '' # Optional plugin files for custom reports or custom history storage (separated by semicolon). -# assemblyfilters: '+*' # Optional list of assemblies that should be included or excluded in the report. Exclusion filters take precedence over inclusion filters. Wildcards are allowed. -# classfilters: '+*' # Optional list of classes that should be included or excluded in the report. Exclusion filters take precedence over inclusion filters. Wildcards are allowed. -# filefilters: '+*' # Optional list of files that should be included or excluded in the report. Exclusion filters take precedence over inclusion filters. Wildcards are allowed. -# verbosity: 'Verbose' # The verbosity level of the log messages. Values: Verbose, Info, Warning, Error, Off -# title: '' # Optional title. -# tag: '${{ github.run_number }}_${{ github.run_id }}' # Optional tag or build version. -# customSettings: '' # Optional custom settings (separated by semicolon). See: https://github.com/danielpalme/ReportGenerator/wiki/Settings. -# toolpath: 'reportgeneratortool' # Default directory for installing the dotnet tool. -# -# - name: PHP Code Coverage Summary Report -# if: ${{ github.event_name == 'pull_request' && matrix.nextcloudVersion == 'master' && matrix.phpVersion == '8.1' }} -# uses: romeovs/lcov-reporter-action@v0.3.1 -# with: -# github-token: ${{ secrets.GITHUB_TOKEN }} -# lcov-file: ./server/apps/integration_openproject/coverage/php/lcov.info -# delete-old-comments: true -# title: "PHP Code Coverage" -# -# - name: JS coverage check -# if: ${{ github.event_name == 'pull_request' && matrix.nextcloudVersion == 'master' && matrix.phpVersion == '8.1' }} -# uses: VeryGoodOpenSource/very_good_coverage@v2 -# with: -# min_coverage: '59' -# path: './server/apps/integration_openproject/coverage/jest/lcov.info' -# -# - name: PHP coverage check -# if: ${{ github.event_name == 'pull_request' && matrix.nextcloudVersion == 'master' && matrix.phpVersion == '8.1' }} -# uses: VeryGoodOpenSource/very_good_coverage@v2 -# with: -# min_coverage: '56' -# path: './server/apps/integration_openproject/coverage/php/lcov.info' + unittest-linting: + name: unit tests and linting + strategy: + matrix: + nextcloudVersion: [ stable25, stable26, stable27, stable28 ] + phpVersion: [ 7.4, 8.0, 8.1 ] + exclude: + - nextcloudVersion: stable26 + phpVersion: 7.4 + - nextcloudVersion: stable27 + phpVersion: 7.4 + - nextcloudVersion: stable28 + phpVersion: 7.4 + runs-on: ubuntu-20.04 + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ inputs.branch }} + + - name: Setup PHP ${{ matrix.phpVersion }} + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.phpVersion }} + tools: composer, phpunit + coverage: xdebug + extensions: gd, sqlite3 + + - name: Get composer cache directory + id: composer-cache + run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + + - name: Cache PHP dependencies + uses: actions/cache@v3 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: ${{ runner.os }}-composer- + + - name: Read package.json node and npm engines version + uses: skjnldsv/read-package-engines-version-actions@v2 + id: versions + with: + fallbackNode: '^14' + fallbackNpm: '^7' + + - name: Setup NodeJS ${{ steps.versions.outputs.nodeVersion }} + uses: actions/setup-node@v3 + with: + node-version: ${{ steps.versions.outputs.nodeVersion }} + cache: 'npm' + + - name: Setup NPM ${{ steps.versions.outputs.npmVersion }} + run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" + + - name: Install PHP Dependencies + run: | + composer install --no-progress --prefer-dist --optimize-autoloader + git clone --depth 1 https://github.com/nextcloud/server.git -b ${{ matrix.nextcloudVersion }} + cd server && git submodule update --init + ./occ maintenance:install --admin-pass=admin + + - name: PHP code analysis + run: | + if [[ ${{ matrix.nextcloudVersion }} != "master" ]] + then + make phpstan + fi + + - name: PHP code style + run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 ) + + - name: Install NPM Dependencies + run: npm install + + - name: JS Lint + run: npm run lint + + - name: Style Lint + run: npm run stylelint + + - name: PHP & Vue Unit Tests + run: | + git clone --depth 1 https://github.com/nextcloud/groupfolders.git -b ${{ matrix.nextcloudVersion }} server/apps/groupfolders + mkdir -p server/apps/integration_openproject + cp -r `ls -A | grep -v 'server'` server/apps/integration_openproject/ + cd server + ./occ a:e groupfolders + ./occ a:e integration_openproject + cd apps/integration_openproject + make phpunit + make jsunit + + - name: JS Code Coverage Summary Report + if: ${{ github.event_name == 'pull_request' && matrix.nextcloudVersion == 'master' && matrix.phpVersion == '8.1' }} + uses: romeovs/lcov-reporter-action@v0.3.1 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + lcov-file: ./server/apps/integration_openproject/coverage/jest/lcov.info + delete-old-comments: true + title: "JS Code Coverage" + + - name: Setup .NET Core # this is required to execute Convert PHP cobertura coverage to lcov step + if: ${{ github.event_name == 'pull_request' && matrix.nextcloudVersion == 'master' && matrix.phpVersion == '8.1' }} + uses: actions/setup-dotnet@v3 + with: + dotnet-version: 6.0.101 + dotnet-quality: 'ga' + + - name: Convert PHP cobertura coverage to lcov + if: ${{ github.event_name == 'pull_request' && matrix.nextcloudVersion == 'master' && matrix.phpVersion == '8.1' }} + uses: danielpalme/ReportGenerator-GitHub-Action@5.1.23 + with: + reports: './server/apps/integration_openproject/coverage/php/cobertura.xml' # REQUIRED # The coverage reports that should be parsed (separated by semicolon). Globbing is supported. + targetdir: './server/apps/integration_openproject/coverage/php' # REQUIRED # The directory where the generated report should be saved. + reporttypes: 'lcov' # The output formats and scope (separated by semicolon) Values: Badges, Clover, Cobertura, CsvSummary, Html, HtmlChart, HtmlInline, HtmlInline_AzurePipelines, HtmlInline_AzurePipelines_Dark, HtmlSummary, JsonSummary, Latex, LatexSummary, lcov, MarkdownSummary, MHtml, PngChart, SonarQube, TeamCitySummary, TextSummary, Xml, XmlSummary + sourcedirs: '' # Optional directories which contain the corresponding source code (separated by semicolon). The source directories are used if coverage report contains classes without path information. + historydir: '' # Optional directory for storing persistent coverage information. Can be used in future reports to show coverage evolution. + plugins: '' # Optional plugin files for custom reports or custom history storage (separated by semicolon). + assemblyfilters: '+*' # Optional list of assemblies that should be included or excluded in the report. Exclusion filters take precedence over inclusion filters. Wildcards are allowed. + classfilters: '+*' # Optional list of classes that should be included or excluded in the report. Exclusion filters take precedence over inclusion filters. Wildcards are allowed. + filefilters: '+*' # Optional list of files that should be included or excluded in the report. Exclusion filters take precedence over inclusion filters. Wildcards are allowed. + verbosity: 'Verbose' # The verbosity level of the log messages. Values: Verbose, Info, Warning, Error, Off + title: '' # Optional title. + tag: '${{ github.run_number }}_${{ github.run_id }}' # Optional tag or build version. + customSettings: '' # Optional custom settings (separated by semicolon). See: https://github.com/danielpalme/ReportGenerator/wiki/Settings. + toolpath: 'reportgeneratortool' # Default directory for installing the dotnet tool. + + - name: PHP Code Coverage Summary Report + if: ${{ github.event_name == 'pull_request' && matrix.nextcloudVersion == 'master' && matrix.phpVersion == '8.1' }} + uses: romeovs/lcov-reporter-action@v0.3.1 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + lcov-file: ./server/apps/integration_openproject/coverage/php/lcov.info + delete-old-comments: true + title: "PHP Code Coverage" + + - name: JS coverage check + if: ${{ github.event_name == 'pull_request' && matrix.nextcloudVersion == 'master' && matrix.phpVersion == '8.1' }} + uses: VeryGoodOpenSource/very_good_coverage@v2 + with: + min_coverage: '59' + path: './server/apps/integration_openproject/coverage/jest/lcov.info' + + - name: PHP coverage check + if: ${{ github.event_name == 'pull_request' && matrix.nextcloudVersion == 'master' && matrix.phpVersion == '8.1' }} + uses: VeryGoodOpenSource/very_good_coverage@v2 + with: + min_coverage: '56' + path: './server/apps/integration_openproject/coverage/php/lcov.info' api-tests: name: API tests strategy: matrix: - nextcloudVersion: [ stable25, stable26, stable27, master ] + nextcloudVersion: [ stable25, stable26, stable27, stable28 ] phpVersionMajor: [ 7, 8 ] phpVersionMinor: [ 4, 1 ] database: [pgsql, mysql] @@ -187,7 +187,7 @@ jobs: phpVersionMinor: 1 - phpVersionMajor: 8 phpVersionMinor: 4 - - nextcloudVersion: master + - nextcloudVersion: stable28 phpVersionMajor: 7 - phpVersionMajor: 7 phpVersionMinor: 0 @@ -252,7 +252,7 @@ jobs: uses: actions/checkout@v3 with: path: integration_openproject - ref: master + ref: ${{ inputs.branch }} - name: Checkout activity app uses: actions/checkout@v3