并非每个人都喜欢颠覆。 如果您使用Git来管理WordPress插件开发,则保持Git存储库和WordPress.org SVN存储库同步是很繁琐的。 幸运的是,我们可以在测试后使用TravisCI部署提供程序自动执行SVN部署。
先决条件
在继续之前,您需要以下这些:
首先推送到GitHub
为了使用TravisCI,我们必须在GitHub上托管插件存储库。
首先,通过转到此页面并填写存储库名称,在GitHub上创建一个新的存储库。
![图片:https://cms-assets.tutsplus.com/uploads/users/1752/posts/28831/image/create-new-github-repository.jpg create new GitHub repository](https://i-blog.csdnimg.cn/blog_migrate/a1885ada1022c0f17a24f7993118f411.png)
![图片:https://cms-assets.tutsplus.com/uploads/users/1752/posts/28831/image/github-repo-remote.jpg GitHub new repository page](https://i-blog.csdnimg.cn/blog_migrate/b1364d65d0064c1a82a272024484eebb.png)
然后,我们将所有插件文件提交到Git中,并将其推送到GitHub存储库中。 切记用您的URL替换远程URL。
$ cd /path/to/plugin/directory
$ git init
$ git add -A
$ git commit -m "first commit"
$ git remote add origin https://github.com/TangRufus/tutsplus-dpl-demo.git
$ git push -u origin master
连接TravisCI
通过转到TravisCI帐户页面并打开存储库,将GitHub存储库与TravisCI连接。 如果新创建的存储库未显示在列表中,请单击右上角的同步帐户 。
![TravisCI帐户设置](https://i-blog.csdnimg.cn/blog_migrate/d0e1daeaef65ec85afe5c65400d509cd.png)
你们都准备好了 每当您推送新的提交或有人向GitHub发出提取请求时,都会触发TravisCI上的构建。
首先在TravisCI上构建
TravisCI在存储库的根目录中使用名为.travis.yml
的YAML文件.travis.yml
定义构建。 从构建定制文档中了解更多信息,以了解如何控制构建生命周期。
这是一个基本配置文件,指示TravisCI在PHP 7.0
和7.1
上运行构建。 由于测试不在本教程的讨论范围之内,因此我将实际的测试命令替换为echo 'Tested'
。
# .travis.yml
language: php
sudo: false
php:
- 7.0
- 7.1
script:
# Run your tests here.
- echo 'Tested'
提交此文件并将其推送到GitHub。 TravisCI构建将自动触发。
$ git add .travis.yml
$ git ci -am "Add .travis.yml"
$ git push origin master
![TravisCI当前版本](https://i-blog.csdnimg.cn/blog_migrate/1e7a4ea637ea6460e51e5d306013a50f.png)
添加部署提供程序配置
如果满足通过的测试并且满足预定义的条件( on
部分中),则部署提供程序将运行。 TravisCI提供了将近40个官方部署提供商 。 可悲的是,它们都不支持WordPress.org子版本库。 因此,我创建了自己的自定义提供程序。 您可以在GitHub和它的pull request上找到它。
要使用它,请将这些行添加到.travis.yml
。
before_deploy:
- mkdir build
- cp LICENSE build
- cp README.txt build
- cp remove-medium-cross-links.php build
deploy:
- provider: wordpress-plugin
edge:
source: TypistTech/dpl
branch: add-wordpress-plugin-deployment
on:
php: 7.1
tags: true
repo: TangRufus/tutsplus-dpl-demo
slug: remove-medium-cross-links
username: tangrufus
password: $WORDPRESS_ORG_PASSWORD
build_dir: build
配置说明
before_deploy
before_deploy
部分将三个文件复制到build
目录中,该目录将被检查到WordPress.org子版本库中。 在现实世界中,这是您要运行gulp
或grunt
任务以准备可用于生产环境的插件的地方。
不要将测试文件或任何不必要的文件复制到内部build
因为将整个build
目录发布给用户,并且用户不需要您的测试文件。
provider
和edge
我们告诉TravisCI从add-wordpress-plugin-deployment
分支https://github.com/TypistTech/dpl安装我的提供程序。 合并拉取请求后 ,就不需要edge
部分了。
on
on
部分控制是否应执行部署。 仅在满足所有要求时才触发部署。
在以上示例中,我们仅在以下情况下才部署到WordPress.org:
- 这是一个PHP
7.1
版本 - 这是一个标记的提交
- 它是由TangRufus / tutsplus-dpl-demo存储库触发的(fork和pull请求不会触发部署)
slug
插件的插件。
如果您插件的URL是https://wordpress.org/plugins/my-awesome-plugin/ ,则my-awesome-plugin
是插件的插件。
username
提交插件以供审批的WordPress.org帐户用户名。
password
WordPress.org帐户的密码。 请勿将此密码以纯文本格式保存在.travis.yml
中!
在上面的示例中,我们使用$WORDPRESS_ORG_PASSWORD
环境变量,该变量可以在TravisCI Web仪表板上设置。 从齿轮菜单中选择设置 ,然后在环境变量部分中单击添加 。 切勿启用“在构建日志中显示值”选项!
![TravisCI环境变量设置](https://i-blog.csdnimg.cn/blog_migrate/260a26038621d8ac2cd353e79e848a79.png)
build_dir
此目录中的所有内容都将提交到WordPress.org子版本库,即将包含在可下载的zip文件中。
我们将其设置为build
因为我们在before_deploy
期间将插件文件复制到了build
中。
标记
假设我们已经修复了一些错误,并准备将新版本发布到WordPress.org。
这些命令将更改提交到master
分支,但不触发部署:
$ git add -A
$ git commit -am "Bug fix"
$ git push origin master
仅带标记的提交触发部署:
$ git tag -a 1.0.17 -m "Version bump 1.0.17"
$ git push origin master --tags
结果
返回TravisCI并打开PHP 7.1
构建日志。 您应该看到已记录部署。
Building dpl gem locally with source TypistTech/dpl and branch add-wordpress-plugin-deployment
Installing deploy dependencies
!!! WordPress Plugin support is experimental !!!
Preparing deploy
Finding configuration for WordPress plugin deployment...
Slug: remove-medium-cross-links
Username: tangrufus
Password found
Build Directory: build
Assets Directory: not found
Validating configuration for WordPress plugin deployment...
Configuration looks good
Going to deloy tag: 1.0.17
Cleaning up git repository with `git stash --all`. If you need build artifacts for deployment, set `deploy.skip_cleanup: true`. See https://docs.travis-ci.com/user/deployment/#Uploading-Files.
/usr/lib/git-core/git-stash: 186: /usr/lib/git-core/git-stash: cannot create /home/travis/build/TangRufus/tutsplus-dpl-demo/.git/logs/refs/stash: Directory nonexistent
Deploying application
Checking out https://plugins.svn.wordpress.org/remove-medium-cross-links
Clearing /tmp/d20170513-3291-1yh7vqo/trunk...
Removing deleted files from subversion...
D /tmp/d20170513-3291-1yh7vqo/trunk
Temporary removing trunk and assets(if assets_dir is set)
Deleting tmp/d20170513-3291-1yh7vqo/trunk
Committed revision 1656616.
Copying build to /tmp/d20170513-3291-1yh7vqo/trunk...
Copying /tmp/d20170513-3291-1yh7vqo/trunk to /tmp/d20170513-3291-1yh7vqo/tags/1.0.17...
Adding new files to subversion...
A /tmp/d20170513-3291-1yh7vqo/trunk
A /tmp/d20170513-3291-1yh7vqo/trunk/LICENSE
A /tmp/d20170513-3291-1yh7vqo/trunk/README.txt
A /tmp/d20170513-3291-1yh7vqo/trunk/remove-medium-cross-links.php
A /tmp/d20170513-3291-1yh7vqo/tags/1.0.17
A /tmp/d20170513-3291-1yh7vqo/tags/1.0.17/LICENSE
A /tmp/d20170513-3291-1yh7vqo/tags/1.0.17/README.txt
A /tmp/d20170513-3291-1yh7vqo/tags/1.0.17/remove-medium-cross-links.php
Committing 1.0.17
Adding tmp/d20170513-3291-1yh7vqo/tags/1.0.17
Adding tmp/d20170513-3291-1yh7vqo/tags/1.0.17/LICENSE
Adding tmp/d20170513-3291-1yh7vqo/tags/1.0.17/README.txt
Adding tmp/d20170513-3291-1yh7vqo/tags/1.0.17/remove-medium-cross-links.php
Adding tmp/d20170513-3291-1yh7vqo/trunk
Adding tmp/d20170513-3291-1yh7vqo/trunk/LICENSE
Adding tmp/d20170513-3291-1yh7vqo/trunk/README.txt
Adding tmp/d20170513-3291-1yh7vqo/trunk/remove-medium-cross-links.php
Transmitting file data ......
Committed revision 1656617.
并在WordPress.org跟踪( https://plugins.trac.wordpress.org/browser/ <your-plugin-slug>)上:
![WordPress插件颠覆追踪](https://i-blog.csdnimg.cn/blog_migrate/c30552ccc627f8d66b7b1cdf79728535.png)
注意事项
svn commit
两次svn commit
由于TravisCI附带了一个旧版本的subversion
,该版本不能与子目录很好地配合使用,因此我会svn commit
两次。
第一次svn commit
删除trunk
内的所有内容。 第二个svn commit
build_dir
所有内容从build_dir
复制到trunk
。
实验性
该提供程序仍处于试验阶段,尚未与TravisCI的官方回购合并。 您可以跟踪TravisCI对其拉取请求的反馈。
使用edge
不会将我的分支合并到上游主服务器中。 我的分支机构有可能在官方仓库的后面。 发生这种情况时,您可以分叉我的分支并对其重新设置基础,然后将.travis.yml
中的source
.travis.yml
为GitHub存储库。
包起来
要使用此部署提供程序 :
- 将插件存储库托管在GitHub上。
- 连接GitHub和TravisCI。
- 将配置添加到
.travis.yml
。 - 推送标签。
希望以上所有内容都能帮助您更快地将插件部署到WordPress.org。
WordPress的经济非常活跃。 有主题,插件,库和许多其他产品可帮助您构建站点和项目。 该平台的开源性质也使它成为提高编程技能的绝佳选择。 无论如何,您都可以在Envato Marketplace中看到我们提供的所有内容。
谢谢阅读!