CircleCI和AWS CodeDeploy:没有这样的文件或目录

时间:2016-01-27 19:47:17

标签: ruby circleci aws-code-deploy

我已经通过CircleCI使用CodeDeploy部署到AWS实例的Ruby应用程序。我在应用程序中添加了一个gem。所有测试都在本地和CircleCI中传递,但部署阶段失败并出现此错误:

$ create_application_revision /tmp/codedeploy_applications.json /tmp/codedeploy_revisions.json
create_application_revision loaded: {"applications":[{"application_root":"/","region":"us-west-2","revision_location":{"revisionType":"S3","s3Location":{"bucket":"something","key":"etl-scripts-testdeploy-3a050b1"}},"deployment_group":"EtlScriptsFleet","application_name":"EtlScripts"}]}
Bundling EtlScripts from /home/ubuntu/etl-scripts
Unhandled exception
[Errno 2] No such file or directory: '/home/ubuntu/etl-scripts/vendor/bundle/ruby/2.2.0/gems/regexp-examples-1.1.4/db/unicode_ranges_2.1.pstore'

文件不存在确实如此。它也不存在于本地,但所有测试都通过了。我只是无法弄清楚部署过程为什么认为它需要这个文件?

我注意到在这个gem(https://github.com/tom-lord/regexp-examples/tree/master/db)的源代码中是一个符号链接,这可能是它没有被创建的原因。但我仍然对部署捆绑过程如何了解不存在的符号链接感到困惑。

任何帮助都非常感谢!

2 个答案:

答案 0 :(得分:1)

It seems the deployment stage is being handled by the deploy push command from aws CLI,它无法处理损坏的符号链接。

我可以尝试使用push命令部署包含损坏的符号链接的应用程序来重现此问题:

(命令 - aws deploy push --application-name --s3-location s3:///.zip --source ./) (输出 - [Errno 2]没有这样的文件或目录:' / path / to / source /')

我想您需要手动删除所有损坏的符号链接才能使部署成功。

答案 1 :(得分:0)

为了它的价值,this gem was later refactored to not use symbolic links;截至v1.3.0

从当前版本(1.1.4)升级几乎肯定不需要更改代码。