
大規模なプロジェクトでは、テストやレポートの実行、自動展開など、かなり長い間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): # 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を介して行われます。 データは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/
計画
現在、組織のリポジトリのサポートを追加し、それらへの自動コメント付きプルリクエストと多くの多くのパーサーをチェックする予定です。 また、アナライザーの結果からコードに注釈を付けたいと考えていますが、これは非現実的です。