代码之家  ›  专栏  ›  技术社区  ›  dmgig

circleci 2.0:scp/rsync部署的生成目录

  •  3
  • dmgig  · 技术社区  · 8 年前

    re:circleci 2.0:scp部署的生成目录

    我对用于通过ssh(scp、rsync等)部署到另一台服务器的源文件夹感到困惑。我试过我的版本中的工作目录,我试过~/repo-name和其他一些变体,但没有任何运气。

    我正试图构建Circleci演示php laravel演示作为测试。

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

    谢谢你的帮助。

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

    更新

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

    1 回复  |  直到 8 年前
        1
  •  0
  •   dmgig    8 年前

    我所犯的错误,是我在发布赏金后5分钟发现的,是我的 build deploy 步骤。

    错误的

    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上构建和部署一个非常简单的系统,结果是这样的。

    实际上,我完全删除了带有单独的构建和部署部分的“工作流”,这对我来说并不有用。我可以在构建步骤下做任何事情。

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

    另一个步骤是创建一个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