Php CircleCI 2.0:用于scp/rsync部署的生成目录

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变量。我完全不

Re:CircleCI 2.0:scp部署的生成目录

我对通过SSH(scp、rsync等)部署到另一台服务器时使用的源文件夹感到困惑。我尝试了构建中的工作目录,尝试了~/repo\u name和其他几个变体,但没有任何运气

我只是尝试构建circleci demo php laravel demo作为测试

谢谢你的帮助

这是我挂断的部署步骤。我已经尝试了所有的方法-在构建和部署中设置工作目录,使用部署机器启动时创建的
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