travis-ciおよびdrone.ioのレポートとグラフ


大規模なプロジェクトでは、テストやレポートの実行、自動展開など、かなり長い間ciに慣れてきました。 小さなプロジェクトを開発するとき、これは十分ではありません。 Travis-ci(well、またはdrone.io)は1と3をカバーしていますが、結果の視覚化はありません。

そしてすぐに簡単な解決策を思いつきました:


そして、これらすべてが小さなアプリケーションになりました-coviolations.ioサーバーアプリケーションのソース)、今では


プロジェクトへの接続方法


プロジェクトに接続するには、 .covio.ymlファイルを追加する必要があります。次に例を示します。
 violations: pep8: pep8 . --exclude='*migrations*' sloccount: sloccount . pip_review: pip-review py_unittest: cat python_tests.txt testem: cat testem.out 

左側はアナライザーの名前、右側はその出力を取得するコマンドです。

プロジェクトをプロジェクト管理に含め、 covio呼び出しを追加します。
.travis.yml場合:
 after_script: - pip install coviolations_app - covio 

そして、droner.ioとjenkinsの場合:
 pip install coviolations_app COVIO_TOKEN="token" covio 

tokenはプロジェクトページで取得できます。

必要なアナライザーのパーサーはありません


パーサーが必要なければ、簡単に作成できます。 パーサー自体は、Pythonの単なる関数です。
 from tasks.const import STATUS_SUCCESS, STATUS_FAILED from .base import library @library.register(' ') def parse_violation(data): # data['raw'] -    data['preview'] = data['raw'][:10] #    data['prepared'] = data['raw'] + '!' #    data['status'] = STATUS_SUCCESS #  STATUS_FAILED,    data['plot'] = { #      'lines_count': len(data['raw'].split('\n')), 'random_value': 5, } return data 

利用可能なパーサーは違反にあります。

中身は?




サーバー部分はdjangoで記述され、apiはtastypieを介して実装されます 。 アナライザーの結果の処理は、 rqで作成されたワーカーのスタックで行われます。 サーバー側の通信はすべてredisを介して行われます。 データはmongodbpostgresqlに保存されます。 ブラウザクライアントは、 backbone.jsを使用してcoffeescriptで記述されています。 チャートはchart.jsを使用して描画されます。 クライアントは、rest apiおよびsockjsを介してサーバーと通信します。

ローカルに展開する方法は?


ローカルバージョンを展開するには、プロジェクトのクローンを作成し、ファブリックとバウアーをインストールします。
 git clone https://github.com/nvbn/coviolations_web.git pip install fabric npm install bower 

設定ファイルをcoviolations_web/settings/dist.pyからcoviolations_web/settings/dist.pyにコピーして入力します。 local_nvbn.pyには私のローカル設定があり、 local_production.pyには本番の設定があります。

そして、すべてを以下で展開します
 fab install 

確認するには、次のコマンドでテストを実行できます。
 ./manage.py test violations projects tasks services app push 

開始するには、次のコマンドを実行する必要があります(各コマンドは個別のコンソールで)
 ./manage.py runserver ./manage.py runpush ./manage.py rqworker 

結果をcovioからローカルにデプロイされたインスタンスに送信するには、 covioに追加し.covio.yml
 endpoint: http://localhost:8000/api/v1/tasks/ 


計画


現在、組織のリポジトリのサポートを追加し、それらへの自動コメント付きプルリクエストと多くの多くのパーサーをチェックする予定です。 また、アナライザーの結果からコードに注釈を付けたいと考えていますが、これは非現実的です。

参照資料


Source: https://habr.com/ru/post/J193394/


All Articles