【问题标题】:Yeoman project in travis-ci failed to deploy dist directory to S3travis-ci 中的 Yeoman 项目未能将 dist 目录部署到 S3
【发布时间】:2015-12-09 16:07:41
【问题描述】:

我有一个yeoman 项目(webapp 生成器),并具有以下 travis-ci 配置:

language: node_js  
node_js:
- '4.1'
before_script:
- gem install compass
- npm install
- npm install bower
- bower install
- npm install grunt-cli
- grunt build
deploy:
  provider: s3
  access_key_id: AKIAIOVIOPLVOEVHJUQA
secret_access_key:
secure: HhLo08go5z+PBZkimdgLoTBBXQPzw0B1P2WHWmqtZ/H9RzGc7IUFE/6ubnewlyqy6Baa3mumcQ2A24lm98/ZZt8GZ+usI8dDF9maGVCFq2R53G1Rir+HleDVtkm/xGrxpvtLn/x+4QNselt2F6oODGNpmgGumaqMiabMm59ABw4CV3TULvWz1CKg/BC/YTVz58Equ0MhIZIk6igjc1PgOEiXfsKlBGVI5///MqjsuYB/6dtlrhzxPSpdGucnU0lmW+0TDzkX9WyEJPeDjTVLYNiviZmKIPw0fofc3BGCZs6QEibAFkJ40JF8CCzC3JdcV0vj7PFe5LEtWd+LGW+gew5HjVGcPkOtGwi8npTmHOlTZJRgrFySdJe6fy8N3we2Ht194GqPnJx8/D/F0p1fNq8/KujxQZX6L5BJNfO5a9iYgyD3q/cWBbxj2VIbYkrZAKK8LtnXrzXY+owmQYLiENB47atiwtJBg2ZoSsBw8ANR1RWSlyymdbwvoBxKUoZ324MO2l3yrAndheS1S4hauRs6bk52obcPUKMFkW+1/sDbxf15JcMhi48RN1jcDGSpHKqm7zHlfd2BfJC3U+tCRchD0gLYmgZBNhsL4sVyil4/0/lWALm10En1eDD8tvssCadnRRllbVIqIyx3UcKJC+JwymvtUatwHBW61ZzQyfA=
    bucket: www.raeprojects.org
    local-dir: dist
    acl: public_read
    on:
      repo: raeprojects/www-raeprojects-org

我正在尝试将dist 目录(由grunt build 任务创建)部署到S3。一切似乎都很好,除了在部署阶段,travis ci 无法找到 dist 目录并返回此错误消息:

Deploying application
Already up-to-date!
# HEAD detached at 114e66f
nothing to commit, working directory clean
Dropped refs/stash@{0} (7986ed431f2b3467e1369af81ef95256d352c571)
/home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-        1.8.11/lib/dpl/provider/s3.rb:47:in `chdir': No such file or directory - dist (Errno::ENOENT)
    from /home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-1.8.11/lib/dpl/provider/s3.rb:47:in `push_app'
    from /home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-1.8.11/lib/dpl/provider.rb:145:in `block in deploy'
    from /home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-1.8.11/lib/dpl/cli.rb:41:in `fold'
    from /home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-1.8.11/lib/dpl/provider.rb:145:in `deploy'
    from /home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-1.8.11/lib/dpl/provider/s3.rb:73:in `deploy'
    from /home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-1.8.11/lib/dpl/cli.rb:32:in `run'
    from /home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-1.8.11/lib/dpl/cli.rb:7:in `run'
    from /home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-1.8.11/bin/dpl:5:in `<top (required)>'
    from /home/travis/.rvm/gems/ruby-1.9.3-p551/bin/dpl:23:in `load'
    from /home/travis/.rvm/gems/ruby-1.9.3-p551/bin/dpl:23:in `<main>'

部署失败

gulp-webapp generator 生成的不同项目也有同样的问题。这是该项目的 .travis.yml 中的尖晶石:

 . . . . . . 
 before_script:
 - npm install
 - npm install -g bower
 - bower install
 - gulp build
 . . . . . . . 

有人可以帮忙吗?

【问题讨论】:

  • 您能否在执行该步骤后ls,据推测会创建dist/,以确保它实际上在那里?
  • 我这样做了,发现 dist/ 目录已创建,但发现后者 travic-ci 在部署之前清理工作空间,这就是部署期间 dist/ 目录不可用的原因
  • 老兄,你应该修改你的信用

标签: amazon-s3 gruntjs yeoman travis-ci yeoman-generator


【解决方案1】:

最后我发现travis-ci 在运行npm test 后默认清理工作区(删除dist/ 目录)。我找到了一个选项来指示 travis-ci no 清理工作区。我将skip_cleanup: true 添加到.travis.yml 并且工作正常。这是我编辑的 .travis.yml 文件:

deploy:
   . . . . . . .
  bucket: www.raeprojects.org
  local-dir: dist 
  skip_cleanup: true  // insures dist/ dir not to be deleted after npm test
  acl: public_read
  . . . . . 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2012-11-09
    • 2015-04-29
    • 2017-08-14
    相关资源
    最近更新 更多