diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..720a4894 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,96 @@ +name: CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-20.04 + continue-on-error: ${{ matrix.experimental }} + + strategy: + matrix: + include: + - mediawiki_version: '1.35' + semantic_mediawiki_version: 3.2.3 + mermaid_version: 3.0.1 + coverage: true + experimental: false + - mediawiki_version: '1.36' + semantic_mediawiki_version: dev-master + mermaid_version: dev-master + coverage: false + experimental: true + + container: + image: gesinn/docker-mediawiki:${{ matrix.mediawiki_version }} + + env: + EXT_NAME: SemanticResultFormats + MW_INSTALL_PATH: /var/www/html + MW_DB_PATH: /var/www/data + MW_EXT_PATH: /var/www/html/extensions + + steps: + - name: Install SemanticMediaWiki + run: | + COMPOSER=composer.local.json composer require --update-with-dependencies --working-dir ${{ env.MW_INSTALL_PATH }} mediawiki/semantic-media-wiki ${{ matrix.semantic_mediawiki_version }} + composer update --working-dir ${{ env.MW_INSTALL_PATH }} + echo "wfLoadExtension( 'SemanticMediaWiki' );" >> ${{ env.MW_INSTALL_PATH }}/LocalSettings.php + echo "enableSemantics( 'localhost' );" >> ${{ env.MW_INSTALL_PATH }}/LocalSettings.php + tail -n5 ${{ env.MW_INSTALL_PATH }}/LocalSettings.php + php ${{ env.MW_INSTALL_PATH }}/maintenance/update.php --skip-external-dependencies --quick + + - name: Install Mermaid + run: | + COMPOSER=composer.local.json composer require --update-with-dependencies --working-dir ${{ env.MW_INSTALL_PATH }} mediawiki/mermaid ${{ matrix.mermaid_version }} + composer update --working-dir ${{ env.MW_INSTALL_PATH }} + echo "wfLoadExtension( 'Mermaid' );" >> ${{ env.MW_INSTALL_PATH }}/LocalSettings.php + tail -n5 ${{ env.MW_INSTALL_PATH }}/LocalSettings.php + + - name: Checkout Extension + uses: actions/checkout@v2 + with: + path: ${{ env.EXT_NAME }} + + # Setting actions/checkout@v2 path to env.MW_EXT_PATH fails with "Repository path '/var/www/html/extensions' is not under ..." + # See also open PR https://github.com/actions/checkout/pull/388 + - name: Move Extension + run: | + mkdir -p ${{ env.MW_EXT_PATH }} + mv ${{ env.EXT_NAME }} ${{ env.MW_EXT_PATH }} + + - name: Install SemanticResultFormats + run: | + COMPOSER=composer.local.json composer require --no-update --working-dir ${{ env.MW_INSTALL_PATH }} mediawiki/semantic-result-formats @dev + COMPOSER=composer.local.json composer config repositories.semantic-result-formats '{"type": "path", "url": "extensions/SemanticResultFormats"}' --working-dir ${{ env.MW_INSTALL_PATH }} + composer update --working-dir ${{ env.MW_INSTALL_PATH }} + echo "wfLoadExtension( '${{ env.EXT_NAME }}' );" >> ${{ env.MW_INSTALL_PATH }}/LocalSettings.php + tail -n5 ${{ env.MW_INSTALL_PATH }}/LocalSettings.php + php ${{ env.MW_INSTALL_PATH }}/maintenance/update.php --quick + + - name: Run Tests + run: > + php ${{ env.MW_INSTALL_PATH }}/tests/phpunit/phpunit.php + --configuration ${{ env.MW_EXT_PATH }}/${{ env.EXT_NAME }} + --testdox + if: matrix.coverage == false + + - name: Run Tests With Coverage + run: > + php ${{ env.MW_INSTALL_PATH }}/tests/phpunit/phpunit.php + --configuration ${{ env.MW_EXT_PATH }}/${{ env.EXT_NAME }} + --testdox + --coverage-clover ${{ env.MW_INSTALL_PATH }}/docs/coverage.xml + if: matrix.coverage == true + + - name: Upload code coverage + uses: codecov/codecov-action@v2 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: ${{ env.MW_INSTALL_PATH }}/docs/coverage.xml + if: matrix.coverage == true diff --git a/composer.json b/composer.json index 34164c93..d688dd18 100644 --- a/composer.json +++ b/composer.json @@ -88,8 +88,8 @@ "test-coverage": [ "@phpunit-coverage" ], - "phpunit": "php ../../tests/phpunit/phpunit.php -c phpunit.xml.dist", - "phpunit-coverage": "php ../../tests/phpunit/phpunit.php -c phpunit.xml.dist --testdox --coverage-text --coverage-html coverage/php --coverage-clover coverage/php/coverage.xml", + "phpunit": "php ${MW_INSTALL_PATH:-../..}/tests/phpunit/phpunit.php -c phpunit.xml.dist", + "phpunit-coverage": "php ${MW_INSTALL_PATH:-../..}/tests/phpunit/phpunit.php -c phpunit.xml.dist --testdox --coverage-text --coverage-html coverage/php --coverage-clover coverage/php/coverage.xml", "integration": "composer phpunit -- --testsuite=semantic-result-formats-integration", "lint": [ "@parallel-lint",