Stable #14
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: Stable | |
on: | |
push: | |
tags: | |
- '*' | |
jobs: | |
# Builds the package and creates artifact with dist files | |
build: | |
name: Build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Setup Node | |
uses: actions/setup-node@v1 | |
with: | |
node-version: '12' | |
- name: Setup PHP 7.4 | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: '7.4' | |
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, mysql, mysqli, pdo_mysql, bcmath, soap, intl, gd, exif, iconv, imagick | |
coverage: none | |
- name: Install Node dependencies | |
uses: bahmutov/npm-install@v1 | |
- name: Install Composer dependencies | |
uses: "ramsey/composer-install@v2" | |
with: | |
composer-options: "--no-dev" | |
- name: Build static assets | |
run: yarn build | |
- name: Create build dir | |
run: mkdir build | |
- name: Copy files | |
uses: Pendect/[email protected] | |
env: | |
DEPLOY_KEY: ${{ secrets.PACKAGES_DEPLOY_KEY }} | |
with: | |
flags: '-avq' | |
options: '--exclude-from=".build-excludes"' | |
src: '.' | |
dest: 'build' | |
- name: Upload artifact | |
uses: actions/upload-artifact@v1 | |
with: | |
name: build | |
path: build | |
# Creates the stable package artifact when tag is created | |
pack: | |
name: Pack | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Setup variables | |
id: vars | |
run: | | |
echo "::set-output name=package-name::${{ secrets.SLUG }}-${GITHUB_REF#refs/tags/}" | |
- name: Download artifact | |
uses: actions/download-artifact@v1 | |
with: | |
name: build | |
path: ${{ secrets.SLUG }} | |
- name: Create archive | |
run: | | |
zip -rq ${{ steps.vars.outputs.package-name }}.zip ${{ secrets.SLUG }} | |
- name: Upload artifact | |
uses: actions/upload-artifact@v1 | |
with: | |
name: ${{ steps.vars.outputs.package-name }} | |
path: ${{ steps.vars.outputs.package-name }}.zip | |
# Uploads the stable package to internal repository | |
upload: | |
name: Upload to repo | |
runs-on: ubuntu-latest | |
needs: pack | |
steps: | |
- name: Setup variables | |
id: vars | |
run: | | |
echo "::set-output name=package-name::${{ secrets.SLUG }}-${GITHUB_REF#refs/tags/}" | |
- name: Download artifact | |
uses: actions/download-artifact@v1 | |
with: | |
name: ${{ steps.vars.outputs.package-name }} | |
path: . | |
- name: Upload to repo | |
uses: Pendect/[email protected] | |
env: | |
DEPLOY_KEY: ${{ secrets.PACKAGES_DEPLOY_KEY }} | |
with: | |
flags: '-avz' | |
options: '--recursive ' | |
src: '.' | |
dest: '${{ secrets.BRACKETSPACE_REPO_RSYNC_URL }}${{ secrets.SLUG }}/' | |
# Release on GitHub | |
github-release: | |
name: Release on GitHub | |
runs-on: ubuntu-latest | |
needs: pack | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Setup variables | |
id: vars | |
run: | | |
echo "::set-output name=version::${GITHUB_REF#refs/tags/}" | |
echo "::set-output name=package-name::${{ secrets.SLUG }}-${GITHUB_REF#refs/tags/}" | |
- name: Parse changelog | |
run: | | |
START="= ${{ steps.vars.outputs.version }} =" | |
END="= [0-9]+.[0-9]+.[0-9]+ =|==|\$" | |
grep -oPz "(?s)${START}.*?\n\K.*?(?=${END})" readme.txt > changelog.txt | |
truncate -s-2 changelog.txt | |
- name: Download artifact | |
uses: actions/download-artifact@v1 | |
with: | |
name: ${{ steps.vars.outputs.package-name }} | |
path: . | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
body_path: changelog.txt | |
files: ${{ steps.vars.outputs.package-name }}.zip | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# Deploys the stable tag to WordPress.org repository | |
wordpress-org-release: | |
name: Release on WordPress.org | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Setup Node | |
uses: actions/setup-node@v1 | |
with: | |
node-version: '12' | |
- name: Setup PHP 7.4 | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: '7.4' | |
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, mysql, mysqli, pdo_mysql, bcmath, soap, intl, gd, exif, iconv, imagick | |
coverage: none | |
- name: Install Node dependencies | |
uses: bahmutov/npm-install@v1 | |
- name: Install Composer dependencies | |
uses: "ramsey/composer-install@v2" | |
with: | |
composer-options: "--no-dev" | |
- name: Create .distignore file | |
run: cp .build-excludes .distignore | |
- name: Remove obsolete files | |
run: rm -rf .build-excludes .gitignore | |
- name: Deploy to WordPress repository | |
uses: 10up/[email protected] | |
env: | |
SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }} | |
SVN_USERNAME: ${{ secrets.SVN_USERNAME }} | |
SLUG: ${{ secrets.SLUG }} |