Closed MikhailBertrand closed 2 years ago
@Tacha-S
こんな感じで1回format2でlint走らせて、最初の一行でフォーマット違いによるエラーが発生していたらformat3で走らせようと思うんですがいかがです?
run: |
files=`echo ${{ needs.changes.outputs.xml_files }} | xargs -n 1 | grep -E ".*package.xml" || true`
if [ -z ${files} ]; then
echo "There are no package.xml files."
else
wget http://download.ros.org/schema/package_format2.xsd
xmllint --noout --schema package_format2.xsd package.xml 2>/tmp/format2
line=$(head -1 /tmp/format2)
if [[ "${line}" = *"Schemas validity error : Element 'package', attribute 'format'"* ]]; then
wget http://download.ros.org/schema/package_format3.xsd
xmllint --noout --schema package_format3.xsd ${files} 2>&1 1>/dev/null |\
reviewdog -name="xmllint" -reporter=github-pr-review -efm='%f:%l:%m' -filter-mode=file -fail-on-error
else
cat /tmp/format2 |\
reviewdog -name="xmllint" -reporter=github-pr-review -efm='%f:%l:%m' -filter-mode=file -fail-on-error
fi
fi
xmlのヘッダ <?xml version="1.0"?>
の書き方がおかしいなど、packageのelementより先にerrorが出ることもあると思うのと、
メタパッケージを含むリポジトリ等で複数のpackage.xmlが存在するときに、あまりないとは思いますがformat 2とformat 3が混在しているとformat 3が強要されるのが気になります。
確かに…
xmlのヘッダ <?xml version="1.0"?> の書き方がおかしい
この場合はどちらにしても(format2でも3でもlintを走らせると)エラーが発して指摘されそうなんで無視で良い気もします。
メタパッケージを含むリポジトリ等で複数のpackage.xmlが存在するとき
for文で回すようにすれば良さそうですね。
ところで上記のように/tmp/hoge
ファイルに1回標準エラーを記述したい場合にCIエラー落ちしないようにするにはどうすれば良いですか?
この場合はどちらにしても(format2でも3でもlintを走らせると)エラーが発して指摘されそうなんで無視で良い気もします。
確かにそうですね。
ところで上記のように/tmp/hogeファイルに1回標準エラーを記述したい場合にCIエラー落ちしないようにするにはどうすれば良いですか?
error statusを返すコマンドに | true
をつけるとかですかね。
forで回すのであれば sed
とかでformat="n"
のnの部分だけ取ってこれば--schema package_format${version}.xsd
みたいにできそうじゃないですか?該当行がないとエラー落ちするだけになってしまいそうですが。
forで回すのであれば sed とかでformat="n"のnの部分だけ取ってこれば--schema package_format${version}.xsdみたいにできそうじゃないですか?該当行がないとエラー落ちするだけになってしまいそうですが。
for文回さなきゃいけないならその方が素直なのでそれでいきますかね。 該当行がない場合にエラーで落ちるのは正しいので問題なさそうですね。
概要
ROS Noeticの導入に当たって、pythonのバージョンによってrosdep installするaptパッケージを切り替えるために、一部のpackage.xmlにて
format="3"
を導入したい。package.xml変更例 https://github.com/sbgisen/autoware_common/commit/3c286f8ac03cd7874a847226ad2bae68a37965b4
そのため、Linterについても
format="3"
に対応できるようにしたい。 https://github.com/sbgisen/.github/blob/2403c3ae904adf3f60902138839bf0e19212932a/.github/workflows/linter_ros_package.yaml#L207-L219