Jenkins パイプラインは Nexus リポジトリに成果物を公開します

Jenkins パイプラインは Nexus リポジトリに成果物を公開します

このガイドでは、継続的インテグレーション サーバーとして Jenkins を使用し、ビルド リポジトリとして Nexus リポジトリを使用します。

このガイドの目的は、Maven と CI サーバーを通じてコン​​パイルされた成果物を構築、保存、管理、監視できるワークフローを作成することです。

始める前に、Jenkins が起動して実行されていることを確認してください。 Jenkins をまだ設定していない場合は、次のコマンドをコピーして、Docker 対応ホストで実行します。

 docker run -d --name jenkins-ci -p 8080:8080 jenkins/jenkins:lts

ローカル/リモート マシンで Jenkins コンテナを構成したら、ブラウザーで URL を開きます。

 http:///your-ip-addr:8080

最初のページで、Jenkins は管理者パスワードを要求します。これは、ターミナルで以下のコマンドを実行すると見つかります。

 docker exec -i jenkins-ci cat /var/jenkins_home/secrets/initialAdminPassword b5102c8d9fa245dbb0b8da03f504d3a5

ガイドの手順に従って設定を完了してください。今後の使用に備えて、ユーザー名とパスワードを安全に保存してください。

Nexus アーティファクト リポジトリをインストールする

Nexus は、成果物を保存および取得できるリポジトリ マネージャーです。これにより、構築した成果物をプライベートで安全なリポジトリにホストできるようになります。

次のコマンドを使用すると、いつでも Nexus Docker イメージを取得できます。

 $ docker pull sonatype/nexus3 Using default tag: latest latest: Pulling from sonatype/nexus3 cb3c77f9bdd8: Pull complete fd8daf2668d1: Pull complete fd1ff82b00e8: Pull complete 2a05f7b573af: Pull complete Digest: sha256:6570855dfbc3eb094fe5cbbacec87aa8b91d16394dab627177e1deeebb5ac8ee Status: Downloaded newer image for sonatype/nexus3:latest docker.io/sonatype/nexus3:latest

デフォルトのポート 8081 で sonatype/nexus を実行します。以下のコマンドに従ってください。

 $ docker run -d --name nexus_repo -p 8081:8081 sonatype/nexus3

新しく作成された Docker コンテナで Nexus サービスを開始するには、通常 1 ~ 2 分かかります。ログを追跡して Nexus が起動して準備ができているかどうかを確認するには、次のコマンドを実行します。

 $ docker logs nexus_repo -f

ログには、「Sonatype Nexus OSS 3.20.1-01 を開始しました」というメッセージが表示されます。これは、Nexus リポジトリ マネージャーが使用できる状態であることを意味します。ブラウザに移動して開きます。

 http://your-ip-addr:8081

以下に示すように、「ログイン」オプションを見つけます。

デフォルトのユーザー名は admin です。パスワードを取得するには、次のコマンドを実行する必要があります。

 $ docker exec -i nexus_repo cat /nexus-data/admin.password 502ace93-5450-4f0d-97d2-9b3b3a88d149

それでおしまい。 Nexus リポジトリ マネージャーが使用できるようになりました。次のステップは、新しいリポジトリを作成することです。

Nexus でリポジトリを作成する

このステップでは、Jenkins が「ビルド」成果物をアップロードする Nexus に Maven ホスト リポジトリを作成します。

ステップ 1:以下の手順に従ってホストされたリポジトリを作成し、このガイド全体で使用する maven-nexus-repo という名前を付けます。

以下に示すように、リストから Maven2 を選択します。

ステップ 2: 「リポジトリの作成」ページ。

  • 名前をmaven-nexus-repo と入力します。
  • バージョン戦略で、成果物のタイプを選択します。
  • [管理対象] セクションの [展開ポリシー]で、 [再展開を許可する]を選択します。アプリケーションを複数回デプロイできるようになります。

ステップ 3:新しいユーザーを作成するには、「ダッシュボード」>「サーバー管理と構成」>「ユーザー」>「ユーザーの作成」に移動します。デフォルトの領域となるローカル ユーザー タイプを選択します。

「ユーザーの作成」ページ。

  1. ID : 希望のIDを入力します。私たちの場合、それは Jenkins ユーザーです。
  2. 名前: 希望の名前を入力します。私たちの場合は、Jenkins です。
  3. : 希望する名を入力します。私たちの場合はユーザーです。
  4. メール: メールアドレスを入力してください。
  5. ステータス: ドロップダウン メニューから「アクティブ」を選択します。
  6. ロール: ユーザーにnx-adminロールが付与されていることを確認します。

この時点で、Nexus リポジトリ マネージャーのセットアップ部分は完了です。ここで、Jenkins に移動して Nexus をセットアップしましょう。

JenkinsにNexusプラグインをインストールして設定する

ここでは、Jenkins に Nexus 用のプラグインをいくつかインストールして設定します。これを行うには、Jenkins に移動し、「ダッシュボード」>「Jenkins の管理」>「プラグインの管理」>「利用可能」に移動して、Nexus Artifact Uploader プラグインを検索してインストールします。

Jenkins に Nexus Repository Manager のユーザー資格情報を追加します。以下に示すように、「ダッシュボード」 > 「資格情報」 > 「システム」 > 「グローバル資格情報 (無制限)」に移動します。

次に、ホスティング ツールとして Maven を設定します。 「ダッシュボード」>「Jenkins の管理」>「グローバル ツール構成」に移動して、Maven を見つけます。このセクションで、Maven インストール ボタンをクリックし、以下に示すように Maven を追加します。

あるいは、Maven バイナリを /var/jenkins_home ディレクトリのコンテナーに直接インストールすることもできます。

Jenkinsパイプラインを作成する
pipeline { agent { label "master" } tools { maven "Maven" } environment { NEXUS_VERSION = "nexus3" NEXUS_PROTOCOL = "http" NEXUS_URL = "you-ip-addr-here:8081" NEXUS_REPOSITORY = "maven-nexus-repo" NEXUS_CREDENTIAL_ID = "nexus-user-credentials" } stages { stage("Clone code from VCS") { steps { script { git 'https://github.com/javaee/cargotracker.git'; } } } stage("Maven Build") { steps { script { sh "mvn package -DskipTests=true" } } } stage("Publish to Nexus Repository Manager") { steps { script { pom = readMavenPom file: "pom.xml"; filesByGlob = findFiles(glob: "target/*.${pom.packaging}"); echo "${filesByGlob[0].name} ${filesByGlob[0].path} ${filesByGlob[0].directory} ${filesByGlob[0].length} ${filesByGlob[0].lastModified}" artifactPath = filesByGlob[0].path; artifactExists = fileExists artifactPath; if(artifactExists) { echo "*** File: ${artifactPath}, group: ${pom.groupId}, packaging: ${pom.packaging}, version ${pom.version}"; nexusArtifactUploader( nexusVersion: NEXUS_VERSION, protocol: NEXUS_PROTOCOL, nexusUrl: NEXUS_URL, groupId: pom.groupId, version: pom.version, repository: NEXUS_REPOSITORY, credentialsId: NEXUS_CREDENTIAL_ID, artifacts: [ [artifactId: pom.artifactId, classifier: '', file: artifactPath, type: pom.packaging], [artifactId: pom.artifactId, classifier: '', file: "pom.xml", type: "pom"] ] ); } else { error "*** File: ${artifactPath}, could not be found"; } } } } } }

上記のパラメータを一つずつ分解してみましょう。

  • NEXUS_VERSION: ここでは、Nexus の正確なバージョンを指定する必要があります。nexus2 または nexus3 になります。私たちの場合、それはnexus3の最新バージョンです。
  • NEXUS_PROTOCOL: このガイドでは HTTP プロトコルを使用しましたが、実稼働シナリオでは HTTPS を使用する必要があります。
  • NEXUS_URL: Nexus が実行されている IP アドレスとポート番号を追加します。追加する Nexus インスタンスの詳細に、https や http などのプロトコルが記載されていないことを確認してください。
  • NEXUS_CREDENTIAL_ID: 先ほど Jenkins で作成したユーザー ID (この場合は nexus-user-credentials) を入力します。
  • Git プロジェクト: ステージング フェーズでは、https://github.com/javaee/cargotracker を使用しました。

パイプラインのセットアップが完了したら、プロジェクトの構築を開始します。 Jenkins Nexus プロジェクト ジョブ ページに移動し、[今すぐビルド] をクリックします。これは最初のビルドなので、しばらく時間がかかります。

ビルドが成功すると、Jenkins コンソールの出力に次のようなものが表示されます。

Nexus リポジトリ マネージャーでは、次のような表示になります。

プロジェクト成果物を体系的に配布する方法は、どの組織にとっても重要です。 Jenkins Pipeline と Nexus Repository Manager を使用すると、成果物を一元管理できるため、ビルド時間の再生成や CI ツールの切り替えにかかる労力が削減されます。

Nexus は、AWS S3 や Google Cloud Storage などのクラウド ストレージ サービスを使用して構成することもできるため、より自由に、ストレージの煩わしさなしにアプリケーションを配信できます。

<<:  Docker Desktop を置き換えますか? Podman Desktop GA バージョン 1.0 がリリースされました

>>:  エッジコンピューティング: AI処理をデータソースに近づける

推薦する

2019年 Toutiao 検索年間リスト(18カテゴリーの完全版)

2019年にToutiao Searchが正式にリリースされ、数億人のユーザーがToutiao Se...

クラウドコンピューティングを活用して効率的なバー管理を実現

クラウド コンピューティングの導入により、企業の運営方法が近代化されました。このテクノロジーにより、...

記事を転載する際に注意すべき点

インターネット自体は共有のための大きな環境ですが、Google と Baidu はどちらも転載記事(...

BlazingSwitch - $5.95/512M メモリ/25M 無制限/G ポート/ロサンゼルス

BlazingSwitch は比較的最近設立され、Authorize.net の商用認証に合格してい...

2020 年に企業はどのクラウド コンピューティング戦略を選択すべきでしょうか?

多くの組織は、クラウド コンピューティングがビジネスの将来において重要な役割を果たすと確信しています...

WeChatはO2Oの出口となるのか? 機密情報を拡散する方法

【編集部注】この記事の著者@sbumblebeeは、広大で複雑なインターネットには、インターネットの...

外部リンクを使用してウェブサイトのランキングを安定させる方法

私は、気づかないうちにウェブマスターになって4年近くになります。何も知らない初心者から始めました。毎...

200以上のブランド事例を研究した後、50の製品とマーケティングの考えをまとめました

ブランド、新しい消費、マーケティングに関して、私は以前に考えたことのいくつかを記録し、それを 50 ...

ウェブサイトのキーワードがホームページに表示されるまでの時間を予測する3つの方法

まず、キーワード予測が必要な理由を説明します。ここで考慮すべき点は、Webサイトの運用と会社の運用(...

Microsoft Azure でサーバーレス コンピューティング機能アプリケーションを作成する方法は?

[51CTO.com クイック翻訳] 従来のクラウド サービスのシナリオでは、企業は特定の仮想マシン...

ウェブサイトのリンクを最適化する方法

優れたウェブサイトの構築Google の使命は、世界中の情報を整理し、世界中の人々がアクセスして使え...

アプリプロモーションの完全ガイド: 何かを得るために何かを犠牲にする

アプリ開発はもはや「お金持ちの愚か者たち」の温床ではありません。ますます多くの独立系モバイルアプリ開...

ultravps-$4/KVM/512m メモリ/10gSSD/1T トラフィック/シアトル/ラスベガス

ultravps.com は fiberhub の VPS ブランドです。50% オフの VPS が...

人材業界の特性を把握し、人材サイトを正しく運営する

最近、業界ではSogouと360が合併するかどうかに注目が集まっています。明らかに、他の種類のウェブ...