php - CircleCI 2.0 : Build directory for scp/rsync deployment

标签 php build continuous-integration circleci

回复:CircleCI 2.0:用于 scp 部署的构建目录

我对用于通过 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 env 变量。我完全不知所措了。

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

更新

虽然我确实找到了下面的解决方案,将构建下的部署结合起来,但当构建和部署处于不同的作业下时,我仍然对它们之间的关系感到困惑。如果有人能澄清这一点,那就太好了。

最佳答案

我的错误在于我的builddeploy 步骤不同,我在发布赏金后大约 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 进行 super 简单的构建和部署的结果如下。

我实际上完全删除了带有独立构建和部署部分的“工作流”——它对我没有用。我可以在构建步骤下做所有事情。

这是一个非常基本的设置,它只检查一个存储库,安装 Composer 要求,然后通过 rsync 将所有内容传输到第三方服务器(在我的例子中是 MediaTemple)。

唯一的其他步骤是创建 SSH key 并将其安装到 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

关于php - CircleCI 2.0 : Build directory for scp/rsync deployment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50459614/

相关文章:

android - 未声明的标识符 'setfscreation' AOSP

visual-studio-2010 - 在没有团队基础服务器的情况下运行 Mstest.exe。

php - symfony - jquery 日期时间选择器

php - openssl_encrypt、openssl_decrypt key 、iv

java - 源代码更改时自动重新启动配置

python - 在 VSTS 中构建 Django 应用程序的定义

javascript - 使用带有添加变量的 Javascript 提交表单

php - 如何在 Laravel 中将 INFO 记录到单独的文件中

多个大型开发分支的 Git 与 Subversion

Python CICD 管道