CICDプロジェクト開発の実践的探求 | 京東物流技術チーム

この記事では、CICD に関する著者の理解と、プロジェクトに CICD を実装するためのいくつかのシナリオを紹介し、各シナリオの実践の主要なノード、それがもたらす利点、および特定のプロジェクトの実際の適用についてまとめます。読者は、この記事で説明されているシナリオ、または記事で説明されている実践的な方法から学び、プロジェクトで CICD を実行し、プロジェクトの継続的統合展開に対する具体的なサポートを提供できます。

 

1 はじめに

同社の Bamboo、EOS、SonarQube プラットフォームに基づいて、CICD の継続的な統合と展開がプロジェクトで実行されます。CICD開発の現場とプロジェクトでの実践、その後の計画について紹介します。

2 CICDの基本概念

CICD は、継続的インテグレーションと継続的デプロイメントの略です。これは、開発プロセスにおける一連のスクリプトの自動実行を指し、開発中にバグが発生する可能性を減らし、開発から展開までの新しいコードのプロセスにおける手動介入を最小限に抑えます。

CICD コア: 継続的インテグレーション、継続的デプロイメント、継続的デリバリー。

CI:Continuous Integration、継続的インテグレーションの意味。

コードをリモート ウェアハウスにプッシュした後、この送信がメイン ブランチにマージされる前に、一連のテスト、構築、その他のプロセスが実行されます。
ウェアハウスにアプリケーション コードが保存されており、開発では毎日何度もプッシュされると想定します。プッシュごとに、アプリケーションにエラーが発生する可能性を減らすための自動テスト用の一連のスクリプトを作成できます。開発ブランチを含む複数のブランチに適用できます。
継続的インテグレーションのプロセスでは、メインラインのマージ後のすべての提出物の品質を保証し、起こり得る問題を警告するために、自動テスト検証の結果を非常に重視しています。

CD:Continuous Delivery、継続的デリバリーの意味。

これは、CI の完成後に検証済みのコードを自動的にウェアハウスにリリースできることを意味します。
継続的デリバリーの目標は、コードベースを本番環境にデプロイできる状態にすることです。

CD: Continuous Deployment。継続的なデプロイメントを意味します。

これは、継続的統合に基づくさらなるステップを指し、プッシュ リポジトリ ウェアハウスのデフォルト ブランチのコードを特定の環境にデプロイすることを指します。
自動化されたビルド、テスト、デプロイのループにより、高品質の製品を迅速に提供します。これは、ある程度、開発チームのエンジニアリングの程度を表します。既存のすべてのワークフローを通過する変更は、顧客と直接会うことになります。変更がワークフローに組み込まれない場合にのみ、製品ラインへの展開を妨げることができます。

3 CICDの開発シナリオ

3.1 コンパイルとデプロイ

j-one上での手動ビルド・デプロイ操作を代替し、コード送信後の自動コンパイル・デプロイ処理を実現

コンテンツ:

  • 自動ビルド、自動デプロイ、コード送信後のビルド デプロイ結果通知。

所得:

  • Jone でのコードのビルドが完了した後の手動デプロイメント操作での待ち時間をなくします。

3.2 単体テスト

Junit ベースの単体テストを実行する

コンテンツ:

  • バックエンド コードについては、Junit に基づいて単体テスト スクリプトを作成し、単体テストを実行し、単体テスト レポートと jacoco コード カバレッジ レポートを取得します。

所得:

  • テストカバレッジを向上させ、コードの品質を向上させます。
  • バグを減らし、バグを迅速に特定します。
  • サポートが限定されたリファクタリング。

3.3 コードスキャン

SonarQube ベースのコード品質検出を実装する

EOSベースのコード品質検出を実装する

コンテンツ:

  • SonarQube または企業プラットフォーム EOS に基づいてコード スキャン検出を実現します。
  • コードを送信すると、コード スキャンが自動的にトリガーされ、最終的にレポートと結果通知が生成されます。
  • スキャン結果はプロジェクトの品質に含まれ、問題が記録され、問題が閉ループで解決されるまで追跡されます。

所得:

  • コード品質検出の豊富な手段。
  • コードの品質を向上させるためのマルチレベルの自動テスト。
  • テスト実行を自動的にトリガーし、テストの待ち時間を短縮し、効率を向上させ、無人化を実現します。

3.4 自動テスト

Python、EasyOne、DeepTest、Jmeterをベースとした自動テストを実現します。

コンテンツ:

  • SonarQube に基づいてコード品質検出を実装します。
  • リンク全体の各リンクの自動テストを実現します。
  • コードを送信すると、テストの実行、レポートの生成、レポートの通知が自動的にトリガーされます。

所得:

  • コードの品質を向上させるためのマルチレベルの自動テスト。
  • テスト実行を自動的にトリガーし、テストの待ち時間を短縮し、効率を向上させ、無人化を実現します。

3.5 フルリンクテストの探索

上記の個々のシナリオを組み合わせて完全なリンク テスト シナリオを形成します。
コードを送信すると、リンクの自動操作、レポートの生成、電子メールの送信がトリガーされます。

4 プロジェクトの実践

社内プラットフォームと組み合わせて実際のプロジェクトでCICDを実施。

4.1 社内プラットフォーム

Bamboo
Bamboo は、JD.com によって開発された CI/CD パイプライン ソリューションのセットで、ソフトウェア開発のライフ サイクル全体をカバーします。

EOS
EOS は、Technology and Data Center が独自に開発したコード スキャン システムです。コードをスキャンして分析することで、プロジェクト内の不規則なコード セグメントを特定し、修正の提案を提供します。開発者を効果的に監督および制限して、コーディング習慣を統一し、問題を軽減します。不規則なコーディングによって引き起こされる低レベルのエラーにより、コードの可読性が向上し、チームワークの効率が向上します。

4.2 プロジェクトの実用化

1) コンパイルとデプロイ

Jone 上の高頻度ビルド デプロイメント ブランチのパイプラインを Bamboo 上に構築して、次のことを実現します。
コードの送信 - Jone のビルドの呼び出し - Jone のデプロイメントの呼び出し - 結果通知

コンパイルとビルドをトリガーするいくつかの方法:

  • 手動実行。
  • コードの送信により実行がトリガーされます。
  • タイミングタスクが実行をトリガーします。
  • 他のパイプラインをカスケードして実行をトリガーします。

適用状況:

  • グループ内のすべてのテストとカバレッジには、関連するパイプラインがデプロイされています。
  • 合計 364 回の呼び出しにより、テスターがテスト対象のプロジェクトに自動ビルド パイプラインをデプロイできるようにサポートします。

2) 単体テスト

バックエンド プロジェクトの単体テストを実行して、
コードの送信 - Maven のビルド - 単体テスト レポートの取得 - 結果の通知を実現します。

適用効果:

  • 単体テスト レポートを取得するプロセスが大幅に簡素化されます。単純なプロセスを通じて、プロジェクトの単体テストを実行し、単体テストを実行して、単体テストの結果を取得できます。
  • 単一テスト パイプラインを展開する 8 つ以上のプロジェクトをサポート、JDL-CRM 権限システム単一テストの効果的な改善率: 20%

3) 自動テスト

プロジェクトのデプロイ後、プロジェクトがオンラインになる前に自動回帰テストを実行して、
自動テスト - テストレポート - テスト結果通知を実現します。

現在、Python 言語に基づいており、Py サードパーティ モジュールに依存して、スクリプトを実現し、Bamboo プラットフォームに統合し、パイプラインを実行し、レポートを取得します。

適用効果:

  • 販売およびサービス プロジェクトでオンライン化する前の UAT 自動回帰テストを担当します。

4) コードスキャン

同社が構築した SonarQube および EOS プラットフォームに基づいて、コード スキャンを実行して、
コード提出 - コード スキャン - スキャン レポート - 問題マニュアル記録ライン クラウドを実現します。

5 フォローアップ計画

CICD プロセス データは、高品質のパフォーマンス データと組み合わされます。
DeepTest に基づいてより多くのプロジェクトの自動テストを実行し、BamBoo プラットフォームに統合します。
プロジェクトでのコード スキャンの適用。

著者: JD Logistics Chen Wei

出典: JD Cloud Developer Community Yuanqishuo Tech から転載、出典を明記してください

マルチ環境開発をサポートする国内初のIDE——CEC-IDE MicrosoftがPythonをExcelに統合、グイおじさんがフレームワーク策定に参加 中国プログラマーらギャンブルプログラム作成を拒否、歯14本抜かれ88%の身体損傷 オープンソースのSongフォントを模倣したPodman Desktop、 ダウンロード数50万件を突破 オープニング画面の広告を自動的に 無期限に更新停止 「Li Tiao Tiao」が スキップ Xiaomiがmios.cnウェブサイトのドメイン名を申請
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4090830/blog/10102774