Help us understand the problem. What is going on with this article?

travis CI の仕様変更によりPerlの古いバージョンの自動テストがうまくいかない件を解決する

症状

  • Travis.CIにてPerl5.20以下のビルドに失敗する。
  • githubに上げてる.travis.ymlはいじってない。

解決策

.travis.ymlの冒頭にdist: trustyと添えるだけでで治る。

原因その1

travisが初期状態で持ってるperlbrewのバージョンが古い?
perlbrewでソースを読みに行くURLが404 not foundcurlに失敗している。
よって、perlbrew use 5.xxに失敗。初期状態でperlbrew listに入っている5.22以上だと影響がない。

原因その2

Module::Build::Tiny のバージョンが古い?

cpanfile

on configure => sub {
    requires 'Module::Build::Tiny', '0.039';
};

とわざわざ最新のバージョンを指定しているのにも関わらず、

Can't locate Module/Build/Tiny.pm in @INC (you may need to install the Module::Build::Tiny module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at Build.PL line 9.

と、怒られる。この事象だけなら.travis.yml

before_install:
  - 'cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)'
  - 'cpanm Module::Build::Tiny'

と明示的なインストールをすることで解決するが、そもそもdist: trustyと指定した場合、この記載はいらないことを確認したし、そうでない場合はperlbrew use 5.xxに失敗してもテストが止まらず、指定していないバージョンでテストを走らせてpassしてしまうという謎の大暴走を起こすので全くお勧めできない。

結論

.travis.ymldist: trustyと入れれば従来通り後方互換性を自動確認しながらモジュールを更新できる。

dist: trusty
language: perl
sudo: false

perl:
- '5.8'
- '5.10'
- '5.12'
- '5.14'
- '5.16'
- '5.18'
- '5.20'
- '5.22'
- '5.24'
- '5.26'
- '5.28'
- '5.30'
...

なぜ?

わかりません。curlの先が404 not foundになっている時点で参照元のデータベースが古いか、バグかを疑うところなんですが、travis CIのサポートにメールで問い合わせた結果としてdist: trusty使えばええねん、という回答しか来なかったので。

この件を深掘りできる方のコメントおよび編集リクエストお待ちしております

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away