記事を最後まで読んだ後、ボックス内のビーバーがKDPVとして選択される理由を推測できます。すべての健康、仲間のhabrozhitel。 最近では、仕事に非常に間接的に関連する1つの非常に小さなプロジェクトで「継続的インテグレーション」サービス(以降CI)を作成および構成する必要に直面しました。 時間がなくなっていたので、私は新しいものを試すことにしました(以前はTravisとJenkinsだけを使用していました)。 主な選択基準は、「統合サーバーでのシステムの展開の単純さと速度」でした。
カットの下には、Bashで2晩に書かれたCIの短いストーリーとその結果のツールがあります。
アイデア
検索が不十分だったのか、自転車の神を犠牲にしたかったのかもしれませんが、サーバーに「投げられる」CIサービスを見つけず、Github構成にいくつかのwebhookを入れて、DevOpsを忘れました。 したがって、私はもう検索に時間を浪費しないことを決定し(そして、私は約1-2時間を費やしました)、そしてBashで簡単な何かを書くことにしました。
これは 、Bashで最も単純なCIトリガーを作成し、別の(構成)スクリプトから構成された機能のチェーン(パイプライン、パイプ)を通過させるというアイデアでした
。このソリューションの利点は明らかです。
- あなたは10分でそれを書くことができます
- 非常に柔軟になります。
- CIを展開するために必要なものはありませんが、CIトリガーファイルと構成を統合サーバーに転送する場合を除きます。
私はこの決定の欠点について考えています、あなた自身はすでに推測しました。 ほんの少しだけあげます。
- ユーザーフレンドリーでカスタマイズ可能なGUIはありません
- 既製のソリューションやプラグインはありません。すべてをBashで記述するか、彼が電話できるようにする必要があります。
- プロジェクトの準備、展開、テストに関する知識が必要です
実装
CIトリガー自体は基本的なものです。
コマンドライン引数の解析のロジックを省略した完全なスクリプトコードは引用しませんでした。これは簡単で、タスクに関連していないためです(記事の最後に、略語なしでソースコードを表示できるプロジェクトリポジトリへのリンクがあります)。ご覧のとおり、すべては、CIトリガーの起動時に統合を実行するためにパイプラインと呼ばれる9つの
統合関数を宣言することになります。 パイプラインの両方の出力ストリームは1つの
ログファイルにまとめられ、統合の結果に関するレポートとして機能し
ます 。
統合パイプラインを実行する前に、CI-tirgger(
. $config
Config)に代わって
構成スクリプトが呼び出され、すべての機能をオーバーライドできます。 これがソリューションの全体的な「魔法」です。 構成スクリプトはBashで作成されているため、ロジックを機能にグループ化するだけで、任意のロジックを使用して統合を実行できます。
これで、要件に従ってCIトリガー呼び出しロジックを構成するだけで済みます。
定期的な電話
これを行うには、たとえば次のようにCronを設定します。
crontab 0 0 * * * /home/user/ci/trigger
通話を変更
このソリューションでは、統合サーバーのポートにアクセスするときにCIトリガー呼び出しで統合サーバーのポートをリッスンするメカニズムを実装する必要があります。 このためにnetcatと次の簡単なBashスクリプトを使用することをお勧めします。
リスニングポート while true; do { echo -ne "HTTP/1.0 200 OK\r\n\r\n"; } | nc -v -l -p 8000 && /home/user/ci/trigger done
次に、たとえばCurlを使用して、プッシュコミットごとにこのポートへのHTTPリクエストを実行するために使用するバージョン管理システムを設定する必要があります。
.git / hooks /コミット後 curl -X POST http://ci-server.com:8000
リンクとそのすべて
当然、このソリューションは理想とはほど遠いもので、大規模なプロジェクトで使用するには「手作業」が必要になりますが、CIサービスの迅速な立ち上げには最適です(そう思う!)。