Skip to content

Commit e621839

Browse files
authored
Sign maven artifacts in aggregation dra zip (#2423) (#2427)
This adds signing support for artifacts in maven aggregation dra zip. This is required for publishing this to maven central (cherry picked from commit d3606cb)
1 parent 335b535 commit e621839

File tree

7 files changed

+45
-24
lines changed

7 files changed

+45
-24
lines changed

.DS_Store

-6 KB
Binary file not shown.

.buildkite/dra-workflow.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ steps:
44
timeout_in_minutes: 60
55
env:
66
USE_DRA_CREDENTIALS: true
7+
USE_MAVEN_GPG: true
78
agents:
89
provider: gcp
910
image: family/elasticsearch-ubuntu-2004

.buildkite/dra.sh

100644100755
File mode changed.

.buildkite/hooks/pre-command

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ export JAVA13_HOME
3636
JAVA14_HOME="$HOME/.java/openjdk14"
3737
export JAVA14_HOME
3838

39+
if [[ "${USE_MAVEN_GPG:-}" == "true" ]]; then
40+
vault_path="kv/ci-shared/release-eng/team-release-secrets/es-delivery/gpg"
41+
ORG_GRADLE_PROJECT_signingKey=$(vault kv get --field="private_key" $vault_path)
42+
ORG_GRADLE_PROJECT_signingPassword=$(vault kv get --field="passphase" $vault_path)
43+
export ORG_GRADLE_PROJECT_signingKey
44+
export ORG_GRADLE_PROJECT_signingPassword
45+
fi
46+
3947
if [[ "$USE_DRA_CREDENTIALS" == "true" ]]; then
4048
DRA_VAULT_ROLE_ID_SECRET=$(vault read -field=role-id secret/ci/elastic-elasticsearch-hadoop/legacy-vault-credentials)
4149
export DRA_VAULT_ROLE_ID_SECRET

buildSrc/src/main/groovy/org/elasticsearch/hadoop/gradle/BuildPlugin.groovy

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -19,37 +19,33 @@
1919

2020
package org.elasticsearch.hadoop.gradle
2121

22+
import org.elasticsearch.gradle.testclusters.StandaloneRestIntegTestTask
2223
import org.elasticsearch.hadoop.gradle.buildtools.DependenciesInfoPlugin
2324
import org.elasticsearch.hadoop.gradle.buildtools.DependencyLicensesTask
2425
import org.elasticsearch.hadoop.gradle.buildtools.LicenseHeadersTask
25-
import org.elasticsearch.gradle.testclusters.StandaloneRestIntegTestTask
2626
import org.elasticsearch.hadoop.gradle.buildtools.UpdateShasTask
2727
import org.elasticsearch.hadoop.gradle.buildtools.info.BuildParams
2828
import org.elasticsearch.hadoop.gradle.scala.SparkVariantPlugin
2929
import org.gradle.api.Plugin
3030
import org.gradle.api.Project
3131
import org.gradle.api.Task
3232
import org.gradle.api.XmlProvider
33-
import org.gradle.api.artifacts.Configuration
34-
import org.gradle.api.artifacts.Dependency
35-
import org.gradle.api.artifacts.DependencyResolveDetails
36-
import org.gradle.api.artifacts.ModuleDependency
37-
import org.gradle.api.artifacts.ProjectDependency
38-
import org.gradle.api.artifacts.ResolutionStrategy
33+
import org.gradle.api.artifacts.*
34+
3935
import org.gradle.api.attributes.LibraryElements
4036
import org.gradle.api.attributes.Usage
4137
import org.gradle.api.component.SoftwareComponentFactory
4238
import org.gradle.api.file.CopySpec
4339
import org.gradle.api.file.FileCollection
4440
import org.gradle.api.java.archives.Manifest
41+
import org.gradle.api.plugins.BasePluginExtension
4542
import org.gradle.api.plugins.JavaLibraryPlugin
4643
import org.gradle.api.plugins.JavaPlugin
4744
import org.gradle.api.plugins.scala.ScalaPlugin
4845
import org.gradle.api.provider.Provider
4946
import org.gradle.api.publish.maven.MavenPom
5047
import org.gradle.api.publish.maven.MavenPublication
5148
import org.gradle.api.publish.maven.tasks.GenerateMavenPom
52-
import org.gradle.api.publish.maven.tasks.PublishToMavenRepository
5349
import org.gradle.api.tasks.Copy
5450
import org.gradle.api.tasks.SourceSet
5551
import org.gradle.api.tasks.SourceSetContainer
@@ -62,25 +58,14 @@ import org.gradle.external.javadoc.JavadocOutputLevel
6258
import org.gradle.external.javadoc.MinimalJavadocOptions
6359
import org.gradle.plugins.ide.eclipse.EclipsePlugin
6460
import org.gradle.plugins.ide.idea.IdeaPlugin
65-
import org.gradle.api.plugins.BasePluginExtension
66-
6761
import org.w3c.dom.NodeList
68-
62+
import org.gradle.api.component.ConfigurationVariantDetails
6963
import javax.inject.Inject
7064

71-
import static org.elasticsearch.hadoop.gradle.scala.SparkVariantPlugin.SparkVariantPluginExtension
7265
import static org.elasticsearch.hadoop.gradle.scala.SparkVariantPlugin.SparkVariant
73-
import org.gradle.api.artifacts.ResolvableDependencies;
74-
import org.gradle.api.artifacts.component.ComponentIdentifier;
75-
import org.gradle.api.artifacts.result.ResolvedComponentResult;
76-
import org.gradle.api.artifacts.result.ResolvedDependencyResult;
77-
import org.gradle.api.file.FileCollection;
78-
import org.gradle.api.specs.AndSpec;
79-
import org.gradle.api.specs.Spec;
80-
import org.gradle.api.artifacts.component.ModuleComponentIdentifier;
81-
import java.util.stream.Collectors;
82-
83-
class BuildPlugin implements Plugin<Project> {
66+
import static org.elasticsearch.hadoop.gradle.scala.SparkVariantPlugin.SparkVariantPluginExtension
67+
68+
class BuildPlugin implements Plugin<Project> {
8469

8570
public static final String SHARED_TEST_IMPLEMENTATION_CONFIGURATION_NAME = "sharedTestImplementation"
8671
public static final String SHARED_ITEST_IMPLEMENTATION_CONFIGURATION_NAME = "sharedItestImplementation"
@@ -568,6 +553,7 @@ class BuildPlugin implements Plugin<Project> {
568553
private void configureMaven(Project project) {
569554
project.getPluginManager().apply("maven-publish")
570555
project.getPluginManager().apply("com.gradleup.nmcp")
556+
project.getPluginManager().apply("signing")
571557

572558
// Configure Maven publication
573559
project.publishing {
@@ -585,6 +571,12 @@ class BuildPlugin implements Plugin<Project> {
585571
}
586572
}
587573

574+
Provider<String> signingKey = project.getProviders().gradleProperty("signingKey");
575+
if (signingKey.isPresent()) {
576+
project.signing.useInMemoryPgpKeys(signingKey.get(), project.getProviders().gradleProperty("signingPassword").get());
577+
project.signing.sign(project.publishing.publications.main);
578+
}
579+
588580
// Configure Maven Pom
589581
configurePom(project, project.publishing.publications.main)
590582

@@ -633,16 +625,20 @@ class BuildPlugin implements Plugin<Project> {
633625
project.components.add(variantComponent)
634626
// Register the variant's outgoing configurations for publication
635627
variantComponent.addVariantsFromConfiguration(project.configurations.getByName(variant.configuration("apiElements"))) {
628+
filterNonJarArtifacts(it)
636629
it.mapToMavenScope("compile")
637630
}
638631
variantComponent.addVariantsFromConfiguration(project.configurations.getByName(variant.configuration("runtimeElements"))) {
632+
filterNonJarArtifacts(it)
639633
it.mapToMavenScope("runtime")
640634
}
641635
variantComponent.addVariantsFromConfiguration(project.configurations.getByName(variant.configuration("javadocElements"))) {
636+
filterNonJarArtifacts(it)
642637
it.mapToMavenScope("runtime")
643638
}
644639
variantComponent.addVariantsFromConfiguration(project.configurations.getByName(variant.configuration("sourcesElements"))) {
645640
it.mapToMavenScope("runtime")
641+
filterNonJarArtifacts(it)
646642
}
647643

648644
// Create a publication for this adhoc component to create pom generation and publishing tasks
@@ -657,6 +653,11 @@ class BuildPlugin implements Plugin<Project> {
657653
updateVariantArtifactId(project, variantPublication, variant)
658654
}
659655
}
656+
if (signingKey.isPresent()) {
657+
project.signing {
658+
sign(project.publishing.publications.getByName(variant.getName()));
659+
}
660+
}
660661
}
661662
}
662663

@@ -666,6 +667,13 @@ class BuildPlugin implements Plugin<Project> {
666667
}
667668
}
668669

670+
private void filterNonJarArtifacts(ConfigurationVariantDetails details) {
671+
def attribute = details.getConfigurationVariant().getAttributes().getAttribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE)
672+
if (attribute != null && attribute.name != LibraryElements.JAR) {
673+
details.skip()
674+
}
675+
}
676+
669677
private static void configurePom(Project project, MavenPublication publication) {
670678
// add all items necessary for publication
671679
Provider<String> descriptionProvider = project.provider({ project.getDescription() })
@@ -830,7 +838,7 @@ class BuildPlugin implements Plugin<Project> {
830838
precommitTasks.add(licenseHeaders)
831839

832840
if (!project.path.startsWith(":qa")) {
833-
TaskProvider<DependencyLicensesTask> dependencyLicenses = project.tasks.register('dependencyLicenses', DependencyLicensesTask.class) {
841+
TaskProvider<DependencyLicensesTask> dependencyLicenses = project.tasks.register('dependencyLicenses', DependencyLicensesTask.class) {
834842
dependencies = project.configurations.runtimeClasspath
835843
mapping from: /hadoop-.*/, to: 'hadoop'
836844
mapping from: /hive-.*/, to: 'hive'

dist/build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,10 @@ tasks.named('publishMainPublicationToNmcpMainRepository') {
213213
mustRunAfter 'copyPoms'
214214
}
215215

216+
tasks.withType(Sign.class).configureEach {
217+
mustRunAfter 'copyPoms'
218+
}
219+
216220
tasks.named('distribution').configure {
217221
dependsOn 'copyPoms'
218222
}

spark/.DS_Store

-6 KB
Binary file not shown.

0 commit comments

Comments
 (0)