Gewusst wie: veröffentlichen von Artefakten in Travis CI?
Möchte ich nutzen, Travis CI für mein open-source-Projekt. Das Problem, dass Travis nicht alle Möglichkeiten zu veröffentlichen, produzierte Artefakte (obwohl, Sie haben dies in Ihre Pläne für die Zukunft).
Was sind workarounds zu veröffentlichen/upload Artefakte irgendwo? Ich darf zum ausführen von Skripts auf einem CI-Maschine.
Einfachen upload funktioniert, aber es ist die Frage der Sicherheit: wer wird hochladen können, um etwas in der gleichen Weise wie alle Quellen sind öffentlich.
InformationsquelleAutor der Frage eigenein | 2012-09-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
"Github releases hochladen" - Funktion ist angekündigt. Es unterstützt offiziell alles, was benötigt wird. Sehen http://docs.travis-ci.com/user/deployment/releases/
InformationsquelleAutor der Antwort minghua
GitHub releases Schritt-für-Schritt -
Wurde die Methode bereits bei https://stackoverflow.com/a/24100779/895245und ist schlecht dokumentiert unter: https://docs.travis-ci.com/user/deployment/releases/ , so geht hier eine detaillierte Schritt-für-Schritt.
Hochgeladen Artefakte auf GitHub releases
https://github.com/<username>/<repo>/releases
die es für jedes Git tag-Sie schieben.Erhalten Sie einen Persönlichen Zugangs-Token unter https://github.com/settings/tokens
Nur aktivieren "public_repo" Zugang für öffentliche repositories, "repo" für private.
Speichern Sie das token irgendwo wie können Sie nur sehen, es einmal.
Installieren Sie die
travis
gem:Dann
cd
in Ihr repository und Ihre:aber in letzter Zeit Menschen haben berichtet, dass
travis encrypt -r githubusername/repositoryname --org
stattdessen gebraucht wird, finden Sie unter: https://github.com/travis-ci/travis-ci/issues/8128Dies erzeugt eine Ausgabe wie:
Notieren Sie sich die große verschlüsselte token.
Verwenden
.travis.yml
wie folgt:Was passiert, ist, dass Travis ersetzt jeden
something: secure: <encrypted-string>
mit nursomething: <decrypted-string>
wie erläutert bei: http://docs.travis-ci.com/user/encryption-keys/Dies ist sicher, weil nur autorisierte schiebt durch Sie können Sie entschlüsseln Sie die Zeichenfolge, so dass, wenn ein böswilliger Benutzer versucht, einen pull-request, um Ihre Schnur, würde es sollte einfach nur zeigen, die verschlüsselte Zeichenfolge.
Nun, wenn Sie mit push ein commit mit einem tag, Travis hochladen
release.zip
zu lösen:Wenn Sie bereits geschoben, das Begehen und den tag nach, müssen Sie möglicherweise klicken Sie auf "Neu erstellen" - Taste auf der Travis-Benutzeroberfläche für die es hochladen.
https://stackoverflow.com/a/38037626/895245 hat einige screenshots des Prozesses.
Alternative Methode: die environment-variable
Anstatt eine verschlüsselte Zeichenfolge, könnten wir auch eine versteckte Umgebungsvariable.
Auf dem Travis-Einstellungen für den repository -
https://travis-ci.org/<me>/<myrepo>/settings
erstellen Sie eine Umgebungsvariable:und stellen Sie sicher, markieren Sie "Anzeige-Wert in der build-log" als "Off", und verwenden Sie:
Während dies nicht auf Protokolle für pull-Anfragen, diese Methode ist riskanter, als könnten Sie meine Fehler Liste die Umwelt ein bauen.
Der Vorteil ist, dass diese Methode ist einfacher zu verstehen.
Ein einfaches Beispiel von mir, dass der Upload von Bildern generiert, die von Gnuplot auf GitHub releases:
Frage zu dem GitHub-Seiten Bereitstellung: Wie veröffentlichen auf Github-Seiten aus Travis CI?
InformationsquelleAutor der Antwort Ciro Santilli 新疆改造中心 六四事件 法轮功
Wenn Ihr Projekt ist auf Github - wahrscheinlich mit Travis - dann ist der einfachste Weg, der check-in generierte Artefakte unter die
gh-pages
Zweig. Sehen Sie mehr auf Github.Wie Sie dies tun, hängt viel von den verwendeten build-system. Mit maven verwenden, können Sie
maven-scm-plugin
- ein Beispiel finden Sie hier.BEARBEITEN: Sie können das komplette Beispiel hier: https://github.com/tonnymadsen/ui-bindings/blob/master/com.rcpcompany.updatesite/pom.xml
InformationsquelleAutor der Antwort Tonny Madsen
Also zuerst müssen Sie sicher sein, dass Sie versuchen, bereitstellen von release-Artefakte. So stellen Sie ersten tag im Github. Es manuell zu tun:
Dann in der
.travis.yml
- Datei fügen Sie die folgende Konfiguration. Für gradle-BenutzerHier api_key Wert ist Travis Ci Umgebungsvariable. Die Punkte auf Github api_key.
Datei die build-Artefakt, hergestellt aus den bauen. Was wir wollen, bereitgestellt werden, um gitHub.
ist obligatorisch Konfiguration für tags bereitgestellt werden.
Nein, Sie haben, um die api_key von github:
Wenn Sie auslösen und neue build-Artefakt implementiert wird.
InformationsquelleAutor der Antwort Xelian
Update: Github deaktivieren Sie das Herunterladen API-nun, so unten Antwort ist Idee.
Meine Lösung ist die Verwendung von "secure environment-Variablen" von travis-ci und "Github repo Herunterladen API" mit den zugehörigen Skript
Jedes repo bei Github hat download-Seiten, es ist auch der gute Ort zu veröffentlichen, Ihre Artefakte, und es hat damit "Repo Download API" http://developer.github.com/v3/repos/downloads/
github-upload.rb
aus https://github.com/wereHamster/ghup zu verwalten, die GitHub API.In der Ende, in der
.travis-ci.yml
es sieht wie folgt aussiehe meine detail-blog: http://larrycaiyu.com/blog/2012/10/25/publish-the-artifacts-inside-travis-ci-to-github/
InformationsquelleAutor der Antwort Larry Cai
Ich weiß, dies ist eine ältere Frage, aber ich möchte noch hinzufügen, eine andere Lösung zu der Mischung, die ich glauben, besser zu sein als die bisher diskutierten.
Verwenden Bintray:
Den OP interessiert publishing Artefakte von Travis-CI. Ich empfehle, mit https://bintray.com/ mit entweder eine Organisationoder Ihrem persönlichen Konto (beide arbeiten, aber im Fall von github org, könnte es mehr Sinn machen, eine Organisation, die es entspricht, und veröffentlicht Artefakte aus, dass github org gehen, um es den passenden bintray org).
Der Grund für dieses ist, weil von dem, was bintray Angebote und Unterstützung für open-source-Projekte. Ich empfehle Ihnen, schauen Sie hier auf Ihre übersicht: http://www.jfrog.com/bintray/
Können Sie auch link zu JCenterdie macht, was Sie veröffentlichen viel einfacher für jemand anderes zu konsumieren/download/Nutzung (via maven, gradle, SBT, etc.).
Für Java + Maven:
Sobald Sie bintray setup (Ihr Konto erstellt oder eine org), Sie können leicht zu integrieren, es mit travis. Für java & maven-builds, die Sie verwenden können, travis-ci verschlüsselten Variablen option zum verschlüsseln der
${BINTRAY_USER}
und${BINTRAY_API_KEY}
. Dann können Sie einrichten maven bereitstellen, um push-releases in die bintray. In der maven -settings.xml
- Datei, müssen Sie nur Verweis auf die Umwelt-Variablen, die Sie verschlüsselt mit travis als user/pass, das heißt:Nächsten, Sie ' ll fügen Sie die
distributionManagement
Abschnitt Ihres Projektspom.xml
so etwas wie dieses:Dann richten Sie Ihre
.travis.yml
Datei zu "erkennen", wenn es eine Pressemitteilung. Ich habe die ersten Hälfte der maven release plugin:mvn release:prepare
(ignoriert die zweite Hälfte -- release:preform) von Ihrem lokalen dev-box. Dies wird ein tag, stoßen die version in der pom, etc, in Ihrem Namen. Was Sie am Ende mit ist ein tag mit einem version (nicht -SNAPSHOT) in github. Dieser tagged Begehen, macht sich auf den Weg flussabwärts nach travis, wo Ihre.travis.yml
konfigurieren Travis bauen & veröffentlichen.In Ihrem
.travis.yml
konfigurieren, testen, einTRAVIS_TAG
TRAVIS_PULL_REQUEST
und alle anderen Prüfungen Sie wollen vor aufrufenmvn deploy
. Tun Sie dies aufafter_success
. Auf diese Weise, travis baut alle der Zeit, aber läuft nurmvn deploy
wenn es ein tag und erfüllt die anderen Bedingungen, die Sie möchten (wie zum Beispiel ein JDK8 bauen). Hier ist ein Beispiel.travis.yml
:(Secure sind nur aus Beispiel, nachdem Sie verschlüsseln Sie Ihre bintray Benutzer und bintray api-key mit travis, Sie werden sehen, etwas ähnliches in Ihr yaml)
Diese bekommt Sie ein komplettes end-to-end-system für die Veröffentlichung von Artefakten "into the wild", wo jeder kann dann konsumieren und verwenden. Sie sind mit einem service, der entwickelt von Grund auf als ein Artefakt-repository (bintray), und Sie sind mit Travis in eine intelligente Art und Weise zu prüfen, für die tags, die maven release:prepare erzeugt. Alle zusammen, Sie entscheiden, Wann-releases (
mvn release:prepare
von Ihrem lokalen dev-box), und travis bekommt Sie bintray.Anderen
Beachten Sie, dass eine vorhandene travis-ci/dpl-pull-request in github um eine engere integration (travis Anbieter) zwischen Travis und bintray gebaut. Dies macht es viel einfacher, travis senden Artefakte auf bintray (releases; bintray war nicht beabsichtigt, halten Sie SNAPSHOTs verwenden, Artifactory für, anstatt). Obwohl github hat einige Unterstützung für die Versionen schreiben, ich glaube bintray überlegen zu sein in dieser Rolle, und das richtige Werkzeug zu verwenden.
Glück!
InformationsquelleAutor der Antwort Jack
Ich habe ein Beispiel Projekt auf https://github.com/vorburger/mvnDeployGitHubTravisCI aufzeigen, wie Sie dies tun (teilweise basierend auf Hosting ein Maven-repository auf github). Wie bereits erläutert, auf der verlinkten Antwort, die grundlegende Idee ist die Vorbereitung eines lokalen repository mit der maven-deploy-plugin ist altDeploymentRepositoryund verwenden Sie dann die github Website-maven-plugin zu schieben Ihre Artefakte auf GitHub. Verbinden Sie Travis zum GitHub-Authentifizierung wie oben erklärt.
InformationsquelleAutor der Antwort vorburger
TravisCI jetzt unterstützt die Versionen: https://docs.travis-ci.com/user/deployment/releases/
GitHub entfernt der Download-API, sondern ersetzt es mit releases: https://github.com/blog/1547-release-your-software
InformationsquelleAutor der Antwort Jan
Die integration der SBT-Travis-Sonatype besteht aus den folgenden Schritten:
Ich zusammen eine einfache Anleitung, wie Sie zu integrieren SBT mit Travis-CI und Sonatype, es ist verfügbar hier und enthält die notwendigen Schritte, von der Konfiguration der Projekt-plugins zur Verschlüsselung der Dateien und die Bereitstellung von Travis Konfiguration. Es basiert größtenteils auf John Duffel s Entwickler-blog kombiniert mit sbt-pgp-Referenz-docs.
InformationsquelleAutor der Antwort uralian