CircleCI 2.0: 用于SCP/RSYNC部署的构建目录

3

关于使用SSH(scp,rsync等)在另一台服务器上部署时要使用的源文件夹我感到困惑。我已经尝试过从我的构建中使用working_directory,尝试了~/repo_name和其他几个变体,但都没有成功。

我只是尝试构建circleci-demo-php-laravel演示以进行测试。

https://github.com/dmgig/circleci-demo-php-laravel/blob/circleci-2.0/.circleci/config.yml

非常感谢任何帮助。

这是我卡住的部署步骤。我尝试了所有方法-在构建和部署中设置working_directory,使用在部署机器启动时创建的CIRCLE_WORKING_DIRECTORY环境变量。我完全不知道该怎么办。

run:
name: Deploy Over SSH
command: scp -r {WHAT_IS_THE_BUILD_DIR} serveradmin%mydomain.org@mydomain.org:~/domains/circleci.mydomain.org/html/

更新

尽管我通过在构建下合并部署找到了下面的解决方案,但当它们处于不同的工作时,构建和部署之间的关系仍然让我感到困惑。如果有人能澄清这一点,那就太好了。

1个回答

1

我之前犯的错误是,在发布悬赏后大约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

最终结果,我用以下方式实现了一个超级简单的构建和部署 rsync。

我实际上完全删除了“工作流程”中分别构建和部署部分 - 对我来说没有用。 我可以在构建步骤下完成所有操作。

这是一个非常基本的设置,它只检出存储库,安装组合器要求,然后通过 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接