2017-06-16 21 views
6

Tôi đang sử dụng tre 6.0.3 build 60004 và tôi đã cài đặt phiên bản 2.1.0 của official Artifactory plugin for Bamboo.Xuất bản lên Artifactory từ Bamboo 6

Các build.gradle của dự án trông giống như:

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 
     } 
    } 
} 

Khi tôi chạy lệnh gradle build assembleRelease artifactoryPublish trên máy tính xách tay của tôi, nó tải lên trong Artifactory repo một aar và một tập tin pom.

Tôi đã thử sử dụng tác vụ Artifactory Deployment trong dự án triển khai chạy sau khi tác vụ xây dựng thực hiện gradle build assembleRelease (vì vậy giống nhau nhưng không xuất bản thành hiện vật), nhưng thay vào đó chỉ xuất bản tệp aar và cấu trúc thư mục trong artifactory không Không giống nhau (nó không phân tích tên gói theo thư mục con). Làm thế nào để đạt được cùng với tre?

Trả lời

1

Theo số Bamboo Artifacotry plugin official page chưa có plugin nào cho Bamboo 6.0 (nhưng đối với Bamboo 5.15). Tuy nhiên nếu bạn sử dụng tác vụ cấp để xuất bản, plugin Bamboo không được sử dụng.

+0

Điều này hoàn toàn không trả lời được câu hỏi. Tôi hỏi về cách xuất bản cả tệp 'aar' và tệp' pom' bằng cách sử dụng plugin giống như khi tôi làm mà không có plugin.Tôi biết đó là hai điều khác nhau, nhưng tôi đã mong đợi kết quả tương tự bằng cách sử dụng một trong hai, nhưng đó không phải là trường hợp – Guillaume

2

Không sử dụng JFrog, chúng tôi sử dụng Nexus, nhưng có vẻ như nhiệm vụ Triển khai dự án trong plugin được thiết kế chỉ để lấy các tạo phẩm được chia sẻ/xuất bản từ kế hoạch xây dựng mà Dự án triển khai phụ thuộc và tải chúng lên Artifactory . Vì vậy, đối với vấn đề đầu tiên của bạn, POM không được tải lên, POM có phải là một tạo phẩm được chia sẻ trong kế hoạch xây dựng nguồn cho dự án triển khai không? Vì vậy, bạn có hai tạo tác được chia sẻ trong kế hoạch xây dựng đó, tệp lưu trữ AAR và POM?

Đối với vấn đề thứ hai của bạn, nó có thể phụ thuộc vào cách bạn xác định đường dẫn đến tạo phẩm được chia sẻ trong kế hoạch xây dựng nguồn. Nó không giống như nhiệm vụ triển khai cung cấp cho bạn bất kỳ tùy chọn về nơi để viết các tạo tác để trong artifactory. Tuy nhiên, tôi nhận thấy nhiệm vụ xây dựng kế hoạch bình thường sử dụng một bộ mô tả tập tin JSON nơi bạn có quyền kiểm soát nhiều hơn:

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

Vì vậy, tôi tự hỏi, nếu bạn sẽ phải linh hoạt hơn nếu bạn xuất bản tạo tác của bạn từ Kế hoạch xây dựng bình thường ăn khá so với Dự án triển khai và chỉ tải xuống phần tạo tác từ tạo tác ở đầu nhiệm vụ Dự án triển khai của bạn cho môi trường đó.

Không phải giải pháp thực sự - chỉ cần một loạt những điều cần xem xét có thể hữu ích.

+0

có, tôi đã thấy Thông số tập tin trước đây, nhưng không có nhiều ví dụ về cách nó có thể giúp đỡ trong việc làm những gì tôi muốn. Tôi không ngại sử dụng nó, nhưng làm thế nào? Ngoài ra, nó cần phải được tự động, do đó, thiết lập những thứ như groupId/artifactId có thể được thực hiện cho mỗi dự án, nhưng phiên bản cần được lấy từ tập tin AAR chính nó – Guillaume

0

Hình như có một bản cập nhật dành cho phiên bản 6 + cho tre máy chủ nằm ở đây: https://marketplace.atlassian.com/plugins/org.jfrog.bamboo.bamboo-artifactory-plugin/server/overview

Tuy nhiên, tôi đang cố gắng nó bây giờ với phiên bản Atlassian tre 6.3.2 xây dựng 60.307 và cứ bị lỗi này:

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

thử thêm nó như là một thực thi như tài liệu ở đây https://www.jfrog.com/confluence/display/RTF/Bamboo%20Artifactory%20Plug-in

Nhưng vẫn nhận được lỗi. Vì vậy, cố gắng một lần nữa bằng cách sử dụng tập tin spec nó khuyến cáo chỉ sử dụng nhiệm vụ giải quyết chung nhưng vẫn không có may mắn.

+0

Có Tôi đang thử với cùng một plugin, nhưng tôi không thể hình làm thế nào để làm cho nó hoạt động như tôi muốn. Trên một mặt lưu ý, đây không thực sự là một câu trả lời – Guillaume

Các vấn đề liên quan