
大規模なプロジェクトでは、テストやレポートの実行、自動展開など、かなり長い間ciに慣れてきました。 小さなプロジェクトを開発するとき、これは十分ではありません。 Travis-ci(well、またはdrone.io)は1と3をカバーしていますが、結果の視覚化はありません。
そしてすぐに簡単な解決策を思いつきました:
- ci側でアナライザーを実行します。
- 自分に送ってください。
- 結果を解析し、美しく表示します。
そして、これらすべてが小さなアプリケーションになりました
-coviolations.io (
サーバーと
アプリケーションのソース)、今では
- パブリックおよびプライベートgithubリポジトリで動作します。
- travis-ci、drone.io、およびオプションでジェンキンスで動作します。
- pep8、sloccount、python unittest、pip-review、testemの結果を解析できます。
- ステータスダイスを描くことができます
; - travis-ciを使用して、パブリックプロジェクトのプールリクエストにコメントできます。
- 組織リポジトリの操作方法がわからない。
プロジェクトへの接続方法
プロジェクトに接続するには、
.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):
利用可能なパーサーは
違反にあります。
中身は?

サーバー部分は
djangoで記述され、apiは
tastypieを介して実装され
ます 。 アナライザーの結果の処理は、
rqで作成されたワーカーのスタックで行われます。 サーバー側の通信はすべて
redisを介して
行われます。 データは
mongodbと
postgresqlに保存されます。 ブラウザクライアントは、
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/
計画
現在、組織のリポジトリのサポートを追加し、それらへの自動コメント付きプルリクエストと多くの多くのパーサーをチェックする予定です。 また、アナライザーの結果からコードに注釈を付けたいと考えていますが、これは非現実的です。
参照資料