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

推薦する

Baidu Webmaster Platformの外部リンクツールのハイライトの詳細な説明

Baidu Webmaster Platformは絶えず改善されています。10月30日、Baidu ...

Baidu サイトコレクションと K サイトルール

1. 自動ジャンプを使用するページは、Baidu によって破棄される場合があります。これについては特...

馬化騰の社内講義:製品をいかにして人を引き付けるか

【編集者注】この記事は、徐丹丹の微博から転載した馬化騰による内部講演です。最近、上司たちは頻繁に製品...

Dapr 入門チュートリアル - ミドルウェア

Dapr を使用すると、一連のミドルウェア コンポーネントを連鎖させることで、カスタム処理パイプライ...

OpenSNS と ThinkSNS のどちらを選択すればよいですか?

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

クラウド時代のパフォーマンス監視戦略の隠れた利点を明らかにする

クラウド時代のパフォーマンス監視戦略焦点を失うことなく変化に迅速に対応し、事業開発を推進できることは...

racknerd 格安 VPS: 最新プロモーション、米国 (MC+ST) データセンター、無料の 60Gbps 高防御保護、最低 $15/年、5T トラフィック

Racknerd は、安価な VPS の販売からスタートしました。低価格、大量のトラフィック、親切な...

ディーラーは新しいマーケティングについてどのような点を学ぶ必要がありますか?

月収10万元の起業の夢を実現するミニプログラム起業支援プラン概要:この一連の変革に影響を与える主な要...

2021 年の技術予測: クラウド、IoT、ニューノーマル技術

クラウドの支配は続く2020 年のコロナウイルスのパンデミック以前から、クラウドは業界全体にわたって...

ガートナー: クラウドはデータベース市場の未来

ガートナーの予測によると、2022 年までにデータベースの 75% がクラウド プラットフォームに導...

クラウドコンピューティングの開発では何に注意すべきでしょうか?

クラウド コンピューティングの歴史は、インターネットの原型である「銀河間コンピュータ ネットワーク」...

VM、コンテナ、サーバーレスの違いを理解する

従来、アプリケーションは、コードを実行するサーバーやオペレーティング システムと密接にリンクされてい...

#推奨# gigsgigscloud -CN2 GIA/$3.8/KVM/500M メモリ/2 コア/15gSSD/1T トラフィック

gigsgigscloud が、米国ロサンゼルスの双方向 CN2 GIA 回線、KVM 仮想化、2 ...