Travis コマンドでのエラー

Posted on Sat 02 January 2016 in blog

Travis CIでCIする素振りをしていたら、最新版のtravisコマンドでエラーが出るようになった。

発生した問題

$ travis setup releases
Invalid scheme format: [email protected]
for a full error report, run travis report

問題の解析

こういう時には、

$ travis report

をして、スタックトレースを見るものらしい。

$ travis report
System
Ruby:                     Ruby 2.3.0-p0
Operating System:         Mac OS X 10.11.2
RubyGems:                 RubyGems 2.5.1

CLI
Version:                  1.8.0
Plugins:                  none
Auto-Completion:          yes
Last Version Check:       2016-01-02 14:54:05 +0900

Session
API Endpoint:             https://api.travis-ci.org/
Logged In:                as "<username>"
Verify SSL:               yes
Enterprise:               no

Endpoints
org:                      https://api.travis-ci.org/ (access token, current)

Last Exception
An error occurred running `travis setup`:
    Addressable::URI::InvalidURIError: Invalid scheme format: [email protected]
        from /Users/<username>/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/addressable-2.4.0/lib/addressable/uri.rb:867:in `scheme='
        from /Users/<username>/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/addressable-2.4.0/lib/addressable/uri.rb:795:in `block in initialize'
        from /Users/<username>/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/addressable-2.4.0/lib/addressable/uri.rb:2302:in `defer_validation'
        from /Users/<username>/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/addressable-2.4.0/lib/addressable/uri.rb:792:in `initialize'
        from /Users/<username>/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/addressable-2.4.0/lib/addressable/uri.rb:135:in `new'
        from /Users/<username>/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/addressable-2.4.0/lib/addressable/uri.rb:135:in `parse'
        from /Users/<username>/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/travis-1.8.0/lib/travis/cli/repo_command.rb:71:in `detect_slug'
        from /Users/<username>/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/travis-1.8.0/lib/travis/cli/repo_command.rb:60:in `find_slug'
        from /Users/<username>/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/travis-1.8.0/lib/travis/cli/repo_command.rb:21:in `setup'
        from /Users/<username>/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/travis-1.8.0/lib/travis/cli/command.rb:197:in `execute'
        from /Users/<username>/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/travis-1.8.0/lib/travis/cli.rb:64:in `run'
        from /Users/<username>/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/travis-1.8.0/bin/travis:18:in `<top (required)>'
        from /Users/<username>/.rbenv/versions/2.3.0/bin/travis:23:in `load'
        from /Users/<username>/.rbenv/versions/2.3.0/bin/travis:23:in `<main>'


For issues with the command line tool, please visit https://github.com/travis-ci/travis.rb/issues.
For Travis CI in general, go to https://github.com/travis-ci/travis-ci/issues or email [email protected].

見た感じ、addressable というモジュールでパースに失敗しているらしい。

travis.gemspec を見ると、確かに、 addressable というモジュールがあるけど、

s.add_dependency "addressable",           "~> 2.3"

という指定になっている。一方で、上記のスタックトレースでは、addressable-2.4.0 を使っているので、当たりをつけて以下を実行する。

$ gem uninstall  addressable
$ gem install -v2.3.8 addressable

これで、travis コマンドが正常に実行できるようになる。

ISSUE上での話

というところまで来て、改めて、issueを見てみたところ、https://github.com/travis-ci/travis.rb/issues/342 で議論されている。
結論としては、以下の通りで、現状はまだ未修正だった。
"addressableモジュールでは、URIをparseするためのライブラリだけど、SCP styleのURIというのは、RFCにもなってないので、addressableモジュールでサポートするものではないよ。なので、 travisコマンド側でハンドルしよう。"