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

推薦する

#推奨# phoenixnap-$64/E3-1230v2/8g メモリ/500g ハードディスク/5IP/IPMI/Phoenix

突然、フェニックス最大のデータセンターである Phoenixnap が、超低価格の独立型サーバーを数...

papashosting-$2.99/1g メモリ/30g SSD/1T トラフィック/ペンシルバニア

papashosting.com は新しく設立された会社のようです。ドメイン名登録、仮想ホスティング...

SEO作業:公然と板張りの道路を建設せず、密かに陳倉を渡る

ビジネスは戦場のようなもので、失敗も成功も多くの場合、たった一つの考えで決まります。最適化についても...

WeChatパブリックアカウントの運用とプロモーションの完全ガイド!

1. 公式アカウント設定公開アカウント設定とは、公開アカウントの見た目のことであり、他人が一目見るも...

Amazon Auroraについて

Amazon Aurora は、ハイエンドの商用データベースのパフォーマンスと可用性とオープンソース...

Douyinのブランドアップグレードは、Kuaishouとの戦いであるだけでなく、生き残るために不可欠な戦略的変革でもある。

おそらく、今後はTik TokとWeChatの間で戦いが起こるとも言えるでしょう。もちろん、前提条件...

ZK (ZooKeeper) 分散ロック実装

[[430832]]準備するこの記事では、事前にセットアップできる 3 つの独立したサーバーを使用し...

国際仮想発電所ディスパッチコンテスト:アリババDAMOアカデミーのソルバーが優勝

仮想発電所はエネルギー構造のグリーン変革を促進するのに役立ち、二重炭素目標の下で大きな注目を集めてい...

locvps: 秋の特別オファー、日本 VPS/香港 VPS、月額 29 元から、4G メモリ/1 コア/40g SSD/500G トラフィック/100M 帯域幅

locvpsは中国の老舗VPSブランドで、10以上のデータセンターや回線でVPS事業を展開しているこ...

クラウドとエッジ AI: あなたの施設に最適なのはどちらでしょうか?

ビル管理者は、これまでにない速さで、管理する建物にスマートテクノロジーを導入しています。 Junip...

Google+のコンテンツがGoogle検索に表示され始める

Google の検索結果は常にパーソナライズされています。Google アカウントにログインしていな...

地域別のWeiboマーケティングに真剣に取り組んでいますか?

毎日QQスペースを閲覧するだけの友人が、突然、A5ウェブマスターネットワークSEO診断チームに、新し...

HarmonyOS サンプルのペーストボード分散ペーストボード

[[435097]]詳細については、以下をご覧ください。 51CTOとHuaweiが共同で構築したH...