JFrog管道でJenkinsビルドを効率的に実施

我的Jenkins构建与JFrog管道863_300-100

現在,Jenkinsは最も人気のあるオプンソスのCIルです。マケットにい早く参入したことで,JenkinsはCIを普及させました。他のciルと同様,詹金斯は開発者がソースリポジトリにコードをコミット後,自動的にビルドしてテストを行うことが可能です。これにより開発者はバグを早期に把握し,素早くデプロ。

初期リリ,スから10年以上経った今,Jenkinsは岐路に立たされています。詹金斯コミュニティの大部分にとって詹金斯は“容認”するルとなっています。Jenkinsスプロル(管理するサバの数が増える)という言葉はIT用語として定着しています。多数のプラグesc escンを使用することで互いに干渉して詹金斯は複雑になってしまいます。この”プラグイン地獄”を回避する一つの方法は,より多数のサーバーやインスタンスにワークロード(とプラグイン)を分散することです。しかし開発チームが詹金斯のインスタンスを増加することによってサイロ化してしまい,今度は増加する詹金斯の構成を管理することになるという課題に直面します。残念ながら,複雑さの種類が変わるだけになってしまいます。また,詹金斯はコンテナやマクロサビス以前の時代のために作成されました。どのようなルであれ,その価値を維持するためには,技術トレンドと上手く連携する必要があります。

このブログではSDLCの一部としてJFrog管道を使用し,CI / CD DevOpsフロ,を加速し,改善する方法をご説明します。

JFrog管道はソフトウェアを構築,テスト,デプロイするための自動化ソリューションです。以下のような機能を含む,すべての主要なDevOpsパaapl . exeプラaapl . exeンプロセスのエンドエンドのオションと最適化を提供します:

JFrogのソリューションエンジニアとして企业+を導入するお客様からよく受ける質問や懸念事項をご紹介します。具体的には詹金斯からJFrog管道への移行方法です。

  • なぜ,動作しているプロセスを変更してデプロescを危険にさらす必要があるのでしょうか?
  • すべてのCI / CDプロセスをJFrog管道に移行するには膨大な時間がかかりませんか吗?
  • 詹金斯ではプラグ苹果苹果ンがあります。JFrogでも同様にサポ,トされるのでしょうか?

我没有做过

詹金斯パaapl . exeプラaapl . exeン例

以下のエンドツーエンドのKubernetes CI / CD詹金斯パイプラインを使用し,JFrog管道がどのように機能するのかを示します。このパ▪▪プラ▪▪ンは一般的に知られている宠物医院Mavenプロジェクトをビルドし,码头工人でコンテナ化し,作成したイメージを执掌图表を使用してk8クラスタ環境にデプロイします。この処理には以下のステップが含まれています:

継続的▪ンテグレ▪ション(ci)

  • Mavenプロジェクト(宠物诊所春天アプリケーション)をビルドし,作成されたバイナリをArtifactoryにデプロイします。
  • 新しいアプリケーションを码头工人でコンテナ化し,新しいイメージをArtifactoryにデプロイします。

継続的デリバリ(cd)

  • k8s用のパッケジマネジャであるHelmをンストルします。
  • Artifactoryで利用可能な执掌图表を使用し,アプリケーションが保存されているイメージをk8ベースの本番環境にデプロイします。

Jenkins Pipeline示例

上記のパプラン(JenkinsfileとDockerfile)のコドサンプルはこらにあります。

この一般的なci / cdの例を利用して実装可能なテクニックを見てみましょう。

JFrogパ▪▪プラ▪▪ンで効率的に実施

JFrog Pipelinesを開始するには3の基本的なテクニックがあります。最初の2つは詹金斯とのインテグレーションを実現するもので順番を問わずに実施するもできますし,これら2つのインテグレーション・アプローチの内の1つだけを選択することもできます。詹金斯をJFrog管道とのンテグレション後は#3に進むことができます:

  1. 传入Webhookを使用して詹金斯(CI)から管道(CD)をトリガー
  2. SDLCの一部を移行する方法はJFrog管道(CI)から詹金斯インテグレーションを使用して,詹金斯(CD)を起動

プロセスを合理化するために自動化を推進し,JFrog管道を使用して新しいCI / CDプロセスを設計します。

1.JFrog管线のWebhook

1の方法として,JenkinsでCIを保持しデプロesc escはJFrog pipelineで行うという方法があります。

JFrog管道と詹金斯をリンクする場合,Dockerメ,ジビルド情報がArtifactoryにデプロイされた時に詹金斯の最終ステップでJFrog管道にWebhookリクエストを送信することで,詹金斯の新しい実行をトリガーする传入Webhookを使用することができます。

メリット:

    • Helmと谷歌Cloud SDKのンストルが不要で迅速にデプロを実行できます。
    • Kubernetesプラグインをベースにした詹金斯スプロールや”プラグイン地獄”を避け,代わりにJFrog管道のネイティブ一步を使用してKubernetesにデプロイします。
    • 执掌图表を拉して管理するためのArtifactoryとのネイティブなインテグレーション。

触发JFrog管道

詹金斯のビルドが完了後,JFrog管道はk8クラスターへの图表のデプロイを管理することができます。

これはJFLog管道の执掌スクリプトを必要としない事前にパッケージ化された宣言的ステップのHelmDeployネesc esc esc步骤で実施することができます。

私たのクラスタは谷歌Kubernetes Engine上で動作しています。そのため,デプロ谷歌云集成を追加しました:

JFrog Pipelines管理Helm图部署到K8S集群部署

コ,ドサンプル(Jenkinsfileとpipes .yml)はこらにあります。

2.詹金斯とJFrog管道のインテグレーション——部分的な移行で効率的な移行が可能

2.詹金斯とJFrog管道のインテグレーション——部分的な移行で効率的な移行が可能

ci / cd全体を一から書き直しても意味がありません。これまで詹金斯で行ってきた努力はすべて価値があります。詹金斯(Jenkins)ンテグレ,ションを使用することによって特定の部分だけを移行することができます。現在のワークロードを詹金斯から移行することなくインテグレーションすることも可能ですが,すべてJFrog管道に集約することもできます。この目的のためにワ,クロ,ドの一部を移行したいと仮定します。

例えばCDプロセスに高い投資をしているため,現在の実装を詹金斯で維持し,CI部分のみを移行してJFrog管道のメリットを享受したいとします。

メリット:

  • JFrog pipelineとArtifactoryの標準ンテグレション
  • JFrog CLI/文件规范を使用してArtifactoryから最新のソフトウェアを取得してアプリケーションを簡単に码头工人化

JFrog管线に新しいJenkins econpンテグレ,ションを作成します:

在JFrog管道上创建一个新的Jenkins集成

詹金斯のユーザー名、APIトークン,URLはJFrog管道が通信に使用し,コールバックURLは詹金斯が使用します。

以下は詹金斯の設定です:

JFrog Pipelines在Jenkins中的服务器配置

“测试连接”でJFrog管道で作成したURLを元に詹金斯からも通信が可能であることを検証します。

これにより,CIはJFrog管道で実行することができます:

CI在JFrog管道中执行

最後のステップは新しいデプロaapl . aapl . aapl . aapl . aapl . aapl . aapl . aapl。:

触发一个新的部署

詹金斯では最終ステップでデプロが正常に完了したことをレポトします。

コ,ドサンプル(Jenkinsfileとpipes .yml)はこらにあります。

3.Helm CI/CD -プロセスを効率化するための自動化機能を追加

HelmはKubernetesのパッケ,ジマネ,ジャです。掌舵はパッケ,ジ化されたアプリケ,ションを定義する图表をデプロ,します。バージョン管理された事前に設定されたすべてのアプリケーション・リソースの集合体で1つの単位としてデプロイすることができます。

私たちは頻繁にソフトウェアのデプロイ方法を変更しており,その変更は異なる执掌图表のバージョンに反映されます。これらはすべて舵图リポジトリを利用してArtifactoryに保存することができます。

JFrog管道でHelmPublishネイティブ一步を使用して,新しい执掌图表をArtifactoryにデプロイするプロセスを自動化することができます。

メリット:

  • 图表のパッケージングは执掌でコーディングをせずに実施しますが,ネイティブ一步を利用し,图表に問題がないかも調べます(线头:真)。
  • Helmのンストル処理を軽減します(バジョンはv2/v3を選択できます)。

既存の管道资源を更新することで,资源を入力とする他のパ。

发布掌舵图表与JFrog管道

コ,ドサンプル(pipes .yml)はこらにあります。

このブログでは既存の詹金斯ベースのDevOpsプロセスの一部としてJFrog管道を活用する3つの異なる方法をご紹介しました。これをきっかけに複数のアプロ,チを併用することを検討されてはいかがでしょうか。

JFrog pipelineがどのように機能するか無料でお試しください