このブログはビルドはWerckerを使っていますが、 その後リンクのチェックなどをするためにもう一度Travis CIでチェックを行っています。
その中で2週間ほど前からチェックするジョブが失敗していたので修復。
現在のブログのworkflow
このブログはOctopressを使っていてGitHub Pagesで公開しています。
その際に元のOctopressで書いている部分はBitBucketのプライベートレポジトリを使って 管理しています。 下書きとか特に出して困るものでも無いのですが無駄に公開するのもあれなので。
BitBucketを使っているのは以前はGitHubでは無料でプライベートレポジトリを使えなかったからですが、
そのBitBucketにpushしたコードをCIサービスのWerckerでビルドします。 ここでWerckerを使ってる理由はWerckerだとプライベートレポジトリでも無料で使えるからです(BitBucketでもGitHubでも)。
その後、出来上がっったHTML達はGitHubにpushされGitHub Pagesの機能を使って公開されます。
これでブログの公開までは出来ますが、さらにGitHubにpushされたら それをTravis CIが受け取ってリンク切れなどのチェックを行っています。
その後でもう一度GitHubにpushし直していますが、 これは管理用のページに結果を足して自分で見やすくしているだけです。
まとめるとこんな感じ。
BitBucket/GitHub、Wercker/Travis CIと同じ様なサービスを2つずつ使っているのが微妙ですが、 BitBucketやWerckerは今はここでしか触ってないのでサービスを知っておく機会としても残しておこうかな、と思ってます。
あとはいい加減Octopressを使い続けるのもどうかな、とは常々。 もう3.0に向けての開発も進んで無いようですし、今後アップデートは期待できません。
ちょっと工夫してビルド時間はこのポスト数でもまともに使えるレベルには出来ていますが、 普通にビルドしたら1時間じゃ済まないレベルです。
そういった事もあって多くの人はHugoに移行している様に見えます。
あとはRubyからGoに移る、というのも個人的にはやりたいかな、と思う理由の一つです。 Goを触る機会がないのでこれを機に使う様になりたい。
簡単な移行スクリプトでHugoのプロジェクトを作ってビルドしてみたところ確かにビルドのスピードは圧倒的に早かったです。 上の様な工夫をしなくても数分レベル。
ただプラグインなどを全て使えるようにするのが大変なのでまだ出来ていません。。。 (何回かトライしようとしては途中で挫折する繰り返し。。。)
これはそのうち。
ちなみにさらに関係のない話になりますが、WerckerがOracleに買収されていて
https://wercker.comに行くと
Oracle Buys Wercker
というページに飛ばされる様になっていてちょっとびっくり。
Werckerはhttps://app.wercker.com/
と、app
のついたURLからアプリケーションが使える様になっています。
(Oracleのページってシンプルなので逆に何かフィッシングサイト系な感じに見えてWerckerに行ったはずなのにこのページが出るとちょっとビビる。。。)
Travis CIで起こったエラー
話が逸れましたが、上の最後のTravis CIでのリンクチェックなどをしているジョブのセットアップのところで失敗する様になっていました。
- 最後に成功したもの: Build #2418 - rcmdnk/rcmdnk.github.io - Travis CI
- 失敗が始まったもの: Build #2419 - rcmdnk/rcmdnk.github.io - Travis CI
エラーとしては
The program 'ant' is currently not installed. To run 'ant' please ask your administrator to install the package 'ant'
というのが出ています。
上の2つのビルドを比べると環境として 成功したものが
Operating System Details
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
なのに対して失敗したものが
Operating System Details
Distributor ID: Ubuntu
Description: Ubuntu 16.04.6 LTS
Release: 16.04
Codename: xenial
となっていました。
で、Travis CIのJavaプロジェクトのの説明ページを見てみると
Because there is no single standard way of installing project dependencies with Ant, you need to specify the exact command to run using install: key in your .travis.yml, for example:
と書いてありました。
ということで原因はTravis CIでデフォルトのLinux環境がUbuntu 14.04.5 trustyからUbuntu 16.04.6 xenialに変わったことで antが最初から入っていない状態になっていたからでした。
ちなみにこのチェック用のプロジェクトはJavaではなくて
language: python
python: 2.7
と言った形(.travis.yaml)のPythonのプロジェクトになっていました。 それでもtrustyだとJavaおよびantは入っていたようです。
xenialに対応(antを入れる)
ということでantを入れればよいわけですが、Pythonを使いたいのでとりあえずそのままJavaを入れようとすると
addons:
apt:
packages:
- oracle-java8-installer
と.travis.yamlに書けば良いような感じなのですが、
E: Package 'oracle-java8-installer' has no installation candidate
みたいなエラーが出て駄目。他に古い?記事などで
oracle-java8-set-default
や
oracle-java8-set-installer
といったものも見かけたのでやってみるとこれらも
E: Unable to locate package oracle-java8-set-installer
E: Unable to locate package oracle-java8-set-default
とか出てだめ。ただこれらはあるにはあるみたいなのでなんか設定がおかしいみたいです。
で、特にJavaを他で使ってるわけでもないので動けば良い、ということで プロジェクトをJavaにしてPythonは横から入れるようにしました。
language
などの設定を
dist: xenial
language: java
addons:
apt:
packages:
- ant
とします。一応今後突然default OSが変わっても良いようにOSも指定。
逆にいうと今ならtrustyを指定すれば元のママ動くのですがそのうち使えなくなるかもしれないのでxenialで動くようにしました。
language
をJavaにしてantをaddons
で入れます。
これで試しにやってみると、環境としてPython 2.7が入っているようなのでPythonを別途入れる必要はなさそう。
ただ、pip
などでパッケージをインストールしている箇所で
ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/xdg'
Consider using the `--user` option or check the permissions.
みたいなエラーが出てしまいました。
今まであまり意識してませんでしたが、どうもlanguage
に指定した言語に関しては
システム領域の管理権限を持った状態で作業が進められる一方、
他の部分は通常ユーザーとしていじれない様になっているみたいです。
(少なくともPythonは。)
特にシステム領域に入れたい理由もないのでpip install --user <package>
みたいな感じで--user
を足してユーザー領域に入れるようにしてあげればOK。
最終的に以下の様な変更で動くようになりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|