キーポイント
- 継続的な統合(CI)とJenkins CIサーバーは、最新のソフトウェア開発に不可欠なツールであり、チームが高品質のソフトウェアをリリースし、繰り返しプロセスを自動化することで時間を節約できます。
- CIはテストの自動化を強調し、テストエンジニアが探索テストとエッジケースに集中できるようにしながら、開発者が提出してから数分以内に特定のブランチでの各コミットの品質を確保できるようにします。
- Jenkins CI Serverは、既存のプラグインまたは新しいプラグインを作成してカスタマイズできるオープンソースCIツールです。複数のマシンでタスクを割り当て、Pythonを含むさまざまな言語でのプロジェクトの継続的な統合を処理することにより、並行構築をサポートします。
- Jenkinsにはより多くのセットアップとメンテナンスが必要ですが、その柔軟性と制御性、およびその無料のオープンソース機能により、他のCIサーバーよりも強力な選択肢があります。また、さまざまなバージョン制御システムとうまく統合されており、さまざまなプロジェクトの普遍的なツールになります。
この記事はもともとTestProject -Test Automation Blog
で公開されました。以下では、ソフトウェア開発における本質的な実践である連続統合(CI)と、業界標準のオープンソース連続統合ツールであるJenkinsを詳細に紹介します。継続的な統合とJenkins CIサーバーを実装することにより、Jenkinsの展開が開発チームがより高品質のソフトウェアをリリースし、貴重な時間を節約するのに役立つ方法を学びます。
ジェンキンスと継続的な統合についてもっと知りたいですか?次のリンクを確認してください:
- 画面録画:どの連続統合ツールがBitBucketをサポートしていますか?
- ジェンキンスでPHPプロジェクトを準備して構築します Jenkinsとの継続的な統合
- 再導入ジェンキンス:パイプラインを使用した自動テスト
- インストールと保護jenkins
最新のソフトウェア開発慣行では、生産環境でできるだけ早く、または頻繁に完全に機能するソフトウェアを展開する必要があります。たとえば、アジャイルアプローチは、チームを少しずつ作業させ、各スプリントの後に生産環境に展開することにより、この動作を直接実施します(アジャイルプロジェクトのテスト自動化戦略)。
開発チームは、ソフトウェアの開発を数ヶ月費やしてから、QA、UAT、およびすべての生産ラインに渡すことはもう存在しませんでした。今日、完全に機能的なソフトウェアを持つことに焦点が当てられており、リリースサイクルの終わりに重要なソフトウェアの変更を導入するなど、ソフトウェアの品質を危険にさらす状況を許可することはありません。これは、継続的な統合が機能する場所です。
CIとは何ですか?
CIは、テストされたコードを頻繁にプロジェクトの安定した分岐に頻繁に統合するための戦略を強制するプラクティスです。特に「テストされたコード」を強調したいと思います。これは、別々のブランチで開発された機能がテストされ、したがって安定した分岐に統合されていることを意味するためです。
誰がCIをしていますか?
通常、DevOpsエンジニアは通常、CIパイプラインのセットアップを担当します。今日、DevOpsエンジニアの役割は、プロセスとソフトウェアの品質を確保するため、テストエンジニアの役割と非常に似ています。私は通常、QAと生産が顧客に最も近い交差点であると言います。この意味で、CIは、テストエンジニアに、次の領域に積極的に参加することで、全体的なプロセスとソフトウェアの品質を改善するための非常に強力なツールを提供します。
- テスト自動化:数年前、人々は手動テストと自動テストについて議論しました。 CIを使用すると、テスト自動化が不可欠になり、最終的には他のテストタスクに焦点を当てた貴重な時間を大幅に節約できます。また、手動テストと自動テストは相互に排他的ではないことに言及する価値があります。
- テストレポート:CIでのテストレポートについては、既存のレポートソリューションを使用したり、独自のレポートモジュールを構築したりできます。どちらの場合も、これはすべてのビルド実行におけるアプリケーションコードがどれだけうまくいくかを明確に示しています。すべての開発チームメンバーがこの情報にアクセスできることが重要であり、コードの品質を向上させるために引き続き機能します。
- 展開プロセス:テストエンジニアは、アプリケーションの展開プロセスにより深く関与しており、使用されるテスト自動化ツールまたはフレームワークの内部アーキテクチャに関する追加情報を提供します。この知識は、特に「隠された」アプリケーションの問題を特定する場合に非常に重要です。
の利点
- CIは、テストの自動化を強調し、テストエンジニアが探索的テスト、エッジケーステスト、さらには新しいテスト方法を見つけることさえできるようにします。
- 特定のブランチでの特定のコミットの品質は、開発者の提出から数分以内に表示されます。
- ブランチでコードがテストされた後、安定したブランチに統合することは非常に慎重です(CIプロセスはこの操作を実行する必要があります)。アプリケーションの展開は、繰り返しコマンドなしで正しくセットアップされると自動的に実行されます。
- これらの利点はすべて、チームの観点から指数関数的に増加します。
開発チームには、プロジェクトを含む独自のソースコードバージョンコントロールリポジトリがあります(通常はGitHub)。安定した枝(メインブランチ)は、多くの場合、作業枝と見なされ、メインブランチで直接新しい機能を開発することはめったにありません。代わりに、開発者は独自のブランチを作成して、新しい機能(機能AのブランチA)を開発します。その特定のブランチのリポジトリに変更がプッシュされ、開発者がプルリクエストを行う場合、そのブランチに対していくつかの基本的なテストセット(煙検査)を実行する必要があります。 CIの観点から、これは通常、次のことを意味します。
CIプロセスが完了すると、テストエンジニアと開発者の観点からいくつかの要件があります。
- テスター:Branch Aの関数を再度再テストします
- 開発者:別の開発者がピアコードレビューを実施して、コードが十分な品質であることを確認してください
- 開発者:コードをメインブランチに手動でマージし、マージ競合を解決します(発生した場合)。
煙検査は、コードレビューを受けている開発者と、プルリクエストブランチで機能を再テストする必要があるテストエンジニアにとって多くの時間を節約します。プルリクエストの煙検査が失敗した場合、機能Aの責任のある開発者が煙検査機能を修正し、新しいプルリクエストを発行する責任があります(問題が修正されるまで、問題のあるコードはメインブランチに統合されません)。
これが行われ、関数Aの新しいコードがCIの観点からメインブランチにマージされた場合、次のことが発生します。
これは、マージが成功し、煙検査機能が依然として有効であることを示しています。今では、メインブランチに再び機能を再テストすることはテストエンジニアの責任です(マージに副作用がないことを確認するために機能a)。もちろん、ほとんどの機能をカバーするために、時間の経過とともにテスト自動化スイートを強化することは良い習慣です。
これは、テストエンジニアにはより多くのタスクがあるため、プロジェクトの遅い繰り返しでますます重要になります(現在の機能と以前のすべての機能をテストします)。これは、回帰テストが役立つ場所です。CIの観点から、回帰テストの実行は通常、テストエンジニアが回帰テストを明示的に実行するとき、またはスケジューラを使用したときに発生します(たとえば:毎晩回帰テストの実行)。このジョブをカスタマイズするのは良い習慣であり、このジョブが実行されるブランチを指定できることを指定できます(ここでは、回帰テスト自動化を実行する理由とタイミングについて詳しく読むことができます)。プロセスは次のとおりです
Jenkinsツールの紹介
宿題:ジェンキンスの用語で最も重要な「ユニット」は宿題です。ジョブは、Jenkins CIサーバーの単一の実行ユニットであり、特定の結果(合格/失敗)が必要です。たとえば、ジョブは展開ジョブ、煙検査の仕事、回帰テストジョブなどです。ジョブは、順番に実行された複数の領域で構成されており、次の段落で説明されます。ジェンキンスの仕事の構造です。
プラグイン:Jenkins Test Automationの主な機能の1つは、既存のプラグインを使用するか、独自のプラグインを作成してカスタマイズできることです。ジョブ構成セクションからジェンキンス構成セクションまで、Jenkinsツールのすべては、実際にはプラグインです。 Jenkinsのコミュニティの大きさが大きいため、最も要求の厳しいCIワークフロータスクのニーズを満たすために、さまざまなJenkinsプラグインがすでに存在しています。これは、カスタムソリューションを作成する代わりに、おそらく便利なプラグインに出くわす可能性が高いことを意味します。
ノード:最も単純なセットアップでは、Jenkinsインスタンスはすべてのジョブが実行されるマシンで実行されます。小規模なテストと少量の割り当ての場合、これは理にかなっています。ただし、実際には、複数のチームが同じJenkinsインスタンスを使用する場合がよくあります。彼らは多数の仕事を持っているので、次の理由でインスタンスで実行するのは悪いと考えられています:セキュリティ、災害復旧、パフォーマンス、スケーラビリティなど。
ジェンキンスにマスター/スレーブを入力:ジェンキンスマスターノードは、ジェンキンススレーブで実行されるジョブをスケジュールするためにのみ使用されます。このようにして、ジェンキンスのホストは頻繁に使用されておらず、チームにはテスト自動化プロジェクトに最適な独自の奴隷マシンがあります。さらに、スレーブノードは、実行されるいくつかの並列ジョブを処理するように構成されています(ノードあたりのエグゼキューターの数)。 AWSからオンデマンドノードを構成することもできます。これは、ジョブを実行する必要がある場合にのみノードが存在することを意味します。これは非常に便利です。これは、回帰テストを実行するときにのみ完全に使用される大型マシンが必要なためです。この場合、ジョブが実行されるAWSでより大きなEC2インスタンスが起動し、完了時に(構成のアイドル時間に基づいて)、インスタンスは一定期間アクティブのままになります。その後、AWSサービスなど、1時間ごとの有料サービスを使用する場合、どのアプローチがより有利であるかを決定します。
Jenkins Jobの構造Jenkins CIサーバーでは、各Jenkinsのジョブに複数の部品が含まれています。
- 一般:ここでは、プロジェクト/ジョブ名/説明を指定し、必要に応じてジョブパラメーターを追加し、ジョブログローテーション戦略を定義します。次の画面は、ログ回転の構成方法を示しています(ビルドログを維持する日数または保持する最後のビルドログの数を指定できます)、ジョブをパラメーター化する方法(文字列build_idをデフォルト値に追加することにより0.0.1ただし、この値はジョブを開始するときに指定できます)と、このジョブが実行される場所を構成する方法(スレーブノード名):
- ジェンキンスのソースコード管理:名前が示すように、これはジェンキンスCIサーバーのソースコードリポジトリ(GitHubやSubversionなど)を定義する場所です:
- Jenkins Build Trigger:ジョブの実行時間をスケジュールします(定期的に、他のジョブの後、GitHub Pullリクエストが発生したとき、変更がGithubにプッシュされるなど)。
-
ジェンキンスビルド環境:ここでは、ビルドが実行される環境に関連するオプションを定義します(ジョブが実行されるたびにワークスペースを削除し、一定期間停止されている場合はジョブを中止します...など)。
-
Jenkins Build:Jenkins CIサーバーでは、これが各ジョブにとって最も重要なステップです。このステップの結果は、実行の終了時のジョブのステータスに影響します。インストールされているプラグインに応じて、多くのオプションが利用可能です。最も一般的に使用されるプラグインは、シェルの実行、グルーヴィーなスクリプトの実行、ANT/Maven/Gradleスクリプトの呼び出し、Windowsバッチコマンドの実行などです。
これは、独自のシェルスクリプトをインラインにしたり、既存のシェルスクリプトを実行できる頻繁に使用される「Execute Shell」プラグインの例です。
-
Jenkins後の操作:ジョブのこの部分は、ジョブの結果を報告するために、またはJenkinsパイプラインの他のジョブに電話するために使用されます。一般的に、ジョブの実行ステータスを含む電子メールを送信し、HTMLレポートを公開、Junitの結果、ビルドステージに組み込まれたアーティファクトをS3に公開できます。
メールの件名で$ build_idがどのように指定されているかに注意してください。このジョブはパラメーター化されているため、この値はジョブの開始時に指定されます。このパラメーターは、ジョブのJenkinsビルドおよびビルド後のオペレーションセクションで使用できます。
結論
これまでのところ、Jenkins CIサーバーの主な利点と、CI自体がソフトウェア開発プロセスとテストエンジニアにどのように追加されるかを学びました。他のテクノロジーと同様に、基本を習得し、利点を体験するには時間がかかります。 CIに時間を費やすことを強くお勧めします。これは、長期的には間違いなく価値があります。特に、Jenkins CIサーバーが適用されると、多くの痛みを伴う繰り返しのプロセスが自動化され、突然製品の改善に集中する時間があります。
あなたのチームは、継続的な統合とJenkins CIサーバーも実装しましたか?チームの経験を自由に共有し、コメントで質問をしてください!
この記事はもともとTestProject -Test Automation Blog
で公開されました。Jenkins CIサーバーとの継続的な統合に関するFAQジェンキンスとトラビスCIの主な違いは何ですか?
JenkinsとTravis CIはどちらも人気のある連続統合ツールですが、いくつかの重要な違いがあります。 Jenkinsは、独自のサーバーを管理および維持する必要がある自己ホストのソリューションです。高度にカスタマイズ可能で、ほぼすべてのCI/CDワークフローに対応するように構成できます。一方、Travis CIは、セットアップと使用が簡単なクラウドベースのサービスです。 GitHubとうまく統合され、箱から出して多くの言語をサポートしています。ただし、複雑なワークフローでは、ジェンキンスほど柔軟ではない場合があります。
ジェンキンスはgitlab ci/cdとどのように比較されますか?
JenkinsとGitlab CI/CDはどちらも強力な連続統合ソリューションを提供します。 Jenkinsは柔軟性と大規模なプラグインエコシステムで知られていますが、Gitlab CI/CDはGitLabエコシステムとのシームレスな統合を称賛しています。 Gitlab CI/CDは、組み込みのDockerサポートも提供しています。これは、Dockerを使用するチームにとって大きな利点になる可能性があります。
他のCIサーバーの代わりにJenkinsを使用することの利点は何ですか?
ジェンキンスは、他のCIサーバーよりもいくつかの利点を提供します。オープンソースであり、大規模でアクティブなコミュニティがあります。つまり、常に改善され、更新されています。また、特定のニーズに合わせて機能を拡張できるようにするプラグインの巨大なエコシステムもあります。さらに、Jenkinsはさまざまな言語とツールをサポートしており、さまざまなプロジェクトで一般的な選択肢となっています。
JenkinsはPythonプロジェクトの継続的な統合をどのように処理しますか?
ジェンキンスは、Pythonプロジェクトの継続的な統合を処理する普遍的なツールです。 Pythonアプリケーションの構造、テスト、展開を自動化し、多くの一般的なPythonテストフレームワークをサポートします。 Jenkinsは、GITなどのバージョン制御システムともうまく統合されており、既存のワークフローに簡単に統合できます。
ジェンキンスとトラビスCIの間で選択する際の重要な考慮事項は何ですか?
JenkinsとTravis CIのどちらかを選択する場合は、チームの技術的専門知識、CI/CDワークフローの複雑さ、予算などの要因を考慮する必要があります。 Jenkinsはより多くのセットアップとメンテナンスを必要としますが、より柔軟性と制御を提供します。 Travis CIはセットアップと使用が簡単ですが、複雑なワークフローには柔軟性がない場合があります。また、有料のサービスであり、ジェンキンスは無料でオープンソースです。
ジェンキンスはCI/CDパイプラインをどのようにサポートしていますか?
Jenkinsは、コード配信のすべてのフェーズを自動化することにより、統合とテストからテストから展開までのCI/CDパイプラインをサポートしています。開発者はコードの問題を迅速に特定して修正できるため、継続的なフィードバックが可能になります。 Jenkinsはまた、CI/CDエコシステムのさまざまなツールと統合されており、CI/CDパイプラインを実装するための一般的な選択肢となっています。
ジェンキンスは、GitHubでホストされていないプロジェクトに使用できますか?
はい、ジェンキンスはGitHubでホストされていないプロジェクトに使用できます。 Subversion、Mercurial、Perforceなど、さまざまなバージョン制御システムをサポートしています。これにより、ジェンキンスは、異なるバージョン制御システムを使用してチームにとって普遍的な選択になります。
ジェンキンスは並行ビルドをどのように処理しますか?
ジェンキンスは、複数のマシンまたはエグゼキューター間でタスクを割り当てることにより、並列ビルドを処理します。これにより、ビルド時間を速くし、より効率的なリソース利用が可能になります。 Jenkinsを構成して、ビルドインフラストラクチャを自動的に管理するか、どのマシンで実行するかを手動で指定できます。
ジェンキンスをセットアップする際に遭遇する一般的な課題は何ですか?
Jenkinsのセットアップの場合、いくつかの一般的な課題には、依存関係の管理、ビルドトリガーの構成、安全なアクセスのセットアップが含まれます。ただし、ジェンキンスには大規模でアクティブなコミュニティがあるため、これらの課題を克服するのに役立つ多くのリソースがあります。ジェンキンスの機能を拡張する方法は?
プラグインをインストールして、Jenkinsの機能を拡張できます。 Jenkinsには、さまざまなバージョン制御システムとの統合からユーザーインターフェイスの改善まで、さまざまな機能のプラグインを含むプラグインの巨大なエコシステムがあります。既存のプラグインによって提供されていない機能が必要な場合は、独自のプラグインを作成することもできます。
以上が継続的な統合とジェンキンスCIサーバーへの主要なガイドラインの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

AIの分野での中国の女性の技術力の台頭:Deepseekの女性の技術分野への貢献とのコラボレーションの背後にある物語は、ますます重要になっています。中国の科学技術省からのデータは、女性科学技術労働者の数が巨大であり、AIアルゴリズムの開発においてユニークな社会的価値感度を示していることを示しています。この記事では、携帯電話の名誉に焦点を当て、その背後にある女性チームの強さを探り、Deepseek Bigモデルに最初に接続し、技術の進歩を促進し、技術開発の価値座標系を再構築する方法を示します。 2024年2月8日、Honorは、Deepseek-R1 FullbloodバージョンのBig Modelを正式に立ち上げ、Android Campで最初のメーカーになり、Deepseekに接続し、ユーザーから熱狂的な反応を喚起しました。この成功の背後にある女性チームメンバーは、製品の決定、技術的なブレークスルー、ユーザーを行っています

DeepseekはZhihuに関する技術記事をリリースし、Deepseek-V3/R1推論システムを詳細に導入し、初めて主要な財務データを開示し、業界の注目を集めました。この記事は、システムの毎日のコストの利益率が545%に高いことを示しており、グローバルなAIビッグモデルの利益の新たな高値を設定しています。 Deepseekの低コスト戦略は、市場競争において有利になります。モデルトレーニングのコストは同様の製品の1%から5%であり、V3モデルトレーニングのコストはわずか5576百万米ドルであり、競合他社のコストよりもはるかに低くなっています。一方、R1のAPI価格設定は、Openaio3-Miniの1/7〜1/2です。これらのデータは、DeepSeekテクノロジールートの商業的実現可能性を証明し、AIモデルの効率的な収益性も確立します。

ウェブサイトの構築は最初のステップに過ぎません:SEOとバックリンクの重要性 ウェブサイトを構築することは、それを貴重なマーケティング資産に変換するための最初のステップにすぎません。検索エンジンでのWebサイトの可視性を向上させ、潜在的な顧客を引き付けるために、SEO最適化を行う必要があります。バックリンクは、ウェブサイトのランキングを改善するための鍵であり、Googleや他の検索エンジンにWebサイトの権限と信頼性を示しています。 すべてのバックリンクが有益であるわけではありません:有害なリンクを特定して回避する すべてのバックリンクが有益であるわけではありません。有害なリンクはあなたのランキングに害を及ぼす可能性があります。優れた無料のバックリンクチェックツールは、ウェブサイトへのリンクのソースを監視し、有害なリンクを思い出させます。さらに、競合他社のリンク戦略を分析し、それらから学ぶこともできます。 無料のバックリンクチェックツール:SEOインテリジェンスオフィサー

Mideaは、Deepseek Big Model -Midea Fresh and Clean Air Machine T6を装備した最初のエアコンをリリースします。このエアコンには、環境に応じて温度、湿度、風速などのパラメーターをインテリジェントに調整できる、高度な空気インテリジェントな駆動システムが装備されています。さらに重要なことは、DeepSeek Big Modelを統合し、400,000を超えるAI Voiceコマンドをサポートすることです。 Mideaの動きは、業界での激しい議論を引き起こし、特に白物と大規模なモデルを組み合わせることの重要性を懸念しています。従来のエアコンの単純な温度設定とは異なり、Midea Fresh and Clean Air Machine T6は、より複雑で曖昧な指示を理解し、家庭環境に従って湿度をインテリジェントに調整し、ユーザーエクスペリエンスを大幅に改善します。

DeepSeek-R1はBaidu LibraryとNetDiskを支援します。深い思考と行動の完璧な統合は、わずか1か月で多くのプラットフォームに迅速に統合されました。大胆な戦略的レイアウトにより、BaiduはDeepSeekをサードパーティモデルのパートナーとして統合し、それをそのエコシステムに統合します。これは、「ビッグモデル検索」の生態学的戦略の大きな進歩を示しています。 Baidu SearchとWenxin Intelligent Intelligent Platformは、DeepSeekおよびWenxin Bigモデルの深い検索関数に最初に接続し、ユーザーに無料のAI検索エクスペリエンスを提供します。同時に、「Baiduに行くときにあなたが知っている」という古典的なスローガンとBaiduアプリの新しいバージョンは、WenxinのBig ModelとDeepseekの機能も統合し、「AI検索」と「ワイドネットワーク情報の改良」を起動します。

このGOベースのネットワーク脆弱性スキャナーは、潜在的なセキュリティの弱点を効率的に識別します。 Goの同時機能機能を速度で活用し、サービスの検出と脆弱性のマッチングが含まれます。その能力と倫理を探りましょう

コード生成のAIプロンプトエンジニアリング:開発者ガイド コード開発の風景は、大きな変化を遂げています。 大規模な言語モデル(LLMS)と迅速なエンジニアリングのマスタリングは、今後数年間で開発者にとって非常に重要です。 th


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ホットトピック



