Deploy to WordPress.org #395
Workflow file for this run
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: Deploy to WordPress.org | |
on: | |
push: | |
tags: | |
- "[0-9]+.[0-9]+.[0-9]+.[0-9]+" | |
env: | |
plugin_name: vk-blocks | |
jobs: | |
php_unit: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
php-versions: ['7.4', '8.0', '8.1'] | |
wp-versions: ['6.4', '6.5', '6.6'] | |
name: PHP Unit Test on PHP ${{ matrix.php-versions }} / WP ${{ matrix.wp-versions }} Test | |
services: | |
mysql: | |
image: mysql:5.7 | |
ports: | |
- 3306 | |
env: | |
MYSQL_ROOT_PASSWORD: wordpress | |
MYSQL_DATABASE: wordpress | |
MYSQL_USER: wordpress | |
MYSQL_PASSWORD: wordpress | |
steps: | |
- uses: actions/checkout@v3 | |
# setup node based on the version from the .node-version file, fetched in the previous step | |
- name: Setup Node.js (.node-version) | |
uses: actions/setup-node@v1 | |
with: | |
node-version: 20.x | |
- name: Cache multiple paths | |
uses: actions/cache@v3 | |
with: | |
path: vendor | |
key: ${{ runner.os }}-php${{ matrix.php-versions }}-${{ hashFiles('**/composer.lock') }} | |
- name: Setup PHP ${{ matrix.php-versions }} | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php-versions }} | |
- name: install npm scripts | |
run: npm install | |
- name: Install Composer Packages | |
run: composer install | |
- 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 | |
mv wp-cli.phar /usr/local/bin/wp | |
- name: Install several WordPress version by wp-env.override.json | |
run: WP_ENV_PHP_VERSION=${{ matrix.php-versions }} WP_ENV_CORE=WordPress/WordPress#${{ matrix.wp-versions }} npm run wp-env start --update | |
- name: Check WordPress Version | |
run: npm run wp-env run cli wp core version | |
- name: Install Themes | |
run: bash bin/install-theme.sh | |
- name: Build | |
run: npm run build:free | |
- name: Run PHP Unit Test | |
run: npm run phpunit:free | |
deploy: | |
name: Deploy to Plugin Directory | |
runs-on: ubuntu-latest | |
needs: [php_unit] | |
steps: | |
- uses: actions/checkout@master | |
# setup node based on the version from the .node-version file, fetched in the previous step | |
- name: Setup Node.js (.node-version) | |
uses: actions/setup-node@v1 | |
with: | |
node-version: 20.x | |
- name: Install NPM Scripts | |
run: npm install | |
- name: Install Composer Packages | |
run: composer install --optimize-autoloader --prefer-dist --no-dev | |
- name: Build | |
run: npm run build:free | |
- name: Make Distribution | |
run: bash bin/deploy.sh | |
- name: WordPress Plugin Deploy | |
uses: 10up/action-wordpress-plugin-deploy@master | |
env: | |
SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }} | |
SVN_USERNAME: ${{ secrets.SVN_USERNAME }} | |
SLUG: ${{ env.plugin_name }} | |
release: | |
name: release | |
runs-on: ubuntu-latest | |
needs: [php_unit] | |
steps: | |
- uses: actions/checkout@v3 | |
# setup node based on the version from the .node-version file, fetched in the previous step | |
- name: Setup Node.js (.node-version) | |
uses: actions/setup-node@v1 | |
with: | |
node-version: 20.x | |
- name: Install NPM Scripts | |
run: npm install | |
- name: Install Composer Packages | |
run: composer install --optimize-autoloader --prefer-dist --no-dev | |
- name: Build | |
run: npm run build:free | |
- name: Make Distribution | |
run: bash bin/dist.sh | |
- name: Check ZIP File | |
run: test -e dist/${{ env.plugin_name }}.zip | |
- name: Create Release | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ github.ref }} | |
release_name: Release ${{ github.ref }} | |
draft: false | |
prerelease: false | |
- name: Upload Release Asset | |
id: upload-release-asset | |
uses: actions/[email protected] | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./dist/${{ env.plugin_name }}.zip | |
asset_name: ${{ env.plugin_name }}.zip | |
asset_content_type: application/zip |