Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



33 Commits

Repository files navigation Plugin Deploy pipeline status

Deploy plugin updates to's plugin SVN. Modeled on 10up's GitHub action of the same intent.


  1. Add the .gitlab-ci.yml configuration described below.
  2. Set the environment variables in the GitLab project.


Add the following to the plugin's .gitlab-ci.yml:

  stage: deploy
    - curl -o ./bin/
    - chmod +x ./bin/
  script: ./bin/
  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:

  - master

The above is a time-save only; the build script exits before the svn commit stage if the merge isn't into master.

Script Dependencies

If you'd rather not use my Docker image, any substitute must provide the following dependencies:

  1. bash
  2. git
  3. rsync
  4. subversion

CI Environment Variables

Set the following environment variables in the GitLab project's configuration:

  • PLUGIN_SLUG - plugin's name on
  • PLUGIN_VERSION - version to tag
  • WP_ORG_RELEASE_REF - git commit ref (branch or tag) to use for release
  • WP_ORG_ASSETS_DIR - directory name, relative to repo root, where screenshots and other static assets are held
  • WP_ORG_DEPLOY_SKIP - set to 1 to skip the deploy without failing the job

Alternate loading method

A loader script is available as an alternative to downloading the deploy script during the before_script stage.

Ignoring items

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 distribution
/.gitattributes export-ignore

Deploying assets for'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

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:

  1. In the repository root, create a directory named .wordpress-org; alternatively, specify a custom path using the WP_ORG_ASSETS_DIR environment variable.
  2. Commit to the WP_ORG_ASSETS_DIR directory in git any screenshots or other static assets that should be added to the plugin's assets directory in SVN.

Protecting deploys

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.


Deploy plugin updates to's plugin SVN using GitLab CI







No releases published


No packages published