Code Monkey home page Code Monkey logo

.github's People

Contributors

anna-ss avatar h-wata avatar jsupratman13 avatar mikhailbertrand avatar nyxrobotics avatar tacha-s avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

.github's Issues

Linterでreviewコメントにならずfilesにwarningが表示されるのみとなってしまう

概要
github tokenがPR reviewに対するwrite権限がないといって、
reviewコメントにならずfilesにwarningが表示されるのみとなってしまう

https://github.com/sbgisen/cube/runs/4577628832?check_suite_focus=true

再現手順
現状の設定のままCIを動かす

修正しないとどう困るか
正常にレビューコメントで修正点が見えない

原因
GitHubの設定を変更してしまったか、PR review周りの仕様が変わってreviewdogをアップデートしないといけないか。
もしくは全く別の問題か

修正案
調査中

pipで依存関係解決

rosdepはpipを使ったパッケージをインストールすることができるがpipを先にインストールする必要がある。
ros-build.ymlにpipインストール手順あるが、もっと初めの段階で行うべき

flake8-docstringsのチェック項目の検討

概要

D104では __init__.py にそのパッケージを説明するdocstringが書かれているかのチェックを行うが、
__init__.py にまでdocstringを書く必要があるか微妙なためignoreするかどうかを検討する。

目的

必要以上のチェックをしないようにし、開発者の負担を緩和するため

`***` imported but unused のエラーがignoreされてる

概要

flake8のチェックでF401(*** imported but unused)がignoreされてる。
特にignoreする理由がないのでignoreから外す。
(W503はW504と競合するためignoreする必要がある。)

目的

不要なimportのチェックを有効化するため

import を整理することについて

PR #49 でマージした結果以下の書き方ができなくなりました。個人的に前の書き方の方が見やすいと思いますので自動整理不可能であればisort使わずにこちらで整理した方がいいと思いますががいかがでしょうか?

通らない(前の書き方)

from geometry_msgs.msg import Pose, PoseStamped
from geometry_msgs.msg import Point
from geometry_msgs.msg import Quaternion
from geometry_msgs.msg import Vector3                                                                                                                                                                       
from geometry_msgs.msg import Transform, TransformStamped
from move_base_msgs.msg import MoveBaseGoal

通る(isortをかけた後)

from geometry_msgs.msg import Point, Pose, PoseStamped, Quaternion, Transform, TransformStamped, Vector3
from move_base_msgs.msg import MoveBaseGoal

issue, pull requestのテンプレートのディレクトリが間違っている

公式ドキュメントには
issue, pull requestのテンプレートの配置場所に関して以下の記載がある。

In the repository, create one of the supported community health files. Issue templates and their configuration file must be in a folder called .github/ISSUE_TEMPLATE. All other supported files must be in the root of the repository. For more information, see "Creating new files."

これに従うと[repository_root]/.github/ISSUE_TEMPLATE等に配置する必要がある。

ROSパッケージのbuild, testのworkflowでセットアップ用のscriptを走らせられるようにする

概要
ROSパッケージをbuildする際に、wstool, rosdep, catkin buildのみで環境を整えられない場合が存在するため、
そういったパッケージのためにsetup scriptを走らせられるようにする。

目的
独自のセットアップが必須のパッケージに対応するため

提案内容
パッケージ直下に setup.sh(もしくはinputで指定した名前) があればそれを実行するなど

ROSパッケージ用のLinterの追加

概要
ROSパッケージ用のlinterを追加する

目的
依存パッケージ等の記入漏れをチェックするため(catkin_lint)
c++の命名規則をチェックするため(clang-tidy)

提案内容

  • catkin_lint導入
  • clang-tidy導入

yamllintがwarningのみの場合にチェックが通過してしまう

概要

-s (strict)オプションをつけておらず、yamllintがwarningのみ出力している場合にチェックが通過してしまうため、
warning含めて修正させるには-sが必要

提案内容

-sのオプション追加
ついでにyamllintの設定見直し?(コメントつける際のスペースの数など)

reviewdogのバージョン更新が必要

概要

CI環境においてgitのバージョンが更新され、reviewdog実行時にエラーが出るようになった。(reviewdog/reviewdog#1158)
そのため、各reviewdog環境にてパッチが当てられているため、それらの適応されたバージョンに更新する必要がある。

対応すべきaction

action-suggesterやaction-setupはissue, prが出ていない、かつCIも今の所エラーを吐いていないため更新不要と思われる。

再現手順
修正しないとどう困るか

yamllint がLintエラーに関係なく失敗する

原因
修正案

roslaunchのlinterが複数ファイルが与えられたときに正常に動作しない

概要
複数のxmlファイルに変更があった際に正常に動作せずにCIがエラーを返してしまう

再現手順
複数のxmlファイルに変更を加えた状態でCIを動かす

原因
file_listがスペース区切りのリストを与えられたときに、リスト全体を文字列として受け取れていないため。

file_list=cube/package.xml cube_bringup/package.xml cube_description/package.xml cube_diagnostic/package.xml cube_expression/package.xml cube_gazebo/package.xml cube_hw_interface/package.xml cube_imu/package.xml cube_navigation/package.xml cube_server/package.xml cube_teleop/package.xml

Template ファイルの追加

概要

  • Reusable workflowsを含むTemplateを追加し、 既存のリポジトリに追加しやすい環境を作る
    目的
    同じWorkflowファイルを何度も作成する作業の簡便化のため。
    提案内容
    ros package用のWorkflowが溜まってきたらTemplate化を目指す。

タスク

  • 追加したいWorkflowがある場合は下記に記述
    • rostestを実行
    • cube-setup-by-ansibleによるROS環境構築 to CI/CD
  • templateファイル作成

PEP8準拠の命名規則がreviewdogでチェックされない

概要

クラス名はCamelCase、関数名はsnake_caseといったPEP8で定められている命名規則がreviewdogのflake8では引っかからない

#!/usr/bin/env python
# -*- coding:utf-8 -*-

class foo_bar(object):
    def __init__(self):
        pass
flake8 test.py
test.py:4:8: N801 class name 'foo_bar' should use CapWords convention

再現手順

命名規則のおかしいコミットをCIにチェックさせる

修正しないとどう困るか

命名規則を人力でチェックしないといけない

原因

reviewdogがpep8-namingを入れていない。
or
N***をスルーする

修正案
N***を拾ってreviewdog経由でreview commentつけるstepを追加する
or
reviewdogで拾えるようにする。

submoduleは考慮している?

ビルドテストする時に、rosinstallに入っているレポジトリのsubmoduleは考慮しているが、元のレポジトリのsubmoduleは考慮していますか?

noetic環境でのドキュメント生成

話題通り

現段階でnoetic distro/ubuntu 20.04上のドキュメント生成はまだ未検証なので今回はmelodicの場合ドキュメント生成する・noeticの場合ドキュメント生成しない形で大丈夫でしょうか

ではnoetic環境でのドキュメント生成のissue作っておいてください。

Originally posted by @Tacha-S in #83 (comment)

#83 で、melodic環境でsphinxを用いてドキュメントを自動生成する jobs を追加しましたが、noetic環境でドキュメント自動生成するjobsは追加していません。

Ubuntu 18.04とUbuntu20.04でインストールされるsphinx機能が異なるためドキュメント生成設定を検証する必要がある。

isortでのpackageの分類精度の向上

概要

python2のisortでは、以下のコードのように自身のパッケージ内のモジュールをimportしていても間違って3rd partyとして認識されていた。

cube_python_apiパッケージ内

...
from actionlib_msgs.msg import GoalStatusArray
from cube_python_api import utils
from geometry_msgs.msg import Point
from geometry_msgs.msg import PoseStamped
...

これが、python3のisortを用いると以下のように1st partyのモジュールとして正しく分類される。

...
from actionlib_msgs.msg import GoalStatusArray
from geometry_msgs.msg import Point
from geometry_msgs.msg import PoseStamped
...

from cube_python_api import utils

# local import (e.g. relative import)
...

ただし、python3のisortを用いる条件として、init.pyの書き方を工夫しなければいけません。

  1. __init__.pyのimportを絶対パスで書く
  2. __init__.pyのimportを相対パスで書く(例: from . import ***)

補足として、python3からはimplicit relative importが禁止となり絶対パスか相対パスでのimportが必要となりpython3でimport pathを解釈できるようにする必要があるためです。
これらの書き方はpython2でも有効ですし、今後python3(noetic)をサポートしていくのであればpython2,3互換のある書き方にしていったほうがいいと思います。

isortのグループ分類を賢くしつつ、python3対応にも近づくのでできればisortをpython3で動かしていきたいです。

では__init__.pyの書き換えとして2つのうちどちらがいいかというと、
python的に相対パスはあまり推奨されない(PEPでも)ので絶対パスで書くようにするのがいいと思います。

目的

  • isortのグループ分けを賢くする
  • python 3でも動くようにしていく

提案内容
isortをpython3で動作させる

タスク

  • 細かいタスクに分解できているなら書き出す

ROSパッケージ用のLinter workflow追加

概要
ROSパッケージ全てに適用できるLinterのworkflowを追加する
目的
提案内容
reviewdogのgithub actionを用いて各種Linterを用意
タスク

  • flake8
  • yamllint
  • xmllint
  • format suggestion

isortのオプションに--force-single-line-importsを追加する要望

概要
isortを使うことでpythonのimportの整理ができるようになりましたが、デフォルトでモジュールをに一行にまとめるため少し見にくいです。個人差があると思いますが行が長くなりすぎるのを避けたいのでもし大丈夫なら--force-single-line-importsを付けて一行ごとに一つのモジュールにしたいです。

例:デフォルト

from geometry_msgs.msg import Point, Pose, PoseStamped, Quaternion, Transform, TransformStamped, Vector3

例:--force-single-line-imports

from geometry_msgs.msg import Pose
from geometry_msgs.msg import PoseStamped
from geometry_msgs.msg import Point
from geometry_msgs.msg import Quaternion
from geometry_msgs.msg import Vector3                                                                                                                                                                       
from geometry_msgs.msg import Transform
from geometry_msgs.msg import TransformStamped

目的

  • --force-single-line-importsを付ける

提案内容
多分以下の行にforce_singl_line = Trueを追加すれば行ける参考

.github/setup.cfg

Lines 11 to 12 in ab8cef3

[isort]
line_length=119

作りたてのROSパッケージリポジトリでテストがエラーになる

概要

https://github.com/sbgisen/ros-package-template やそれをテンプレートとして作成したような、
まだROSパッケージとして成形していないリポジトリでros-testがエラーとなる。(参考)

原因

リポジトリ名のパッケージが存在しないため

修正案

  • CMakeLists.txt, package.xmlがrepositoryにない場合skip
  • package名を指定できるようにする(default: repository名)

docstringのレビューをコメントではなくcheckタブを開いたときに見えるpr-checkに変更する

概要

docstringをまだ必須にしていないためコメントに現れると、

  • 議論を追いづらい
  • 50件以上コメントしようとするとlimitでCIエラーとなってしまう

などが確認できたのでpr-reviewからpr-checkに変更する。

目的

  • 開発者同士の議論を追いやすくする
  • 多数警告が出てもCIがエラー終了しないようにする。

catkin_lintにPathの指定がない

概要
下記のエラーを取得したので調査した。
https://github.com/sbgisen/outdoor_navigation_tools/runs/4439795966?check_suite_focus=true

catkin_lint: cannot load rosdep database: No module named 'rosdep2'
catkin_lint: unknown dependencies will be ignored
catkin_lint: no path given and no package.xml in current directory
Error: Process completed with exit code 66.
  1. catkin_lint: cannot load rosdep database: No module named 'rosdep2'
    1. pip3 install rosdepが必要(参考 )
  2. catkin_lint: no path given and no package.xml in current directory
    1. 公式 にあるとおり、catkin_lint **path**で指定する必要がある

再現手順
手元でcatkin_lintを実行

修正しないとどう困るか
catkin_lintが正しく使えない。

原因
下記でPathを指定していない。

run: wget https://raw.githubusercontent.com/sbgisen/.github/main/.catkin_lint -O .catkin_lint
working-directory: ${{ github.workspace }}/ros/src/${{ github.event.repository.name }}
- name: catkin lint

修正案
catkin_lint pathを実行するようにする。

rosinstallの再帰的検索に関する問題

概要

buildフロー及びtestフローのvcstoolによるcloneのステップにて、再帰的にrosinstallファイルを探すことにより、問題が発生する場合がある。

- name: Download repositories managed by vcstool
run: |
if !(type vcs > /dev/null 2>&1); then
apt update && apt install -y python3-vcstool
fi
files=`find . -type f -regextype posix-egrep -regex "\./.+\.rosinstall"`
while [ `echo ${files} | wc -w` -gt 0 ]
do
echo ${files} | xargs -n1 vcs import --recursive --debug --input
rm ${files}
files=`find . -type f -regextype posix-egrep -regex "\./.+\.rosinstall"`
done

今回、noeticブランチのテストをするに当たって

  • ar_track_alver
  • eband_local_planner
    の各リポジトリをcubeリポジトリのrosinstallに追加する処置を行ったがこの際に、いずれのリポジトリにも自リポジトリを示すrosinstallファイルがTravis用に用意されており、テストが失敗する要因となった。

今回、それぞれフォーク先にてrosinstallファイルを削除することで対策を行ったが、build / testフローの再起処理の際に何かしらの対策が取れるのであれば取りたい。

isortの変更点をsuggestするように

概要

現状flake8-isortを用いて正しいかのチェックしかしていないが、
isortとreviewdogのsuggesterで変更内容をsuggestできるのでそちらに変更する。

目的

変更内容の明瞭化

提案内容

isort, action-suggesterを用いて書き直し

タスク

  • 細かいタスクに分解できているなら書き出す

テンプレートが汎用的な内容でない

概要
テンプレートがROS用のテスト項目を含んでいたり汎用的な内容でない。
#4 (comment)

目的
どのリポジトリに置いても使いやすいテンプレートにする。

提案内容

  • ROSパッケージ用のテスト項目をコメント化
  • 解決されるissueをRefの見出しでなくfix #*, close #*, resolve #*で書かせるようにする

削除したファイルも変更されたファイルとして含まれてしまっている

概要
削除したファイルも dorny/paths-filter によって取得されてしまっているため、
CIでファイルが存在しないとエラーが出る。

再現手順
ファイルを削除したコミットにてCIを回す

修正しないとどう困るか
[Errno 2] No such file or directory: ***
と出る上にCI通過してしまう。

原因
フィルタが正しく設定されていないため。

修正案
フィルタの設定added|modified: を追加する。

package.xmlのformat="3"に対応

概要

ROS Noeticの導入に当たって、pythonのバージョンによってrosdep installするaptパッケージを切り替えるために、一部のpackage.xmlにてformat="3"を導入したい。

package.xml変更例
sbgisen/autoware_common@3c286f8

そのため、Linterについてもformat="3"に対応できるようにしたい。

- name: xmllint package.xml
if: always()
env:
REVIEWDOG_GITHUB_API_TOKEN: ${{ github.token }}
run: |
wget http://download.ros.org/schema/package_format2.xsd
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
xmllint --noout --schema package_format2.xsd ${files} 2>&1 1>/dev/null |\
reviewdog -name="xmllint" -reporter=github-pr-review -efm='%f:%l:%m' -filter-mode=file -fail-on-error
fi

ccacheによるビルドの高速化

概要
travis CIでも採用していたccacheを採用し、ビルド時間を短縮する

目的
GitHub Actionsの時間節約のため

提案内容
ccacheによるcatkin buildの短縮
optionでON/OFFできるようにする?

package.xmlかlaunchファイルのいずれかのみが存在しているときにlinterがエラーを吐く

概要
package.xmlかlaunchファイルのいずれかのみが存在しているときに、ファイルが存在しない方のlinterがエラーを吐く。

修正しないとどう困るか
CIで本来エラーでないのにエラーと出てしまう。

原因
grepが一つもマッチせずerror codeを返すため。

修正案
grepがエラーを返さないようにしてマッチしたファイルが存在するか確認を入れる。

wstoolではなくvcstoolを使う

概要
wstoolと違って、vcstoolはgit clone --recursiveに対応するオプションがあるのでそちらを使う。
下位互換性もあり、従来の.rosinstallファイルも利用できる。
目的
提案内容
ROS周り設定を行うActionでwstoolを使っているところをvcstoolを使うように修正

Ubuntu20.04向け環境の設定

概要

ROS Noetic on Ubuntu 20.04のテストを走らせようとした場合に、self hosted runnerにて走るtestフローにてUbuntuのバージョンが異なるため、トラブルが発生する。以下のいずれかの対策が必要となる。

  1. ROS Noetic関連リポジトリに関しては開発のメインストリームとなるまではtestフローを省略する
  2. Self Hosted Runnerにて走らせるサーバー環境をDockerベースのものに変更する

OS環境が異なるテストが行えない。

概要

現状melodic(ubuntu 18.04)しか動かしていないため、
noetic(ubuntu 20.04)のブランチを同時進行でテストしようとするとubuntu 18.04上でテストしようとしてしまうため
両環境が壊れてしまうため、host runnerを18.04, 20.04両方用意する、タグなどでテスト実行先を適切に選ぶ必要がある。

目的

サポート環境の拡充

ROSパッケージのビルド、テストに関するwrokflowの追加

概要
ROSパッケージのビルド、テストを行えるworkflowを作成し、使いまわせるようにする。
目的
ROSパッケージのビルド可否、テスト通過の自動化を容易に導入できるようにするため。
提案内容

  • Self hosted server側, GitHub側にそれぞれどこを任せるかの決定

ドキュメントを生成するオプションまたはworkflow

概要
ドキュメントをCIで自動生成する仕組みが欲しい。イメージとしてsphinxでドキュメントを生成して、生成したファイルをgh_pagesなど別ブランチでプッシュする

目的
提案内容
sphinxでドキュメントを生成する時に、モジュールのインポートが必要なため、環境を整える必要がある(ビルドや依存関係をインストール)。ここでドキュメントを生成するオプションを付ける方法について以下のどちらかを考えています:

  1. ros-build.ymlの中にドキュメントを生成するオプションを付ける
  2. ドキュメントを生成するworkflowを作る

あまりworkflowについて分からないことが多いので教えて欲しいところがありますが、ドキュメント生成する時はPRを投げる・commitする時で、生成したドキュメントを別ブランチにプッシュする時はdevelop/main/masterブランチにマージする時のみて可能でしょうか?

タスク

  • 細かいタスクに分解できているなら書き出す

MergeされていないPRがDraftに含めてしまう

概要
Release DrafterがPull Requestが更新されたときに、draftを生成してしまいmergeされていないPRの更新で
上書きされてしまう。

再現手順
Release Drafterが設定されているリポジトリでPRをなげる。

修正しないとどう困るか
Draftの更新がおもわぬところで発生する。

修正案
Release Drafterのoptionにdisable-releaserがあるので設定

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.