JFrog PipelinesによるCI/CDとJFrog Platformの特長
JFrog DevOps Platformのリリースに伴い、次世代CI/CDのための強力なシステムであるJFrog Pipelinesの一般提供を開始しました。
Pipelinesの多くの優れた機能はDevOpsパイプラインの自動化を迅速、反復可能、安全にするのに役立ちます。柔軟なランタイム管理、堅牢なDSL、リアルタイムのインタラクティブなUIを備えたPipelinesは筋骨隆々のCI/CDソリューションであり、皆様に気に入っていただけるものと確信しています。
しかし、Pipelinesは何が違うのでしょうか?既存のCIサーバーの中で、なぜPipelinesに注目すべきなのでしょうか。
第一にPipelinesは単なる独立したCI/CDソリューションではなく、Artifactoryとバイナリを中心としたJFrog Platformの一部です。これは副次的な利点ではなく、Liquid Softwareへの重要なステップです。Pipelinesはコードからバイナリを作成し、ステージングトランジションを管理し、本番デプロイのプロセスを自動化します。これによりプラットフォームにおける豊富なバイナリ/アーティファクトのライフサイクルをさらに補完します。このように、Pipelinesは組織内のDevOpsの力を最大限に発揮するための包括的なエンジンの重要な一部です。
ここから、JFrog Platformの一部であることでPipelinesが不可欠となることを示す大事なポイントを紹介します。
ネイティブステップ: 「How(どうやるか)」ではなく「What(何をするか)」
ほとんどのCIサーバーはシェルスクリプトを使って自動化することを前提としています。つまり、すべての問題を解決し、CLIやAPIにより一度に1つのコマンドですべて実行する方法を自動化サーバーに伝えなければなりません。
Pipelinesでは汎用的なBashステップを使って完全なコントロールを実現できます。また、ネイティブステップを使えば迅速かつ確実にパイプラインを立ち上げられます。
ネイティブステップでは自動化サーバーに何をするか伝えるだけで、それをどうやるか伝える必要はありません。JFrog Platformの一部であるPipelinesは、Artifactoryへのビルドの公開やDistributionによるリリースパッケージのビルドと配布の方法をネイティブに把握しています。Artifactoryのリポジトリに格納するような日常的に使うタスクを実行するための素早いビルディングブロックを提供します。
Dockerイメージをビルドしてレジストリにプッシュすることもあるでしょう。その際はDockerBuildとDockerPushのネイティブステップにお任せください。ソース、ビルド名、タグ、そして転送先のレジストリを指定するだけで使えます。
steps:
- name: docker_build
type: DockerBuild
configuration:
affinityGroup: dockerGroup
dockerFileLocation: .
dockerFileName: Dockerfile
dockerImageName: pipelines.mycompany.info:8081/docker-local/alpine37'
dockerImageTag: ${run_number}
inputResources:
- name: myDockerRepo
integrations:
- name: myArtifactory
- name: docker_push
type: DockerPush
configuration:
affinityGroup: dockerGroup
targetRepository: docker-local
integrations:
- name: myArtifactory
inputSteps:
- name: docker_build
- Go言語のアプリを構築している場合、GoBuild、GoPublishBinary、GoPublishModuleというネイティブステップによりプロセスを簡素化できます。
- MvnBuild、NpmBuild、NpmPublishといったステップはArtifactoryのリモートリポジトリにおけるMavenおよびnpmビルドの実行が簡単になります。
- ビルドをKubernetesにデプロイする準備ができたら、HelmPublishやHelmDeployといったネイティブステップでK8sへのデプロイを迅速に行うことができます。
DevOpsからDevSecOpsへ移り変わるのは自然なことです。パイプラインにXrayScanステップを追加するか、パブリッシングステップの`forceXrayScan`プロパティをtrueに設定するだけです。
ネイティブステップではJFrogによるDevOpsのベストプラクティスがPipelines DSLに組み込まれます。
自然なインテグレーション
CIサーバーは単独では機能せず、他のDevOps自動化ツールの世界と密に接続されている必要があります。これはソースリポジトリのVCSに始まり、ストレージ、通知、バイナリ管理、セキュリティ、配布のための数多くのサービスを意味します。
Jenkinsをはじめとする多くのCIサーバーを設定するにはこれらの接続を個別に構築しなくてはなりません。ツールの提供者によってはそのプロセスを容易にするためにプラグインや拡張機能を利用できるようにしている場合もありますが、入手、インストール、設定する必要があります。その他のツールではCLIやREST APIを使って自分で統合を行うことになるかもしれません。
PipelinesがあればCI/CDエコシステムの構築がはるかにシンプルになります。そもそもPipelinesはビルドパイプラインの中核となる他のJFrog Platformツールと自然に連携できます。Artifactory、Xray、そしてDistributionです。DevOpsの中心となるツールはインストールするだけでインテグレーションされます。
また、PipelinesはGitHub、GitLab、BitBucket、Slack、Jira、AWS、GCP、Docker、Kubernetesなど、エコシステムで人気のあるツールとのインテグレーションもすぐに行うことができます。しかも、ほとんどはURLエンドポイントとユーザー認証情報を入力するだけです。
Pipelinesはシークレットを一元管理することで、パイプラインのコードとは別に暗号化されたVault(ボルト)にシークレットを保管することができます。Pipelinesが提供していないサービスとインテグレーションする必要がある場合、Webhookを介して追加のシークレットをセントラルストアに保管可能です。
そのため、Pipelinesは立ち上げのみならずメンテナンスも容易になります。JFrog Platformをアップデートしても、PipelinesはすべてのJFrogツールと同期されたままです。サードパーティのサービスやプラグインについてもアップデートを追跡することなく、Pipelinesのインテグレーションを利用することでソフトウェアアップデートがあってもJFrog Platformを最新の状態に維持することができます。
セントラル・パーミッション
JFrog PlatformはコアとなるDevOpsツールをワンストップで管理できます。管理者はシングルサインオンを通じてArtifactoryにパーミッショングループを設定し、Pipelinesにも同じグループを使用できます。これにより、コンポーネント・グループ全体のアクセス権限の一貫性を確保できるようになります。
管理者が個々のユーザーやグループをArtifactoryの特定のリポジトリに限定できるように、それらのリポジトリを使用するパイプラインにも限定できます。ユーザーの権限が一貫していることをより確実にします。
ワンストップのDevOps
これらはPipelinesの多くの機能の一部に過ぎませんが、JFrog Platformの一部であるために不可欠です。
PipelinesのCI/CDオートメーションが加わることで、JFrog Platformはコミットからクラスターまでソフトウェアデリバリーのエンドツーエンドソリューションとなります。Pipelinesは効率とベストプラクティスを促進する単一の統一されたプラットフォームで、多くのDevOpsの問題を解決するのに役立ちます。
JFrog Cloud Pro、Cloud Pro X、Cloud Enterprise、Cloud Enterprise+プランの手頃なSaaSアドオンとして、Pipelinesを使い始めるのはとても簡単です。フルプランのEnterprise+ユーザーの場合、セルフホスティング(オンプレミス)のPipelinesがJFrog Platformのライセンスに含まれています。
一度お試しいただければ、すぐにJFrog Platformの違いを実感していただけると思います。