zicht / z-plugin-deploy
为 Z 部署的插件
2.0.0-beta.1
2016-10-24 09:47 UTC
Requires
This package is auto-updated.
Last update: 2024-09-16 01:05:00 UTC
README
此插件提供构建和部署当前项目的任务
deploy
任务用于构建并将项目部署到特定环境simulate
任务用于构建并模拟项目针对特定环境的部署redeploy
任务用于重新构建并重新部署特定环境上当前项目的版本patch
任务用于修复特定环境unpatch
任务用于撤销特定环境上的修复qdeploy
任务用于构建项目并修复特定环境qsimulate
任务用于构建项目并模拟修复特定环境
使用方法
设置 Z
有关如何使用插件安装 Z 的更多信息,请参阅 zicht/z
的文档。
通用方法
注意 此设置需要一些其他插件。您不需要使用这些插件,但这是典型设置的示例(遵循此部署方案)。
此实现的一般方法是
- 在单独的文件夹中创建构建,通过将当前工作目录克隆到单独的
build
目录中来实现(git
插件处理此操作) - 所有其他插件都有机会通过将其自身附加到
build
的post
触发器来挂钩到构建(这是常见的 Z 功能,您可以通过这种方式挂钩到任何任务) - 执行 rsync 到远程 SSH 环境(《rsync 插件处理此操作)
- 在
deploy
的post
触发器中执行更多维护工作。
“deploy”插件还提供了一个“simulate”任务,该任务创建一个构建,并使用“--dry-run”标志运行“rsync”,以便您可以看到将要同步的内容。
将排除文件添加到您的项目中
默认情况下,“rsync”插件期望您将 rsync 文件添加到项目中
echo ".git/" >> ./rsync.exclude
git add rsync.exclude
git commit -m"add rsync.exclude" ./rsync.exclude
然后,您将需要在项目中创建一个 z 文件
plugins: ['env', 'build', 'deploy', 'git', 'rsync'] envs: prod: ssh: myuser@prod-machine root: ~/my-project-path web: public # the relative path to the public web folder within the project path tasks: build: post: - echo "I am just adding a random file here" >> $(path(build.dir, "foo.html")) deploy: post: - echo "Thank you, come again"
如果您解释了部署,您将看到 bash 中每一步的解释。有关 --explain
在 Z 文档中执行的操作的更多信息。
$ z --explain deploy prod
echo 'echo "Checking out version foo to ./build";' | /bin/bash -e
echo 'git clone . ./build' | /bin/bash -e
echo 'cd ./build && git checkout foo' | /bin/bash -e
echo 'cd ./build && git log HEAD -1 > .z.rev' | /bin/bash -e
echo 'echo "I am just adding a random file here" >> ./build/foo.html' | /bin/bash -e
echo 'rsync \
\
-rpcl --delete \
--exclude-from=./build/rsync.exclude \
-v \
./build/ myuser@production-machine:~/my-project-path/ \
;' | /bin/bash -e
echo 'echo "Thank you, come again"' | /bin/bash -e
如您所见,此说明中的每一行都反映了构建过程中的一个步骤。
现在,您还可以模拟部署,这将执行除“deploy”的“post”触发器之外的所有操作
z simulate prod
如果成功
z deploy prod
您应该检查的常见问题
- 您能否登录到 SSH 远程?使用
z env:ssh prod
检查此问题。建议您使用z env:ssh-copy-id prod
将您的密钥发布到远程,以便您无密码访问远程。 - 远程目录是否存在?
env
尝试在远程目录中打开 ssh 会话。使用此方法检查您的设置:z env:ssh prod pwd
(或省略pwd
以交互方式运行)。 - 构建中是否有 rsync 文件?您可以自己创建构建并检查它
请注意,您始终可以使用 --explain
来检查插件和/或 Z 尝试执行的操作。要获取更多信息,您可以将 --explain
和 --debug
结合起来,您可以看到某些任务行来自何处。
考虑事项
- 您可以添加自己的插件组合来准备 JavaScript/CSS 文件,向构建添加凭据等。但是,许多常见的使用插件已经可用。这些包括像
- npm、bower、typescript、babel 等
- sass、post-css
- chmod
- 一旦您发现您正在跨项目复制粘贴您的 z.yml 文件,您应该考虑创建插件。
维护者
- 乔赫姆·克拉弗jochem@zicht.nl