rcmdnk's blog

20190807_workflow_200_200

このブログはビルドはWerckerを使っていますが、 その後リンクのチェックなどをするためにもう一度Travis CIでチェックを行っています。

その中で2週間ほど前からチェックするジョブが失敗していたので修復。

Sponsored Links

現在のブログの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し直していますが、 これは管理用のページに結果を足して自分で見やすくしているだけです。

まとめるとこんな感じ。

20190807_workflow.png

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でのリンクチェックなどをしているジョブのセットアップのところで失敗する様になっていました。

エラーとしては

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-defaultoracle-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。

最終的に以下の様な変更で動くようになりました。

.travis.yaml
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
diff --git a/source/.travis.yml b/source/.travis.yml
index 29144a7a..9f348ba1 100644
--- a/source/.travis.yml
+++ b/source/.travis.yml
@@ -1,9 +1,9 @@
-language: python
-python: 2.7
-#addons:
-#  apt:
-#    packages:
-#      - oracle-java8-set-default
+dist: xenial
+language: java
+addons:
+  apt:
+    packages:
+      - ant
 env:
   global:
     - GIT_COMMITTER_NAME=rcmdnk
@@ -23,10 +23,10 @@ install:
   - cd ../
   - git clone https://github.com/linkcheck/linkchecker.git
   - cd linkchecker
-  - pip install -r requirements.txt
-  - python setup.py install
+  - pip install --user -r requirements.txt
+  - python setup.py install --user
   - cd $curdir
-  - pip install html5validator
+  - pip install --user html5validator
   - git clone https://github.com/w3c/css-validator.git
   - cd css-validator
   - ant jar
Sponsored Links
Sponsored Links

« Windows 10 May 2019 Update: エクスプローラーで日付ごとグループ分けになっていたのを解消したりした holiday_jp-goを使って土日祝日以外だけcronジョブを実行する »