[[428249]] このワークフローでは、Maven と CI サーバーを使用して、コンパイルされた成果物を構築、保存、管理できます。 Nexus は、成果物を保存および取得するリポジトリ マネージャーです。これにより、構築した成果物をプライベートで安全なリポジトリにホストできるようになります。デフォルトでは、開発者は開発時に、一般的なプロジェクトのコンパイルおよび構築ツールである maven、ant、gradle などのパッケージ管理ツールを使用します。これらのツールはコマンドライン ツールとして理解できます。依存パッケージ自体は保存されませんが、現在のプロジェクト ビルドに必要なパッケージをパブリック ネットワーク上の公式リポジトリからダウンロードします。 (イントラネットの速度はパブリックネットワークよりも速く、パイプライン構築の速度に直接影響します) 商品のアップロードNexus UI ページNexus UI は、製品のアップロード機能を提供します。 「アップロード」に移動し、アップロードするターゲット リポジトリを選択します。最後に、倉庫内の荷物の座標と荷物情報を入力します。 Mavenツールの使用通常、アップロードする前にウェアハウスを認証する必要があるため、まず Maven 構成ファイル (settings.xml) にウェアハウスの認証情報を入力する必要があります。
- <サーバー>
- <id>マイメイヴン</id>
- <ユーザー名>管理者</ユーザー名>
- <パスワード>admin123</パスワード>
- </サーバー>
mvn deploy コマンドを使用して、成果物をアップロードして公開します。コマンドのパラメータと形式は次のとおりです。 - mvn deploy:デプロイファイル
- -DgroupId=xxxxxx pom 内のグループ ID
- -DartifactId=xxxxxx pom のアーティファクト ID
- -Dversion=xxxxxx pom 内のバージョン番号
- -Dpackaging=xxxxxx pom でのパッケージング方法
- -Dfile=xxxxxx ローカルファイル
- -Durl=xxxxxx 倉庫 URL
- -DrepositoryId=xxxxxx は、setting.xml (認証) に対応します。
パッケージにすでに pom.xml ファイルの説明がある場合は、pom.xml ファイルを通じて直接アップロードできます。 - mvn deploy:デプロイファイル \
- -DgeneratePom=偽\
- -DリポジトリID=mymaven \
- -Durl=http://192.168.1.200:8081/リポジトリ/mymavenrepo \
- -DpomFile=pom.xml \
- -Dfile=target/demo-0.0.1-SNAPSHOT.jar
Jenkinsプラグインの使用Nexus Artifact Uploader プラグインをインストールし、スニペット ジェネレーターを使用して DSL を生成します。 - nexusArtifactUploader アーティファクト: [[artifactId: 'devopstest' ,
- 分類子: '' 、
- ファイル: 'target/demo-0.0.1-SNAPSHOT.jar' 、
- タイプ: 'jar' ]],
- 資格情報ID: '1de05a13-197c-4a72-8c6a-cd330fc45559' 、
- グループID: 'com.jenkins' 、
- nexusUrl: '192.168.1.200:8081' 、
- nexusバージョン: 'nexus3' 、
- プロトコル: 'http' 、
- リポジトリ: 'mymavenrepo' 、
- バージョン: '1.1.2'
拡張: 製品を頻繁にアップロードする必要がある場合は、最終的に関数にカプセル化して簡単に再利用できるようにします。 - //NexusUploadByPlugin( 'devops-test' 、 'target/demo-0.0.1-SNAPSHOT.jar' 、 'jar' 、 'com.jenkins' 、 '1.1.2' )
-
- def NexusUploadByPlugin(アーティファクトID、ファイル、タイプ、グループID、バージョン){
- nexusArtifactUploader アーティファクト: [[artifactId: アーティファクトId,
- 分類子: '' 、
- ファイル: ファイル、
- タイプ: タイプ]],
- 資格情報ID: '1de05a13-197c-4a72-8c6a-cd330fc45559' 、
- グループID: グループID、
- nexusUrl: '192.168.1.200:8081' 、
- nexusバージョン: 'nexus3' 、
- プロトコル: 'http' 、
- リポジトリ: 'mymavenrepo' 、
- バージョン: バージョン
- }
Nexus APIの使用デバッグ後、次のファイルアップロード インターフェイスが整理されます。 - ##PNG
- curl -X POST "http://192.168.1.200:8081/service/rest/v1/components?repository=myrepo" \
- -H "受け入れる: application/json" \
- -H "コンテンツタイプ: multipart/form-data" \
- -F "raw.directory=/tmp" \
- -F "raw.asset1=@default title_custom px_2020-10-01-0.png;type=image/png" \
- -F "raw.asset1.filename=デフォルト title_custom px_2020-10-01-0.png"
-
-
- ## tar.gz と ZIP
- curl -X POST "http://192.168.1.200:8081/service/rest/v1/components?repository=myrepo" \
- -H "受け入れる: application/json" \
- -H "コンテンツタイプ: multipart/form-data" \
- -F "raw.directory=/tmp" \
- -F "[email protected];タイプ=application/x-gzip" \
- -F "raw.asset1.filename=aaa.tar.gz"
-
-
- curl -X POST "http://192.168.1.200:8081/service/rest/v1/components?repository=myrepo" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "raw.directory=/tmp" -F "raw.asset1=@waypoint_0.1.5_linux_amd64.zip;type=application/x-gzip" -F "raw.asset1.filename=waypoint_0.1.5_linux_amd64.zip"
-
-
- ## Jarファイル
- curl -X POST "http://192.168.1.200:8081/service/rest/v1/components?repository=myrepo" \
- -H "受け入れる: application/json" \
- -H "コンテンツタイプ: multipart/form-data" \
- -F "raw.directory=/tmp" \
- -F "[email protected];type=application/java-archive" \
- -F "raw.asset1.filename=aopalliance-1.0.jar"
製品をダウンロードカール- curl -u admin:admin123 http://192.168.1.200:8081/repository/anyops/com/anyops/a
- nyops-devops-service/1.1.1/anyops-devops-service-1.1.1.jar -o anyops-devops-service-1.1.1.jar
Wget- wget
- itory/anyops/com/anyops/anyops-devops-service/1.1.1/anyops-devops-service-1.1.1.jar
例: 製品アップロードパイプラインの構成実際、Nexus UI ページを参照して、Jenkins を使用して製品パッケージをアップロードするためのパイプライン ジョブを実行できます。 - srcUrl はソース パッケージのソース コード/パッケージ リポジトリを参照します。
- branchName ソース パッケージ リポジトリのブランチ。
- groupId、artifactid、version Maven タイプ ウェアハウスの座標。
- タイプパッケージタイプ;
この Jenkinsfile には、コードのダウンロード、コードのコンパイル、ユニット テスト、製品のアップロードという 4 つの段階が含まれています。 - @ライブラリ( "mylib@main" ) _
- org.devops.* をインポートします。
-
- def checkout = 新しい Checkout()
- デフビルド = 新しいビルド()
- def unittest = 新しい UnitTest()
- 定義ソナー = 新しいソナー()
-
- パイプライン
- エージェント { ラベル"build" }
-
- オプション {
- デフォルトチェックアウトをスキップするtrue
- }
-
-
- ステージ{
- ステージ( "チェックアウト" ){
- ステップ{
- スクリプト {
- println( "GetCode" )
- checkout.GetCode( "${env.srcUrl}" , "${env.branchName}" )
- }
- }
- }
-
- ステージ( "ビルド" ){
- ステップ{
- スクリプト{
- println( "ビルド" )
- sh "mvn クリーンパッケージ "
- }
- }
- }
-
- ステージ( "UnitTest" ){
- ステップ{
- スクリプト{
- unittest.CodeTest( "${env.buildTool}" )
- }
- }
- }
-
- ステージ( "アップロード" ){
- ステップ{
- スクリプト{
- NexusUploadByPlugin( "${env.artifactId}" ,
- 'target/demo-0.0.1-SNAPSHOT.jar' 、
- "${env.type}" 、
- "${env.groupId}" 、
- "${env.version}" )
- }
- }
- }
- }
- }
-
- //NexusUploadByPlugin( 'devops-test' 、 'target/demo-0.0.1-SNAPSHOT.jar' 、 'jar' 、 'com.jenkins' 、 '1.1.2' )
-
- def NexusUploadByPlugin(アーティファクトID、ファイル、タイプ、グループID、バージョン){
- nexusArtifactUploader アーティファクト: [[artifactId: アーティファクトId,
- 分類子: '' 、
- ファイル: ファイル、
- タイプ: タイプ]],
- 資格情報ID: '1de05a13-197c-4a72-8c6a-cd330fc45559' 、
- グループID: グループID、
- nexusUrl: '192.168.1.200:8081' 、
- nexusバージョン: 'nexus3' 、
- プロトコル: 'http' 、
- リポジトリ: 'mymavenrepo' 、
- バージョン: バージョン
- }
歴史とNexus関連のトピック この記事はWeChatのパブリックアカウント「DevOps Cloud Academy」から転載したものです。 |