Curl Github Dateiupload macht Datei unbrauchbar

little_skunk

Semiprofi
Thread Starter
Mitglied seit
17.08.2006
Beiträge
3.773
Hallo,

ich habe ein Problem bei dem ich den Wald vor lauter Bäumen nicht mehr sehe und hoffe von euch den richtigen Weg gezeigt zu bekommen.

Ich habe mir für Windows, OSX und Ubuntu 15.10 jeweils ein Script geschrieben, dass eine Anwendung compiliert und am Ende das Ergebnis als Release bei Github hochladen soll. Die Datei wir auch erfolgreich hochgeladen aber sie wird dabei unbrauchbar. Die Dateigröße ist bereits falsch. Wenn ich die Datei über das Webfrontend von Github hochlade, ist sie funktionsfähig. Irgendwas stimmt mit dem Upload nicht.

Code:
#!/bin/bash
curl -H "Content-Type: application/x-deb" \
     -H "Authorization: token $gh_token" \
     --data-binary "@$file" \
     https://uploads.github.com/repos/$owner/$repository/releases/$id/assets?name=$filename

https://developer.github.com/v3/repos/releases/#upload-a-release-asset

Linux und OSX haben bei mir curl in der Version 7.43.0. Windows läuft mit 7.45.0. Der curl Aufruf stammt vom Linux Script und soll ein Debian Installation Paket (.deb) hochladen. Bei OSX mit anderem Content-Type und Apple Disk Image (.dmg) habe ich das Problem ebenfalls. Windows mit einer exe Datei funktioniert dagegen.

Jetzt die große Frage. Was muss ich beim curl Aufruf anpassen damit die Datei korrekt hochgeladen wird?
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Vermutlich kennt Github den Content-Type application/x-deb nicht. Versuch's mal mit application/octet-stream.
 
Danke das werde ich heute Abend ausprobieren.

Wie gesagt ich sehe den Wald vor lauter Bäumen nicht mehr. Ich glaube ich habe die gleiche Datei mit application/x-deb unter Windows erfolgreich hochgeladen. Da bin ich mir aber nicht mehr so sicher. Das werde ich ebenfalls nochmal ausprobieren.

Edit: Wenn es noch weitere Vorschläge gibt immer her damit. Ich probier gleich alle Varianten durch.
 
Zuletzt bearbeitet:
Ich habe ein paar weitere Dateien hochgeladen und das Problem ist nicht der curl aufruf. Das habe ich nur fälschlicherweise angenommen weil das manuelle Hochladen funktioniert hat. Der Unterschied zwischen Script und manuellem Hochladen ist ein völlig anderer. Das Script starte ich mit sudo. Unter anderem wird dabei npm install und npm run release ausgeführt. Dabei wurde eine defekte Datei erstellt, die curl korrekt hochgeladen hat. Die Lösung ist daher das Script genau so zu lassen wie es ist und es nicht mit sudo zu starten.

Ich habe deinen Vorschlag trotzdem eingebaut da ich dadurch keinen unterschiedlichen Content-Type für Linux und OSX benötige. Ich kann für beide System das gleiche Script nutzen.
 
Alles klar. Webseiten mit einem curl aufzurufen, das als root o.ä. läuft, ist ohnehin überhaupt keine gute Idee, auch wenn die Webseite vertrauenswürdig ist.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh