GitLab CIとArtifactoryを使ったシステム構築方法

GitLab CI and Artifactory

JFrog ArtifactoryをGitLab CI/CDに統合すると、より便利なDevOps環境を構築することができます。
この記事ではGitLab CIとArtifactoryとの統合に関して、バイナリ管理とデプロイ方法だけでなく、ArtifactoryのBuild Integration機能を利用するメリットについても説明します。

パッケージの公開と管理

GitLab CIは複数のビルド作成をサポートし、それぞれのコミットがどのようにテストに合格して製品に影響するか評価します。ビルドのプロセスでは大量のバイナリが生成されますが、もしこれらが広範囲に渡って正しく管理されていないとバイナリ破損の原因となる可能性があります。この問題を解決するため、Artifactoryはバイナリ公開と管理ができるよう、ビルドプロセスとシームレスに統合されています。GitLab CIはJFrog CLIを経由してArtifactoryへ作成されたパッケージと依存関係、そしてビルド情報のフェッチやキャッシュ、公開を行います。

ArtifactoryのBuild Integrationは、生成された各パッケージを関連するビルドや依存関係、ビルド情報に自動的にリンクし、これまで活用されていない新しいメタデータセットを収集します。ArtifactoryをGitLab CIに統合すると、次のような情報を保存して表示できます。

  • ビルド情報と公開モジュール
  • 使用されている依存関係
  • 環境変数
  • ライセンスの概要
  • 課題追跡システムへのリンク
  • 各ビルドの差分

データはArtifactoryのデータベースに保管されているので、Artifactory Query Languageを使用して検索できます。

GifLab CI/CDにArtifactoryを埋め込む

下記の手順ではArtifctoryをGitLab CI/CDに埋め込む方法を示しています。今回はMavenを使います。これと追加のパッケージタイプのサンプルはGitHubにあります。

  1. GitLabで新しいプロジェクトを作成します。
  2. このMavenサンプルプロジェクトをGitLabリポジトリにクローンします。
  3. CI/CD Settings > Secret variablesメニューから、以下のArtifactoryの資格情報をMavenプロジェクトに設定します。
    ARTIFACTORY_URLhttps://artifactory.mycompany.com/artifactory
    ARTIFACTORY_USER: admin
    ARTIFACTORY_PASS: パスワード
    MAVEN_REPO_KEY: Artifactoryにおけるターゲットリポジトリ名GitLab and Artifactory
  4. 次の.gitlab-ci.yml設定ファイルをプロジェクトのルートディレクトリにコミットしてください。このファイルは、ニーズに応じて編集できるカスタマイズされたテンプレートです。
    .gitlab-ci.ymlサンプル

    # このファイルはテンプレートですので、必要に応じて編集を行ってください
    image: maven:latest
    before_script:
      # JFrog CLIをインストール
      -  curl -fL https://getcli.jfrog.io | sh
      #JFrog CLIを使ってArtifactoryインスタンスの設定 
      - ./jfrog rt config --url=$ARTIFACTORY_URL --user=$ARTIFACTORY_USER --password=$ARTIFACTORY_PASS
      - ./jfrog rt c show
      # M2_HOME環境変数の設定
      - export M2_HOME=/usr/share/maven
      # configuration.ymlのリポジトリ名を正しいものに書き換える
      - sed -i 's,MAVEN_REPO_KEY,'"$MAVEN_REPO_KEY"',g' configuration.yml
    build:
      script:
        # MVNコマンドの実行
        - ./jfrog rt mvn "clean install" configuration.yml --build-name=gitlabci-maven-artifactory --build-number=$CI_JOB_ID
        # 環境変数の収集
        - ./jfrog rt bce gitlabci-maven-artifactory $CI_JOB_ID
        # ビルド情報をArtifactoryへ送信
        - ./jfrog rt bp gitlabci-maven-artifactory $CI_JOB_ID
      only:
        - master
    

    設定ファイルをコミットするとインスタントビルドが自動的に開始され、ArtifactoryにMavenパッケージとキャッシュされた依存関係が読み込まれます。

  5. GitLab CI UIのジョブセクションに移動して、ビルドプロセスとログを表示します。GitLab Job View
  6. Artifactoryにログインし、Artifact Repository Browserに移動して、Artifactoryで公開されている成果物を表示します。
    GitLab and Artifactory
  7. Build Browserへ移動してビルド情報を表示します。
    GitLab and Artifactory
    たったこれだけの手順でGitLab CIとArtifactoryの統合が完了します。ぜひお試しください。