2017-02-14 4 views
0

Ich alle,Travis Gitflow Java Maven Workflow

arbeiten an einem Java-Projekt gehostet auf GitHub. Ich möchte den Code direkt auf Sonatype auf Entwicklung und Master-Zweig schieben.

derzeit nur die Zweigwerk entwickeln, weil ich die GPG-Signatur

übersprungen

Ich benutze die setting.xml in .travis Ordner mit meinen Zugangsdaten

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
         http://maven.apache.org/xsd/settings-1.0.0.xsd"> 
    <servers> 
     <server> 
      <!-- Maven Central Deployment --> 
      <id>ossrh</id> 
      <username>${env.SONATYPE_USERNAME}</username> 
      <password>${env.SONATYPE_PASSWORD}</password> 
     </server> 
    </servers> 
    <profiles> 
     <profile> 
      <id>ossrh</id> 
      <activation> 
       <activeByDefault>true</activeByDefault> 
      </activation> 
      <properties> 
       <gpg.executable>gpg</gpg.executable> 
       <gpg.passphrase>${env.GPG_PASSPHRASE}</gpg.passphrase> 
      </properties> 
     </profile> 
    </profiles> 
</settings> 

mein travis.yml sieht so aus:

language: java 
jdk: 
    - oraclejdk8 

script: 
- mvn --settings .travis/settings.xml clean verify 

deploy: 
- 
    provider: script 
    script: 
    - mvn --settings .travis/settings.xml deploy -D gpg.skip -P release 
    on: 
    branch: develop 
- 
    provider: script 
    script: 
    - mvn --settings .travis/settings.xml org.codehaus.mojo:versions-maven-plugin:2.3:set -D newVersion=$TRAVIS_TAG -P release 
    - .travis/gpg.sh 
    - mvn clean deploy --settings .travis/settings.xml -D skipTests=true --batch-mode --update-snapshots -P release 
    on: 
    tags: true 

Mein Release-Profil enthält die erforderlichen Deploy-Plugins.

Ich bekomme einen Fehler, wenn ich ein Tag/Release (wie 0.0.2) drücken. Ich erwarte, dass dies eine Veröffentlichung unter Verwendung des Tags bereitstellt.

Der Zweig Entwickeln funktioniert einwandfrei und der Snapshot wird korrekt im Sonatyp Repo bereitgestellt.

https://github.com/effectus-io/effectus-parent

Dank im Voraus

hier ist die travis Fehler protokollieren.

The command "mvn --settings .travis/settings.xml clean verify" exited with 0. Skipping a deployment with the script provider because this branch is not permitted dpl.0 Fetching: dpl-1.8.31.gem (100%)Fetching: dpl-1.8.31.gem (100%) Successfully installed dpl-1.8.31 1 gem installed dpl.1 Installing deploy dependencies !!! Script support is experimental !!! Preparing deploy Cleaning up git repository with `git stash --all`. If you need build artifacts for deployment, set `deploy.skip_cleanup: true`. See https://docs.travis-ci.com/user/deployment/#Uploading-Files. No local changes to save dpl.3 Deploying application No stash found. /home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-1.8.31/lib/dpl/cli.rb:54:in `system': wrong first argument (ArgumentError) from /home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-1.8.31/lib/dpl/cli.rb:54:in `shell' from /home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-1.8.31/lib/dpl/provider/script.rb:18:in `push_app' from /home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-1.8.31/lib/dpl/provider.rb:146:in `block in deploy' from /home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-1.8.31/lib/dpl/cli.rb:41:in `fold' from /home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-1.8.31/lib/dpl/provider.rb:146:in `deploy' from /home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-1.8.31/lib/dpl/cli.rb:32:in `run' from /home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-1.8.31/lib/dpl/cli.rb:7:in `run' from /home/travis/.rvm/gems/ruby-1.9.3-p551/gems/dpl-1.8.31/bin/dpl:5:in `<top (required)>' from /home/travis/.rvm/gems/ruby-1.9.3-p551/bin/dpl:23:in `load' from /home/travis/.rvm/gems/ruby-1.9.3-p551/bin/dpl:23:in `<main>' failed to deploy

+0

Nicht ganz sicher, wie Sie helfen können, aber Durchsuchen von DPL Ich habe dies gesehen: https://github.com/travis-ci/dpl/pull/466, können Sie einen Blick dorthin werfen und sehen, ob einer der Commits geben Sie Hinweise, wie es funktioniert. – DarthHater

Antwort

0

nach viel Versuch und Irrtum ich es einfach zu viel Arbeit, um zu versuchen und Zeichen Release auf travis realisiert ist, gibt es keine gute Unterstützung und das ist eine Schande.

Meine alternative Lösung ist die Verwendung von bintray ->https://bintray.com/ es bietet eine Release-Repo mit automatisieren GPG-Signierung der Gläser. Es synchronisiert auch mit sonatype, also glaube ich, dass dies eine komplette Lösung ist, die maven verwendet.

in der Pom Ich automatisierte die Versionierung mit dem Plugin ->https://github.com/effectus-io/effectus-parent/blob/master/pom.xml#L299 Hinweis Ich begehe nicht von Travis!

Ich hielt den Schnappschuss direkt in Sonatype der Einfachheit halben gehen ->https://github.com/effectus-io/effectus-parent/blob/master/.travis.yml#L34

Sie meinen Workflow hier sehen ->https://github.com/effectus-io/effectus-parent/releases/tag/0.0.10

mit gitflow, normal verpflichten Zweig zu entwickeln um einen Schnappschuss Sonatype automatisch schieben. Die Verwendung eines Releases (nach dem Tagging) löst einen Build und Reversion aus, indem das maven version plugin verwendet wird, welches den SNAPSHOT von den Pom (s) entfernt und in bintray deployed.

+0

Um die Versionssache zu vermeiden, könnte man ' $ {revision} ' machen, siehe hier: https://axelfontaine.com/blog/dead-burried.html Für Travis folgte ich: https: // dracoblue. net/dev/uploading-snapshots-und-releases-zu-maven-central-with-travis/die einzige wichtige Sache war, die GPG related env Variablen ohne newline z. B. zu speichern'gpg --export-ownertrust | base64 | tr -d '\ n'' – Karussell