3

組み込みシステム用のビルド サーバーの経験についてお聞きしたいと思います。何を使用していますか (ある場合)、良い面と悪い面を教えてください。

主にオペレーティングシステムのないマイクロコントローラ向けに開発しています。

現時点では、Jenkins を使用しようとしており、ビルドが実行されています。しかし、プロジェクトの構造に問題があります。すべてのプラグインを機能させたい場合は、フラットなジョブ構造が必要です。しかし、並行して開発されているプロジェクトはほとんどなく、ジョブ ビューが乱雑になり始めます。フォルダーを試してみましたが、一部のプラグインが機能しなくなりました。

順次実行されているが、内部に並列ジョブがあるパイプラインを構築したいと考えています。例えば。コミット段階には、コンパイル、lint チェック、スタイル チェック、単体テストがあります。それらはすべて並行して実行でき、すべてが成功すると次のステージが実行されます。

現時点でビルドサーバーに必要なもの:

  • ビルド パイプライン サポート
  • LDAP に基づくユーザー認証
  • 並列ジョブ実行
  • 階層プロジェクト (プロジェクト/構成グループ)
  • xUnit、Lint、コンパイラ警告、Robot フレームワークからのレポート。
  • スレーブ/エージェントのサポート、スレーブのタグ

  • LDAP グループに基づく特権

  • グループ/プロジェクトごとの権限

私は、オープンソースおよび商用のあらゆる提案を受け付けています。ビデオでBambooを見ていましたが、とても良さそうですが、まだ試していません。

異なるプロジェクトを開発している 2 つの開発チームがあります。プロジェクトをチームごとにグループ化し、グループごとに特権を持たせるとよいでしょう。あるグループのメンバーは、他のグループのビルドを変更してはなりません。しかし、それは「なくてはならない」よりも「あるとうれしい」です。

チームシティ

TeamCity を使ってみました。ビルド パイプラインの構築は、Jenkins よりも簡単です。[ステップの追加] をクリックするだけです。

私が難しいと感じたことの 1 つは、1 つの構成で複数のステップを並行して作成することです。たとえば、コミット後、時間を節約するために、Lint、単体テスト、コンパイルを並行して実行したいと考えています。解決策を見つけましたが、パイプラインの表示と保守が難しくなります。

TeamCity は、ジョブのグループ化に関する問題を解決するプロジェクトで複数の構成をサポートします。プロジェクトをグループ化するオプションが見つかりませんでした。

4

2 に答える 2

4

TeamCityは、JetBrains が提供する無料の Java ベースの CI サーバーです。私たちはこれを (非常にさまざまな種類のプロジェクトで) 非常にうまく使用してきました。それぞれの要件に:

  • ビルド パイプラインは、ビルド構成内の一連のステップとして構成されます。プロジェクトには、任意の数の構成を含めることができ、任意の数のステップを含めることができます。
  • LDAP 統合は完全にサポートされています。
  • ビルド パイプラインは並列で実行できます。TeamCity デリゲートは、通常、ビルド構成のステップを実行するために必要なすべてのツール (フレームワークなど) を備えた別個のサーバーであるビルド エージェントに対して機能します。無料版の TeamCity には 3 つのエージェントのライセンスが付属しているため、最大 3 つのビルドを並行して実行できます。追加のエージェントはわずかな料金でライセンスを取得できます。
  • 「階層プロジェクト」とは、1 つのビルド パイプラインが完了すると、後続のパイプラインが自動的に開始されることを意味していると理解しています。これはサポートされており、一貫性のためにステージ間でビルド/バージョン番号を渡すことができます。
  • XUnit には最高のサポートがあります。Lint/コンパイラ レポートは、後で簡単に確認できるように、ビルドの「アーティファクト」として保存できます。基本的に、多くのフレームワークには TeamCity の組み込みサポートがあり、それ以外の場合は、任意のシェル コマンドを実行できます。その出力はアーティファクトとして保存したり、後続のビルド ステップで使用したりできます。
  • 上記のように、スレーブ/エージェントのサポートは TeamCity モデルの中心です。

これらはすべて高度に構成可能でカスタマイズ可能です。私たちは TeamCity を使って多様で複雑なことをたくさん行うことができました。また、見栄えもよく、サーバー ダッシュボードには情報がわかりやすく配置されています。

于 2012-12-11T17:25:07.013 に答える
2

免責事項: 私はアトラシアンで働いているので、少し偏見があります。

Bamboo でのビルド パイプラインの構成は非常に簡単です。Bamboo は、プラン → ステージ → ジョブ構造に基づいて動作し、上位から下位にリストされます。Bamboo Plan Structureを確認してください。

Bamboo のすべてのプロジェクトは、プランのコレクションを保持しています。プランは、1 つ以上のステージで構成されます。ステージは順番に実行され、1 つ以上のジョブで構成されます。ジョブは並行して実行され、1 つ以上のタスクで構成されます (タスクは順次実行されますが、個別のジョブに配置して並行して実行し、ビルド時間を短縮できます)。Bamboo のエージェントは、ビルド ステップを実行するマシンまたはサービスです。ジョブ全体が単一のエージェントで実行されます。エージェントの詳細については、こちらをご覧ください。スレーブ タグに関しては、特定のエージェントを特定のビルドまたはプロジェクトに排他的に結び付ける機能は、新機能の候補リストにあります。

他の点に答えるには:

  • LDAP グループ/プロジェクトに基づく LDAP/権限に基づくユーザー認証: 外部 LDAP サーバーに接続して、ユーザーと権限を管理できます。Bamboo にはグループ機能があり、チームが JIRA を使用している場合は、JIRA グループを利用してグローバル権限を設定し、権限を計画し、計画のビルド結果に関する通知を受け取るユーザーを指定することもできます。グローバル権限は、ビルド プランと Bamboo サーバーにアクセスできるユーザーを制御しますが、プラン権限は、プランとそのジョブで特定の操作を実行できるユーザーを制御します。

  • 階層型プロジェクト (プロジェクト/構成グループ): Bamboo は親と子のプラン構造をサポートしています。ビルドのトリガーを設定するには、いくつかの方法があります。そのうちの 1 つは、他のビルドに基づいてトリガーを設定することです。つまり、プランのビルドは、他のプランのビルドが成功した場合、または他の指定されたプランが正常にビルドされている場合にトリガーされます。例: プラン A が正常にビルドされると、プラン B と C のビルドが自動的にトリガーされます。

  • xUnit、Lint、コンパイラ警告、ロボット フレームワークからのレポート: Bamboo は、コマンド ラインから開始できる任意のビルド プロセスを実行できます。サポートには、Maven/Maven2、Ant、make、MSBuild、NAnt、Grails、devenv.exe、および xUnix 準拠のフレームワーク (JUnit、Selenium、JWebUnit、NUnit、PHPUnit など) が含まれます。

于 2013-02-25T23:45:22.403 に答える