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/
      
      







計画



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



参照資料






All Articles