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処理をデータソースに近づける

推薦する

クラウドネイティブアプリケーションリンク分析の実践を学習しましたか?

1. クラウドアプリケーションの現状と課題Gビヘイビアは「123+N」デジタル開発システムを深化させ...

WeChatパブリックアカウントマーケティングには、WeChat「友達サークル」の転送も必要

WeChat マーケティングは、多くのオンライン マーケターにとって欠かせないマーケティング手法です...

WeChatパブリックアカウントのフォロワー数を増やすためのヒント

誰もがWeChatマーケティングの熱狂を経験したことがあるでしょうし、まだ経験している人もいるでしょ...

クラウドコンピューティングビジネスインテリジェンスの現状

調査機関の調査によると、2019 年に 48% の組織がクラウド コンピューティング ビジネス イン...

360buyの内部構造シリーズの詳細な説明

数日前、著者は「ウェブサイトアーキテクチャの観点からTaoxie.comのSEOをレイアウトする方法...

革新的な接続性: マルチアクセス エッジ コンピューティングの未来をリード

将来的には、エッジ コンピューティングと人工知能やモノのインターネットなどの新興テクノロジーの融合が...

StableHost-10ドル/512mメモリ/1gバースト/20gハードディスク/2Tトラフィック/フェニックスシティ

StableHost の VPS がついに値下げされました。今なら 30% 割引コード LOVEST...

hostkvm: 香港 cn2 高速 VPS、20% 割引、月額 7.6 ドルから、2G メモリ/1 コア/40gSSD/120G トラフィック

Hostkvm は現在、香港葵湾データセンターで香港 CN2 VPS を推進しています。この VPS...

新しいルールによる百度ランキングの新たな変化

22日と28日の大規模な調整を通じて、百度は大量のウェブサイトを猛烈に排除した。 Baidu の善し...

企業サイトSEOにおけるキーワード選定の見方

企業のウェブサイトの構築に関しては、個人的には他の人が言うほど難しいとは思いません。もちろん、そう簡...

ellipsis-$10/年/100MB RAM/10GB HDD/10MB無制限/OVH/カナダ/480GB DDOS保護

Ellipsis Node は主に OVH のカナダ データ センターの VPS を運用しています。...

タッチポイントマーケティングは興味深いが、その中でのウェブサイトの役割はさらに興味深い。

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますこうしたユ...

ハイブリッドクラウド市場の現状と発展動向に関する調査

広い意味では、ハイブリッド クラウドは、同種クラウド コンピューティング、異種クラウド コンピューテ...

モグジエの拡大ロジック:垂直化とカテゴリー拡大による新規顧客の獲得

8月2日、Mogujieは将来、オンライン上に異なる位置付けの複数のストリートを構築し、さまざまな特...

Wikibon: クラウドはビッグデータ分析の恩恵を享受するための触媒となる

近年、ビッグデータ分析はデジタルビジネスの中核となり、データをビジネス価値に変換し、差別化された業務...