Skip to content
Snippets Groups Projects
Commit b9d1b185 authored by Erick Hitter's avatar Erick Hitter
Browse files

Merge branch 'add/wp-org-deploy' into 'master'

Introduce automated deploy to WP.org

See merge request !6
parents 7c45ee77 b3abdad6
Branches
Tags
1 merge request!6Introduce automated deploy to WP.org
Pipeline #758 passed
# A set of files you probably don't want in your WordPress.org distribution
/.distignore export-ignore
/.editorconfig export-ignore
/.gitattributes export-ignore
/.gitignore export-ignore
/.gitlab-ci.yml export-ignore
/.travis.yml export-ignore
/.DS_Store export-ignore
/Thumbs.db export-ignore
/behat.yml export-ignore
/bitbucket-pipelines.yml export-ignore
/bin export-ignore
/.circleci/config.yml export-ignore
/composer.json export-ignore
/composer.lock export-ignore
/Gruntfile.js export-ignore
/package.json export-ignore
/package-lock.json export-ignore
/phpunit.xml export-ignore
/phpunit.xml.dist export-ignore
/multisite.xml export-ignore
/multisite.xml.dist export-ignore
/.phpcs.xml export-ignore
/phpcs.xml export-ignore
/.phpcs.xml.dist export-ignore
/phpcs.xml.dist export-ignore
/README.md export-ignore
/wp-cli.local.yml export-ignore
/yarn.lock export-ignore
/tests export-ignore
/vendor export-ignore
/node_modules export-ignore
/*.sql export-ignore
/*.tar.gz export-ignore
/*.zip export-ignore
......@@ -26,6 +26,7 @@ before_script:
- phpcs --config-set installed_paths $HOME/.composer/vendor/wp-coding-standards/wpcs,$HOME/.composer/vendor/automattic/vipwpcs,$HOME/.composer/vendor/phpcompatibility/php-compatibility,$HOME/.composer/vendor/phpcompatibility/phpcompatibility-paragonie,$HOME/.composer/vendor/phpcompatibility/phpcompatibility-wp
PHPunit:PHP7.2:MySQL:
stage: test
image: containers.ethitter.com:443/docker/images/php:7.2
services:
- mysql:5.6
......@@ -35,6 +36,7 @@ PHPunit:PHP7.2:MySQL:
- phpunit
PHPunit:PHP7.3:MySQL:
stage: test
image: containers.ethitter.com:443/docker/images/php:7.3
services:
- mysql:5.6
......@@ -42,3 +44,14 @@ PHPunit:PHP7.3:MySQL:
- find . -type "f" -iname "*.php" | xargs -L "1" php -l
- phpcs -n
- phpunit
PluginSVN:
stage: deploy
image: containers.ethitter.com:443/docker/images/php:7.3
before_script:
- apt-get update
- apt-get install -y rsync
script: ./bin/deploy.sh
when: on_success
# only:
# - master
......@@ -4,7 +4,7 @@
**Tags:** view all, pages, paged, paged post, multipage, single view, single page, wp_link_pages, nextpage, next page, quicktag
**Requires at least:** 3.2.1
**Tested up to:** 5.1
**Stable tag:** 0.9.1
**Stable tag:** 0.9.2
**License:** GPLv2 or later
**License URI:** http://www.gnu.org/licenses/gpl-2.0.html
......@@ -52,6 +52,7 @@ This plugin is known to conflict with certain plugins, many pertaining to SEO an
## Changelog ##
### 0.9.2 ###
* Compatible with PHP 7.3
* Introduce PHPCS tests
* Update plugin based on PHPCS results
......
#!/usr/bin/env bash
## MIT License
##
## Copyright (c) 2019 Helen Hou-Sandi
## Copyright (c) 2019 Erick Hitter
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to deal
## in the Software without restriction, including without limitation the rights
## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
## copies of the Software, and to permit persons to whom the Software is
## furnished to do so, subject to the following conditions:
##
## The above copyright notice and this permission notice shall be included in all
## copies or substantial portions of the Software.
##
## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
## SOFTWARE.
# Note that this does not use pipefail
# because if the grep later doesn't match any deleted files,
# which is likely the majority case,
# it does not exit with a 0, and I only care about the final exit.
set -eo
# Ensure SVN username and password are set
# IMPORTANT: while secrets are encrypted and not viewable in the GitHub UI,
# they are by necessity provided as plaintext in the context of the Action,
# so do not echo or use debug mode unless you want your secrets exposed!
if [[ -z "$CI" ]]; then
echo "Script is only to be run by GitLab CI" 1>&2
exit 1
fi
if [[ -z "$WP_ORG_USERNAME" ]]; then
echo "WordPress.org username not set" 1>&2
exit 1
fi
if [[ -z "$WP_ORG_PASSWORD" ]]; then
echo "WordPress.org password not set" 1>&2
exit 1
fi
if [[ -z "$PLUGIN_SLUG" ]]; then
echo "Plugin's SVN slug is not set" 1>&2
exit 1
fi
if [[ -z "$PLUGIN_VERSION" ]]; then
echo "Plugin's version is not set" 1>&2
exit 1
fi
echo "ℹ︎ PLUGIN_SLUG is $PLUGIN_SLUG"
echo "ℹ︎ PLUGIN_VERSION is $PLUGIN_VERSION"
SVN_URL="https://plugins.svn.wordpress.org/${PLUGIN_SLUG}/"
SVN_DIR="$CI_BUILDS_DIR/svn-${PLUGIN_SLUG}"
TMP_DIR="$CI_BUILDS_DIR/git-archive"
# Checkout just trunk for efficiency
# Tagging will be handled on the SVN level
echo "➤ Checking out .org repository..."
svn checkout --depth immediates "$SVN_URL" "$SVN_DIR"
cd "$SVN_DIR"
svn update --set-depth infinity trunk
# Ensure we are in the $CI_PROJECT_DIR directory, just in case
echo "➤ Copying files..."
cd "$CI_PROJECT_DIR"
git config --global user.email "git-contrib+ci@ethitter.com"
git config --global user.name "Erick Hitter (GitLab CI)"
# If there's no .gitattributes file, write a default one into place
if [[ ! -e "$CI_PROJECT_DIR/.gitattributes" ]]; then
cat > "$CI_PROJECT_DIR/.gitattributes" <<-EOL
/.gitattributes export-ignore
/.gitignore export-ignore
/.github export-ignore
EOL
# The .gitattributes file has to be committed to be used
# Just don't push it to the origin repo :)
git add .gitattributes && git commit -m "Add .gitattributes file"
fi
# This will exclude everything in the .gitattributes file with the export-ignore flag
mkdir "$TMP_DIR"
git archive HEAD | tar x --directory="$TMP_DIR"
cd "$SVN_DIR"
# Copy from clean copy to /trunk
# The --delete flag will delete anything in destination that no longer exists in source
rsync -r "$TMP_DIR/" trunk/ --delete
# Add everything and commit to SVN
# The force flag ensures we recurse into subdirectories even if they are already added
# Suppress stdout in favor of svn status later for readability
echo "➤ Preparing files..."
svn add . --force > /dev/null
# SVN delete all deleted files
# Also suppress stdout here
svn status | grep '^\!' | sed 's/! *//' | xargs -I% svn rm % > /dev/null
# Copy tag locally to make this a single commit
echo "➤ Copying tag..."
svn cp "trunk" "tags/$PLUGIN_VERSION"
svn status
# Stop here unless this is a merge into master.
if [[ -z "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" || "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "master" ]]; then
echo "𝘅︎ EXITING before commit step as this is the '${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}' branch, not the 'master' branch." 1>&2
exit 0
fi
echo "➤ Committing files..."
svn commit -m "Update to version ${PLUGIN_VERSION} from GitLab (${CI_PROJECT_URL}; ${CI_JOB_URL})" --no-auth-cache --non-interactive --username "$SVN_USERNAME" --password "$SVN_PASSWORD"
echo "✓ Plugin deployed!"
......@@ -4,7 +4,7 @@ Donate link: http://www.thinkoomph.com/plugins-modules/view-all-posts-pages/
Tags: view all, pages, paged, paged post, multipage, single view, single page, wp_link_pages, nextpage, next page, quicktag
Requires at least: 3.2.1
Tested up to: 5.1
Stable tag: 0.9.1
Stable tag: 0.9.2
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
......@@ -52,6 +52,7 @@ This plugin is known to conflict with certain plugins, many pertaining to SEO an
== Changelog ==
= 0.9.2 =
* Compatible with PHP 7.3
* Introduce PHPCS tests
* Update plugin based on PHPCS results
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment