【问题标题】:build artifacts download from nexus in vsts release definition在 vsts 发布定义中从 nexus 下载构建工件
【发布时间】:2018-10-11 21:31:18
【问题描述】:

我有 Maven 构建的构建定义。构建后,我使用 nexus 工件上传插件将工件上传到 nexus 存储库。

根据发布定义,有什么方法可以从 nexus 下载工件以用于我的部署?

【问题讨论】:

    标签: download azure-devops release nexus


    【解决方案1】:

    如果您使用的是 nexus 2.x,您可以使用 REST API 从 nexus repo 下载工件:

    wget "http://local:8081/service/local/artifact/maven/redirect?g=com.mycompany&a=my-app&v=LATEST" --content-disposition
    

    curl --insecure "https://local:8081/service/local/artifact/maven/content?r=public&g=log4j&a=log4j&v=1.2.17&p=jar&c=" > log4j.ja
    

    如果您使用的是 nexus 3.x,您可以使用以下方式从 nexus repo 下载工件:

    • 选项1:使用maven命令

      mvn org.apache.maven.plugins:maven-dependency-plugin:3.0.1:copy -Dartifact=log4j:log4j:1.2.17:jar -DoutputDirectory=./
      
    • 选项 2:使用 wget 和 bash 脚本下载:

      #!/bin/sh
      
      repo="https://nexus.url.com"
      groupId=$1
      artifactId=$2
      version=$3
      
      # optional
      classifier=$4
      type=$5
      
      if [[ $type == "" ]]; then
        type="jar"
      fi
      if [[ $classifier != "" ]]; then
        classifier="-${classifier}"
      fi
      
      groupIdUrl="${groupId//.//}"
      filename="${artifactId}-${version}${classifier}.${type}"
      
      if [[ ${version} == *"SNAPSHOT"* ]]; then repo_type="snapshots"; else repo_type="releases"; fi
      
      if [[ $repo_type == "releases" ]]
       then
         wget --no-check-certificate "${repo}/repository/releases/${groupIdUrl}/${artifactId}/${version}/${artifactId}-${version}${classifier}.${type}" -O ${filename} -k
       else
         versionTimestamped=$(wget -q -O- --no-check-certificate "${repo}/repository/snapshots/${groupIdUrl}/${artifactId}/${version}/maven-metadata.xml" | grep -m 1 \<value\> | sed -e 's/<value>\(.*\)<\/value>/\1/' | sed -e 's/ //g')
      
         wget --no-check-certificate "${repo}/repository/snapshots/${groupIdUrl}/${artifactId}/${version}/${artifactId}-${versionTimestamped}${classifier}.${type}" -O ${filename}
       fi
      
      ´´´
      
      usage
       script.sh groupid artifactid version classifier type
       ex:
       script.sh log4j log4j 4.2.18 sources zip 
       script.sh log4j log4j 4.2.19  -> get jar as default
       script.sh log4j log4j 4.2.19-SNAPSHOT  -> get jar as default
      

    更多详情,可以参考Fetching artifact programmatically through REST/API fro Nexus2/3

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      • 2018-12-04
      相关资源
      最近更新 更多