Deploy plugin updates to WordPress.org's plugin SVN. Modeled on 10up's GitHub action of the same intent.
- Add the
.gitlab-ci.yml
configuration described below. - Set the environment variables in the GitLab project.
Add the following to the plugin's .gitlab-ci.yml
:
PluginSVN:
stage: deploy
image: containers.ethitter.com:443/docker/wp-org-plugin-deploy:latest
before_script:
- curl -o ./bin/deploy.sh https://git-cdn.e15r.co/open-source/wp-org-plugin-deploy/raw/master/scripts/deploy.sh
- chmod +x ./bin/deploy.sh
script: ./bin/deploy.sh
when: on_success
While unnecessary, if you'd rather save the time of testing the deploy, append the following to the CI job's configuration:
only:
- master
The above is a time-save only; the build script exits before the svn commit
stage if the merge isn't into master
.
If you'd rather not use my Docker image, any substitute must provide the following dependencies:
bash
git
rsync
subversion
Set the following environment variables in the GitLab project's configuration:
WP_ORG_USERNAME
WP_ORG_PASSWORD
PLUGIN_SLUG
- plugin's name on WordPress.orgPLUGIN_VERSION
- version to tagWP_ORG_RELEASE_REF
- git commit ref (branch or tag) to use for releaseWP_ORG_ASSETS_DIR
- directory name, relative to repo root, where screenshots and other static assets are heldWP_ORG_DEPLOY_SKIP
- set to1
to skip the deploy without failing the job
A loader script is available as an alternative to downloading the deploy script during the before_script
stage.
The build script uses a .gitattributes
-based ignore for reasons discussed at 10up/actions-wordpress#7.
A sample is provided in examples/gitattributes. If used, it needs to be copied to .gitattributes
in the git-repo root and committed before it will be respected.
# A set of files you probably don't want in your WordPress.org distribution
/.gitattributes export-ignore
WordPress.org's plugins directory allows plugins to provide various static assets, which are not bundled in the downloadable plugin, rather only being used to enhance the visitor experience when browsing plugins. More details can be found at https://developer.wordpress.org/plugins/wordpress-org/plugin-assets/.
As the SVN assets
directory exists outside of the directories used for plugin files, the handling of static assets in git requires a small bit of setup:
- In the repository root, create a directory named
.wordpress-org
; alternatively, specify a custom path using theWP_ORG_ASSETS_DIR
environment variable. - Commit to the
WP_ORG_ASSETS_DIR
directory in git any screenshots or other static assets that should be added to the plugin'sassets
directory in SVN.
Choose a WP_ORG_RELEASE_REF
value that starts with a consistent prefix. Doing so allows that prefix to be protected using GitLab's "Protected Branches" or "Protected Tags" features.