我希望通过将构建的工件上传到我的服务器来自动化我的部署过程(使用TravisCI),这会自动注册这些上传并将它们移动到需要的地方。
为此,我编写了一个在构建过程成功后执行的shellcript:
find $TRAVIS_BUILD_DIR/dist/*.tar -type f -exec curl --ftp-create-dirs -T {} -u user:pass ftp://my.server.com/uploads/{} \;
最后{}
(在目标路径中)会导致问题。在TravisCI中,这些文件通常位于路径/home/travis/build/owner/repo/dist
中,因此将{}
添加到目标也将创建这些目录:
uploads/home/travis/build/owner/repo/dist/myartifact.tar
如果我删除{}
,我最终会遇到一堆FTP 553
错误。有没有办法让find
只填充文件名而不是整个路径?
答案 0 :(得分:0)
尝试使用xargs
和参数替换:
find . -type f | xargs -L 1 bash -c 'curl --ftp-create-dirs -T $1 -u user:pass ftp://my.server.com/uploads/${1##*/}' \;