]> source.dussan.org Git - jgit.git/commitdiff
Scripts to publish jgit artifacts on Maven central 66/14466/3
authorMatthias Sohn <matthias.sohn@sap.com>
Wed, 10 Jul 2013 22:20:09 +0000 (00:20 +0200)
committerMatthias Sohn <matthias.sohn@sap.com>
Thu, 17 Oct 2013 21:15:46 +0000 (23:15 +0200)
- you need an account on oss.sonatype.org and permissions for group id
  org.eclipse.jgit, see [1]
- install ruby [2] if necessary
- run download.rb to download the Maven artifacts from repo.eclipse.org
- then run deploy.rb to stage the artifacts on oss.sonatype.org
- follow [3] to close the staging repository which triggers some sanity
checks on Nexus
- ask community to test artifacts from staging repository
- if tests are ok release the staging repository as described in [4]

[1] https://issues.sonatype.org/browse/OSSRH-2758
[2] https://www.ruby-lang.org/en/downloads/
[3]
https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide#SonatypeOSSMavenRepositoryUsageGuide-7b.StageExistingArtifacts
[4]
https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide#SonatypeOSSMavenRepositoryUsageGuide-8a.ReleaseIt

Change-Id: I830f2392b9234e585b01dbb4a5a369edd88796a2
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
tools/maven-central/deploy.rb [new file with mode: 0755]
tools/maven-central/download.rb [new file with mode: 0755]

diff --git a/tools/maven-central/deploy.rb b/tools/maven-central/deploy.rb
new file mode 100755 (executable)
index 0000000..f169747
--- /dev/null
@@ -0,0 +1,61 @@
+#!/usr/bin/env ruby
+require 'rubygems'
+require 'highline/import'
+
+def run(args)
+  system(*args)
+end
+
+def deploy_jar(artifact, version, prefix)
+  pom = "#{artifact}-#{version}.pom"
+  binary = "#{artifact}-#{version}.jar"
+  javadoc = "#{artifact}-#{version}-javadoc.jar"
+  sources = "#{artifact}-#{version}-sources.jar"
+
+  run prefix + ["-DpomFile=#{pom}", "-Dfile=#{binary}"]
+  run prefix + ["-DpomFile=#{pom}", "-Dfile=#{sources}",
+                   "-Dclassifier=sources"]
+  run prefix + ["-DpomFile=#{pom}", "-Dfile=#{javadoc}",
+                   "-Dclassifier=javadoc"]
+end
+
+def deploy_parent(version, prefix)
+  pom = "org.eclipse.jgit-parent-#{version}.pom"
+  run prefix + ["-DpomFile=#{pom}", "-Dfile=#{pom}"]
+end
+
+def deploy_sh(artifact, version, prefix)
+  pom = "#{artifact}-#{version}.pom"
+  sh = "#{artifact}-#{version}.sh"
+  run prefix + ["-DpomFile=#{pom}", "-Dfile=#{sh}", "-Dpackaging=sh"]
+end
+
+def get_passphrase(prompt="Enter your GPG Passphrase")
+   ask(prompt) {|q| q.echo = false}
+end
+
+version = '3.1.0.201310021548-r'.freeze
+url = 'https://oss.sonatype.org/service/local/staging/deploy/maven2/'
+repositoryId = 'sonatype-nexus-staging'
+puts "gpg passphrase ?"
+passphrase = get_passphrase()
+
+group = 'org.eclipse.jgit'
+artifacts = [group,
+             group + '.ant',
+             group + '.archive',
+             group + '.console',
+             group + '.http.server',
+             group + '.java7',
+             group + '.junit',
+             group + '.junit.http',
+             group + '.pgm',
+             group + '.ui']
+
+prefix = ["mvn", "gpg:sign-and-deploy-file", "-Dgpg.passphrase=#{passphrase}",
+          "-Durl=#{url}", "-DrepositoryId=#{repositoryId}"]
+deploy_parent(version, prefix)
+artifacts.each do |artifact|
+  deploy_jar(artifact, version, prefix)
+end
+deploy_sh('org.eclipse.jgit.pgm', version, prefix)
diff --git a/tools/maven-central/download.rb b/tools/maven-central/download.rb
new file mode 100755 (executable)
index 0000000..b5dd871
--- /dev/null
@@ -0,0 +1,30 @@
+#!/usr/bin/env ruby
+version = '3.1.0.201310021548-r'.freeze
+group = 'org.eclipse.jgit'
+artifacts = [group,
+             group + '.ant',
+             group + '.archive',
+             group + '.console',
+             group + '.http.server',
+             group + '.java7',
+             group + '.junit',
+             group + '.junit.http',
+             group + '.pgm',
+             group + '.ui']
+
+puts 'Deleting current files'
+`rm -fr *.jar *.sh *.pom`
+
+puts 'Downloading org.eclipse.jgit-parent'
+`curl -s https://repo.eclipse.org/content/repositories/jgit-releases/org/eclipse/jgit/#{group}-parent/#{version}/#{group}-parent-#{version}.pom -o #{group}-parent-#{version}.pom`
+
+artifacts.each {|artifact|
+  puts "Downloading #{artifact}-#{version}.jar"
+  `curl -s https://repo.eclipse.org/content/repositories/jgit-releases/org/eclipse/jgit/#{artifact}/#{version}/#{artifact}-#{version}.jar -o #{artifact}-#{version}.jar`
+  `curl -s https://repo.eclipse.org/content/repositories/jgit-releases/org/eclipse/jgit/#{artifact}/#{version}/#{artifact}-#{version}.pom -o #{artifact}-#{version}.pom`
+  `curl -s https://repo.eclipse.org/content/repositories/jgit-releases/org/eclipse/jgit/#{artifact}/#{version}/#{artifact}-#{version}-javadoc.jar -o #{artifact}-#{version}-javadoc.jar`
+  `curl -s https://repo.eclipse.org/content/repositories/jgit-releases/org/eclipse/jgit/#{artifact}/#{version}/#{artifact}-#{version}-sources.jar -o #{artifact}-#{version}-sources.jar`
+}
+
+puts "Downloading org.eclipse.jgit.pgm-#{version}.sh"
+`curl -s https://repo.eclipse.org/content/repositories/jgit-releases/org/eclipse/jgit/#{group}.pgm/#{version}/#{group}.pgm-#{version}.sh -o #{group}.pgm-#{version}.sh`