このブログを検索

2016/11/14

Jenkinsからgitの差分を定期的にチェックする方法

特定ファイルの変換を追うためです。

master branchにマージされたcommitを定期的にみてある拡張子だけのファイルのリストを取得する。

  • Jenkins Plugin
https://wiki.jenkins-ci.org/display/JENKINS/Github+Plugin

  • Jenkins job config
- Build Triggers -> Poll SCM のSchedule
 : H/5 * * * * を指定
- Build ->  Add Execute shell
# 削除(D)以外の差分ファイル名を取得する。
git diff --diff-filter=d --name-only ${GIT_PREVIOUS_COMMIT} ${GIT_COMMIT} | grep -e ".*.ddl"


--diff-filter=d  がjenkinsのexecute shell からはうまく動かなかったから次のように修正。

```
# I can not use option --diff-filter=d. If you can fix this line
git diff --name-status ${GIT_PREVIOUS_COMMIT} ${GIT_COMMIT} | grep -i ".*.ddl" > list.txt

cat ${GIT_PATH}/list.txt | while read f
do
  if [[ "$f" == D* ]]; then
    echo $f | sed -e "s/D[<tab><space>]*//g" >> delete_list.txt
  else
    echo $f | tr '\t' ',' | sed -e "s/.,*//" >> change_list.txt
  fi
done
```


参考:
https://www.git-scm.com/docs/git-diff



2016/11/11

Orientdb + mybatis error log

問題: NullPointerExceptionが発生する。
Select a, b from tableの結果が
1 レコード目: b
2 レコード目: null
の場合、次のエラーが発生する。

Caused by: java.lang.NullPointerException
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:186)
    at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:89)
    at org.apache.ibatis.io.Resources.classForName(Resources.java:261)

エラー発生バージョンは、orietndb-jdbc-2.2.12

原因:ResultSetの値を格納するclassをloadするときにbの該当するclassの指定がない。

解決:  Select a, ifnull(b, "null") as b from tableのようにifnullを利用した。