Github action support #2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: test | |
on: | |
push: | |
branches: | |
- '**' | |
pull_request: | |
branches: | |
- main | |
schedule: | |
- cron: '0 1 1 * *' | |
env: | |
APPLICATION: '${{ github.event.repository.name }}' | |
DBUSERNAME: omp-ci | |
DBPASSWORD: omp-ci | |
DBNAME: omp-ci | |
DBHOST: 127.0.0.1 | |
DATABASEDUMP: database.sql.gz | |
FILESDIR: files | |
FILESDUMP: files.tar.gz | |
CYPRESS_BASE_URL: http://127.0.0.1:8000 | |
CYPRESS_DBNAME: omp-ci | |
CYPRESS_DBUSERNAME: omp-ci | |
CYPRESS_DBPASSWORD: omp-ci | |
CYPRESS_DBHOST: 127.0.0.1 | |
CYPRESS_FILESDIR: files | |
jobs: | |
install: | |
name: ${{matrix.pkp-application}}(BRANCH=${{matrix.pkp-branch}} ;PHP=${{matrix.php-versions}}; DB=${{matrix.dbs}}) | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
php-versions: [ '8.1','8.2' ] | |
dbs: [ 'pgsql', 'mysql','mariadb'] | |
pkp-application: ['${{ github.event.repository.name }}' ] | |
pkp-branch: [ '${{ github.head_ref || github.ref_name }}' ] | |
env: | |
DBTYPE: ${{matrix.dbs == 'pgsql' && 'PostgreSQL' || 'MySQLi'}} | |
CYPRESS_DBTYPE: ${{matrix.dbs=='pgsql' && 'PostgreSQL' || 'MySQLi'}} | |
TEST: ${{matrix.dbs}} | |
steps: | |
- name: install postgres server | |
if: ${{matrix.dbs == 'pgsql'}} | |
run: | | |
sudo apt install postgresql postgresql-contrib | |
sudo dpkg-reconfigure locales | |
sudo sed -i -E 's\peer|scram-sha-256\trust\g' /etc/postgresql/14/main/pg_hba.conf | |
- name: Install server | |
if: ${{matrix.dbs == 'mysql'}} | |
run: | | |
sudo apt install -q -y mysql-server mysql-client | |
sudo service mysql start | |
sudo mysqladmin -u root -p'root' password '' | |
- name: Install mariadb server | |
if: ${{matrix.dbs == 'mariadb'}} | |
uses: ankane/setup-mariadb@v1 | |
with: | |
mariadb-version: "10.11" | |
- name: Install ${{matrix.pkp-application}} | |
run: | | |
git clone -b ${{matrix.pkp-branch}} https://github.com/${{github.repository}} ~/${{matrix.pkp-application}} | |
cd ~/${{matrix.pkp-application}} | |
git submodule update --init --recursive | |
- name: Setup PHP, extensions and composer | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{matrix.php-versions}} | |
extensions: bcmath, bz2, common, cli, curl, fpm, gd, intl, mbstring, mysql,mysqlnd, mysqli, opcache, pdo_mysql, pgsql, json,soap, xml, zip | |
coverage: xdebug | |
env: | |
update: true | |
- name: Install composer dependencies | |
run: | | |
cd ~/${{matrix.pkp-application}} | |
lib/pkp/tools/travis/install-composer-dependencies.sh | |
npm i g -npm && npm i @vue/cli-service && npm i cypress && npm install && npm run build | |
- name: Create additional directories | |
run: | | |
mkdir -p $HOME/bin | |
- name: Prepare tests | |
run: | | |
cd ~/${{matrix.pkp-application}} | |
./lib/pkp/tools/travis/prepare-webserver.sh | |
./lib/pkp/tools/travis/prepare-tests.sh | |
- name: Run PHP web server | |
run: | | |
php -S 127.0.0.1:8000 -t . >& access.log & | |
- name: Run cypress data tests | |
run: | | |
cd ~/${{matrix.pkp-application}} | |
npx cypress run --headless --browser chrome --config '{"specPattern":["cypress/tests/data/**/*.cy.js"]}' | |
- name: Run cypress pkp-lib integration tests | |
run: | | |
cd ~/${{matrix.pkp-application}} | |
npx cypress run --headless --browser chrome --config '{"specPattern":["lib/pkp/cypress/tests/integration/**/*.cy.js"]}' | |
- name: Run cypress ${{matrix.pkp-application}} integration tests | |
run: | | |
cd ~/${{matrix.pkp-application}} | |
if [ -d "cypress/tests/integration" ]; then | |
npx cypress run --headless --browser chrome --config '{"specPattern":["cypress/tests/integration/**/*.cy.js"]}' | |
fi | |
- name: Run ${{matrix.pkp-application}} unit tests | |
run: | | |
cd ~/${{matrix.pkp-application}} | |
./lib/pkp/tools/travis/dump-database.sh | |
./lib/pkp/tools/runAllTests.sh -CcPpdR | |
- uses: actions/upload-artifact@v3 | |
if: failure() | |
with: | |
name: Create cypess screenshots as artifacts | |
path: $HOME/${{ matrix.pkp-application}}/cypress/screenshots | |
if-no-files-found: ignore | |
- name: Show web access log | |
if: ${{ failure() }} | |
run: | | |
cd ~/${{ matrix.pkp-application }} | |
cat access.log | |