JFrog CLIを使ったnpmパッケージ

JFrog CLI and npm builds

JFrog CLIはシンプルなインターフェイスを提供するコンパクトでスマートなクライアントで、JFrog Artifactoryの操作の大幅な簡略化を可能としています。シンプルなコマンドが用意されているため、メンテナンスが容易になり効果的で信頼性が高く、可読性の高い自動スクリプトの作成が可能です。

JFrog CLIのバージョン1.13.1以降ではMavenやGradleを使ったビルドサポートに加え、npmパッケージをサポートしています。このブログ記事ではnpmクライアントと連携してnpmビルドを管理するために利用可能なnpmコマンドについて説明します。

JFrog CLIを使うと:

  • npmビルド情報をArtifactoryに収集可能
  • Artifactoryへのデプロイ後は簡単にビルド情報のトレースが可能
  • 使用中の依存関係を透過的に表示
  • ビルド環境に関する情報の生成
  • JFrog Xrayに接続することにより潜在的に脆弱性のあるビルドのスキャンが可能
  • ビルドのプロモーションが可能

JFrog CLI and npm builds

以下の手順でnpmをビルドします:

  1. プロジェクトのクローンの作成
  2. JFrog CLIを使ったArtifactory設定
  3. npmパッケージのインストール
  4. npmパッケージの公開
  5. ビルドのスキャン
  6. ビルドプロモーション

前提条件

事前に以下の項目を完了させておく必要があります。

  • 以下のコマンドでJFrog CLIをインストールする:
$ curl -fL https://getcli.jfrog.io | sh
  • またオプションとして以下の環境を設定してください:

1. プロジェクトのクローンの作成

どのnpmプロジェクトでもクローンを作成できますが、この例ではGitコマンドでtwbs Bootstrapプロジェクトのクローンを作成しています:

$ git clone https://github.com/twbs/bootstrap.git

2. JFrog CLIを使ったArtifactoryの設定

設定は次のコマンドを実行するだけです:

$ jfrog rt config

続いて以下のコマンドを使ってArtifactoryサーバ名、URL、ユーザ名、パスワードを設定します:
2 Configure Artifactory with JFrog CLI

これで接続は完了です。

3. npmパッケージのインストール

依存関係のソースとしてnpm仮想リポジトリを参照するnpmインストールコマンドを実行します:

$ jfrog rt npmi npm-virtual --build-name=bootstrap --build-number=1.0.0

このコマンドでプロジェクトをインストールし、ソースとするnpmリポジトリを参照します。

3 Install npm Packages

知識は力なり

次は情報の生成です。build-add-gitコマンドでGit VCSの詳細を追加してください:

$ jfrog rt bag bootstrap 1.0.0

また、次のbuild-collect-envコマンドを使って環境変数を収集できます:

$ jfrog rt bce bootstrap 1.0.0
npm bootstrap

4. npmパッケージの公開

重要事項:既存npmスクリプトで変更すべき点
もし既にnpmスクリプトがある場合にはpackage.jsonファイルで既存のprepublishpostpublishスクリプト名を変更しておくことを推奨します。JFrog CLIでnpm-publishコマンドを実行する時には、packコマンドが公開されている標準コマンドではなくバックグランドで実行されます。npmパッケージにprepublishpostpublishスクリプトが含まれる場合には、それぞれprepackpostpackにスクリプト名を変更してください。

npm-publishコマンドを使うことで、Artifactoryにあるnpmリポジトリへパッケージを圧縮してデプロイが可能です。例えば、-server-idフラグを使ってパッケージを他のサーバにアップロードするオプションフラグの追加も可能です。

以下のコマンドを実行し、パッケージを公開します:

$ jfrog rt npmp npm-virtual --build-name=bootstrap --build-number=1.0.0
4 Publish npm packages

これでビルド情報をArtifactoryに渡す準備ができました。

ビルド公開(bp)コマンドを実行します:

$ jfrog rt bp bootstrap 1.0.0

npmパッケージがArtifactoryに表示されます。

npm package in Artifactory

bpコマンド実行後は、Artifactoryでビルド情報の参照、モジュールや環境変数の表示が可能です。

5. ビルドのスキャン

JFrog XrayはArtifactoryと連携し、どの開発段階においてもアプリケーションのバイナリデータを総合的に分析します。Xrayはバイナリコンポーネントとメタデータをスキャンし、あらゆる開発段階の依存関係を再帰的に分析して組織全体のコンポーネントに潜む問題を今まで実現できなかったレベルで可視化します。

以下のようにXrayを使ってNew watchからwatchを新規作成し、ビルドをスキャンします:

Scan npm with Xray

Watchでactionを追加してください。また複数のactionを追加する場合にはAdd Actionを使います。

JFrog CLIはJFrog Artifactoryを介してJFrog Xrayと統合します。アーティファクトや依存関係をスキャンする事で脆弱性や他の問題を検知し、解決できます。この統合にはJFrog Artifactory v4.16以降およびJFrog Xray v1.6以降が必要です。

以下のコマンドでビルドをスキャンします:

$ jfrog rt bs bootstrap 1.0.0

6. ビルドプロモーション

ビルドプロモーションでは通常、テストやビルドスキャンの後に実行され、オプションとしてアーティファクトやその依存関係を目的のリポジトリに移動またはコピーします。

ビルドスキャン後はbuild promoteコマンドを使ってArtifactoryでビルドをプロモーションします。このコマンドには–comment–statusフラグなど多数のオプションフラグが用意されています。

以下のコマンドでビルドをプロモーションします:

$ jfrog rt bpr bootstrap 1.0.0 npm-virtual

Artifactoryでビルドプロモーション:

Promoted Build in Artifactory

これで完了です。

Travis CIでJFrog CLIを使用する記事やビルド出力のソートと制限に関する記事など今後の投稿にご注目ください。

JFrog CLIを試してみる