Build please #26
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: hCaptcha CI | |
on: [ push, pull_request ] | |
jobs: | |
cs_and_tests: | |
strategy: | |
matrix: | |
os: [ ubuntu-latest ] | |
php-version: [ '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3' ] | |
env: | |
wp-directory: wordpress | |
wp-plugin-directory: wordpress/wp-content/plugins/hcaptcha-wordpress-plugin | |
DB_HOST: localhost | |
DB_TABLE_PREFIX: wp_ | |
DB_NAME: wp_tests | |
DB_USER: test | |
DB_PASSWORD: test | |
WP_URL: https://test.test | |
WP_DOMAIN: test.test | |
WP_ADMIN_USERNAME: admin | |
WP_ADMIN_PASSWORD: admin | |
WP_ADMIN_EMAIL: [email protected] | |
runs-on: ${{ matrix.os }} | |
name: PHP ${{ matrix.php-version }} on ${{ matrix.os }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
path: ${{ env.wp-plugin-directory }} | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php-version }} | |
extensions: json, mysqli, mbstring, zip | |
- name: Install dependencies with caching | |
uses: kagg-design/composer-install@v2 | |
with: | |
working-directory: ${{ env.wp-plugin-directory }} | |
- name: Run code sniffer | |
working-directory: ${{ env.wp-plugin-directory }} | |
run: composer phpcs | |
- name: Run ESLint | |
working-directory: ${{ env.wp-plugin-directory }} | |
if: ${{ matrix.php-version == '8.3' }} | |
run: | | |
corepack enable | |
yarn set version stable | |
yarn | |
yarn dev | |
yarn lint | |
- name: Install WP CLI | |
run: | | |
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar | |
chmod +x wp-cli.phar | |
mkdir -p wp-cli | |
sudo mv wp-cli.phar wp-cli/wp | |
echo "$GITHUB_WORKSPACE/wp-cli" >> $GITHUB_PATH | |
- name: Start mysql | |
run: | | |
echo '[mysqld]' | sudo tee -a /etc/mysql/my.cnf | |
echo 'default_authentication_plugin=mysql_native_password' | sudo tee -a /etc/mysql/my.cnf | |
sudo systemctl start mysql | |
mysql -e "CREATE USER '${{ env.DB_USER }}'@'${{ env.DB_HOST }}' IDENTIFIED BY '${{ env.DB_PASSWORD }}'" -uroot -proot 2>/dev/null | |
mysql -e "ALTER USER '${{ env.DB_USER }}'@'${{ env.DB_HOST }}' IDENTIFIED WITH mysql_native_password BY '${{ env.DB_PASSWORD }}'" -uroot -proot 2>/dev/null | |
mysql -e "GRANT ALL PRIVILEGES ON *.* TO '${{ env.DB_USER }}'@'${{ env.DB_HOST }}'" -uroot -proot 2>/dev/null | |
mysql -e 'FLUSH PRIVILEGES' -uroot -proot 2>/dev/null | |
- name: Install WP | |
working-directory: ${{ env.wp-directory }} | |
run: | | |
wp core download | |
wp config create --dbname="${{ env.DB_NAME }}" --dbuser="${{ env.DB_USER }}" --dbpass="${{ env.DB_PASSWORD }}" --dbhost="${{ env.DB_HOST }}" --dbprefix="${{ env.DB_TABLE_PREFIX }}" | |
wp db create | |
wp core install --url="${{ env.WP_URL }}" --title="Test" --admin_user="${{ env.WP_ADMIN_USERNAME }}" --admin_password="${{ env.WP_ADMIN_PASSWORD }}" --admin_email="${{ env.WP_ADMIN_EMAIL }}" --skip-email | |
- name: Run unit tests | |
working-directory: ${{ env.wp-plugin-directory }} | |
run: composer unit | |
- name: Install plugins | |
working-directory: ${{ env.wp-directory }} | |
run: wp plugin install bbpress buddypress ultimate-member wpforms-lite | |
- name: Install plugins requiring 7.1 | |
if: ${{ matrix.php-version >= '7.1' }} | |
working-directory: ${{ env.wp-directory }} | |
run: wp plugin install wpforo | |
- name: Install plugins requiring 7.2 | |
if: ${{ matrix.php-version >= '7.2' }} | |
working-directory: ${{ env.wp-directory }} | |
run: wp plugin install ninja-forms | |
- name: Install plugins requiring 7.4 | |
if: ${{ matrix.php-version >= '7.4' }} | |
working-directory: ${{ env.wp-directory }} | |
run: wp plugin install contact-form-7 woocommerce | |
- name: Run WP tests | |
working-directory: ${{ env.wp-plugin-directory }} | |
run: composer integration -- --env github-actions | |
- name: Run Jest | |
if: ${{ matrix.php-version == '8.3' }} | |
working-directory: ${{ env.wp-plugin-directory }} | |
run: yarn jest |