回复: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/
更新
虽然我确实找到了下面的解决方案,将构建下的部署结合起来,但当构建和部署处于不同的作业下时,我仍然对它们之间的关系感到困惑。如果有人能澄清这一点,那就太好了。
最佳答案
我的错误在于我的build
和deploy
步骤不同,我在发布赏金后大约 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/