Php CircleCI 2.0:用于scp/rsync部署的生成目录
Re:CircleCI 2.0:scp部署的生成目录 我对通过SSH(scp、rsync等)部署到另一台服务器时使用的源文件夹感到困惑。我尝试了构建中的工作目录,尝试了~/repo\u name和其他几个变体,但没有任何运气 我只是尝试构建circleci demo php laravel demo作为测试 谢谢你的帮助 这是我挂断的部署步骤。我已经尝试了所有的方法-在构建和部署中设置工作目录,使用部署机器启动时创建的Php CircleCI 2.0:用于scp/rsync部署的生成目录,php,build,continuous-integration,circleci,Php,Build,Continuous Integration,Circleci,Re:CircleCI 2.0:scp部署的生成目录 我对通过SSH(scp、rsync等)部署到另一台服务器时使用的源文件夹感到困惑。我尝试了构建中的工作目录,尝试了~/repo\u name和其他几个变体,但没有任何运气 我只是尝试构建circleci demo php laravel demo作为测试 谢谢你的帮助 这是我挂断的部署步骤。我已经尝试了所有的方法-在构建和部署中设置工作目录,使用部署机器启动时创建的CIRCLE\u working\u directoryenv变量。我完全不
CIRCLE\u working\u directory
env变量。我完全不知所措
run:
name: Deploy Over SSH
command: scp -r {WHAT_IS_THE_BUILD_DIR} serveradmin%mydomain.org@mydomain.org:~/domains/circleci.mydomain.org/html/
更新
虽然我确实在下面找到了一个解决方案,将构建和部署结合在一起,但当构建和部署在不同的作业下时,我仍然对它们之间的关系感到困惑。如果有人能澄清这一点,那就太好了。发布赏金5分钟后,我发现我做错了,那就是我的
构建和部署步骤有所不同
错误
jobs:
build:
docker:
- image: circleci/php:7.1-node-browsers
...
deploy:
machine:
enabled: true
正确
jobs:
build:
docker:
- image: circleci/php:7.1-node-browsers
...
deploy:
docker:
- image: circleci/php:7.1-node-browsers
FINAL我在rsync上构建和部署了一个超级简单的系统,结果如下
事实上,我完全删除了带有单独构建和部署部分的“工作流”——它对我没有用处。我可以在构建步骤下做任何事情
这是一个非常基本的设置,它只检查repo,安装composer需求,然后通过rsync将所有内容传输到第三方服务器(在我的例子中是MediaTemple)
唯一的另一个步骤是创建SSH密钥并将其安装到CircleCI项目中(有许多在线教程)
# PHP CircleCI 2.0 configuration file
#
version: 2
jobs:
build:
docker:
- image: circleci/php:7.1-node-browsers
working_directory: ~/beta
steps:
- checkout
- run: php composer.phar install
- run: pwd
- deploy:
name: Deploy Over SSH
command: rsync -e "ssh -o StrictHostKeyChecking=no" -arvc --exclude .git ~/beta/ myuser@mysite.org:~/domains/mysite.org/html/beta