2017-06-16 8 views
6

私はBamboo 6.0.3 build 60004を使用しており、official Artifactory plugin for Bambooのバージョン2.1.0をインストールしました。BambooからArtifactoryに公開する

プロジェクトのbuild.gradleは、次のようになります。私は私のラップトップ上でコマンドを実行するとgradle build assembleRelease artifactoryPublish

apply plugin: 'maven-publish' 
apply plugin: 'com.jfrog.artifactory' 
... 
task androidJavadocs(type: Javadoc) { 
    source = android.sourceSets.main.java.srcDirs 
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) 
} 

task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { 
    classifier = 'javadoc' 
    from androidJavadocs.destinationDir 
} 

task androidSourcesJar(type: Jar) { 
    classifier = 'sources' 
    from android.sourceSets.main.java.srcDirs 
} 

artifacts { 
    archives androidSourcesJar 
    archives androidJavadocsJar 
} 

afterEvaluate { 
    androidJavadocs.classpath += files(android.libraryVariants.collect { variant -> 
     variant.javaCompile.classpath.files 
    }) 
} 

publishing { 
    publications { 
     android.buildTypes.all { variant -> 
      "${variant.name}Aar"(MavenPublication) { 
       // set values from Android manifest file 
       groupId group 
       version version 
       if (variant.name == "release") { 
        artifactId project.getName() 
       } 
       else { 
        artifactId "${project.getName()}-${variant.name}" 
       } 

       artifact "$buildDir/outputs/aar/${project.getName()}-${variant.name}-${version}.aar" 
       artifact androidJavadocsJar 

       pom.withXml { 
        def dependenciesNode = asNode().appendNode('dependencies') 

        // List all compile dependencies and write to POM 
        configurations.compile.getAllDependencies().each { Dependency dep -> 
         if (dep.group == null || dep.version == null || dep.name == null || dep.name == "unspecified") 
          return // ignore invalid dependencies 

         def dependencyNode = dependenciesNode.appendNode('dependency') 
         dependencyNode.appendNode('groupId', dep.group) 
         dependencyNode.appendNode('artifactId', dep.name) 
         dependencyNode.appendNode('version', dep.version) 

         if (!dep.transitive) { 
          // If this dependency is transitive, we should force exclude all its dependencies them from the POM 
          def exclusionNode = dependencyNode.appendNode('exclusions').appendNode('exclusion') 
          exclusionNode.appendNode('groupId', '*') 
          exclusionNode.appendNode('artifactId', '*') 
         } else if (!dep.properties.excludeRules.empty) { 
          // Otherwise add specified exclude rules 
          def exclusionNode = dependencyNode.appendNode('exclusions').appendNode('exclusion') 
          dep.properties.excludeRules.each { ExcludeRule rule -> 
           exclusionNode.appendNode('groupId', rule.group ?: '*') 
           exclusionNode.appendNode('artifactId', rule.module ?: '*') 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
} 

def libraryGroupId = group 
def libraryVersion = version 

artifactory { 
    contextUrl = '<artifactory_url>' 

    publish { 
     repository { 
      repoKey = '<repoKey>' 

      username = artifactory_username 
      password = artifactory_password 
     } 
     defaults { 
      android.buildTypes.all { variant -> 
       publications("${variant.name}Aar") 
       publishArtifacts = true 
      } 

      properties = ['qa.level': 'basic', 'dev.team': 'core'] 
      publishPom = true 
     } 
    } 
} 

、それはArtifactoryレポaarpomファイルでアップロードします。

私はgradle build assembleRelease(そう同じですが、artifactoryに発行せずに)ないビルドタスクの後に実行される展開プロジェクトでArtifactory Deploymentタスクを使用してみましたが、それは代わりにartifactory doesnの中だけAARファイルとディレクトリ構造を出版同じように見えません(パッケージ名はサブフォルダによって分類されません)。 Bambooと同じように達成するには?

答えて

1

Bamboo Artifacotry plugin official pageによれば、まだBamboo 6.0(Bamboo 5.15用)のプラグインはありません。 しかし、等級タスクを使用して公開する場合、Bambooプラグインは使用されません。

+0

これは全く質問に答えません。私は 'aar'ファイルと' pom'ファイルの両方を、プラグインなしで行うのと同じように、プラグインを使って公開する方法について質問しています。私はそれが2つの異なることを知っていますが、どちらも同じ結果を期待していましたが、そうではありません – Guillaume

2

私たちはNexusを使用しますが、プラグインのDeployment Projectタスクは、デプロイメントプロジェクトが依存しているビルドプランから共有/公開された成果物を取得し、それらをArtifactoryにアップロードするように設計されているようです。したがって、最初の問題では、POMがアップロードされていないため、POMはデプロイメントプロジェクトに役立つソースビルド計画の共有アーティファクトですか?そのビルドプラン、アーカイブAARファイル、POMには2つの共有アーティファクトがありますか?

2番目の問題は、ソースビルドプランで共有アーティファクトへのパスを定義する方法によって異なる場合があります。デプロイメントタスクでは、アーティファクトにアーティファクトを書き込む場所についてのオプションはありません。しかし、私は、通常のビルド計画タスクは、あなたがより多くのコントロールを持っているJSONファイルディスクリプタを使用しています注意してください:

https://www.jfrog.com/confluence/display/RTF/Using+File+Specs

あなたはむしろ送り、通常のビルド計画から、あなたのアーティファクトを公開した場合、あなたがより多くの柔軟性を持っているかどうだから私は疑問に思いますデプロイメントプロジェクトのデプロイメントプロジェクトよりも早く、その環境のデプロイメントプロジェクトタスクの始めにartifactoryからアーティファクトをダウンロードしました。

実際には解決策ではありません。それを見てみるだけで役立つかもしれません。

+0

はい、私はファイル仕様を見ましたが、私はそれを使用しても構いませんが、どうですか?また、自動的にする必要があるので、groupId/artifactIdのような設定はプロジェクトごとに行うことができますが、AARファイル自体からバージョンを取得する必要があります – Guillaume

0

ここにある竹Serverのバージョン6+ために利用可能な更新があるように見える: https://marketplace.atlassian.com/plugins/org.jfrog.bamboo.bamboo-artifactory-plugin/server/overview

しかし、私はそれが今アトラシアン竹バージョン6.3.2で60307を構築し、このエラーを取得維持しようとしています:

ここ https://www.jfrog.com/confluence/display/RTF/Bamboo%20Artifactory%20Plug-in

を文書化しかし、まだエラーを受けるよう

Could not execute task no Plugin with key 'org.jfrog.bamboo.bamboo- 
    artifactory-plugin:artifactoryGenericResolveTask' is installed. 

は、実行可能ファイルとして、それを追加してみました。スペックファイルを使って再度試してみると、一般的な解決タスクを使用することをお勧めしますが、まだ運はありません。

+0

はい同じプラグインで試していますが、私が望むようにそれを働かせる方法を出す。副次的には、これは本当の答えではありません – Guillaume

関連する問題