Sbt-github-packages: لا يبدو أن حزم GitHub تدعم sbt (حتى الآن)

تم إنشاؤها على ١ أغسطس ٢٠١٩  ·  23تعليقات  ·  مصدر: djspiewak/sbt-github-packages

لا يبدو أن نموذج نشر Sbt يعمل مع حزم GitHub لأسباب غير واضحة تمامًا. يبدو أن هذه التغريدة تشير ضمنًا إلى أن هذه مشكلة معروفة ، أو على الأقل شيء غير متوقع تمامًا. بمجرد أن يضيف GitHub دعمًا لـ sbt ، أو على الأقل يتوقف عن كسره ، سنغلق هذه المشكلة ونقوم بإصدار مناسب للمكوِّن الإضافي العامل.

للسجل ، يبدو الخطأ كما يلي:

[info] [info] Set current project to sbt-github-packages-tests-publish (in build file:/private/var/folders/vm/h_lhw5wn573cw70qd6l0ljt80000gn/T/sbt_78381fbc/publish/)
[info] [info] Packaging /private/var/folders/vm/h_lhw5wn573cw70qd6l0ljt80000gn/T/sbt_78381fbc/publish/target/scala-2.12/sbt-github-packages-tests-publish_2.12-0.1-SNAPSHOT-sources.jar ...
[info] [info] Updating ...
[info] [info] Done packaging.
[info] [info] Wrote /private/var/folders/vm/h_lhw5wn573cw70qd6l0ljt80000gn/T/sbt_78381fbc/publish/target/scala-2.12/sbt-github-packages-tests-publish_2.12-0.1-SNAPSHOT.pom
[info] [info] Done updating.
[info] [info] Packaging /private/var/folders/vm/h_lhw5wn573cw70qd6l0ljt80000gn/T/sbt_78381fbc/publish/target/scala-2.12/sbt-github-packages-tests-publish_2.12-0.1-SNAPSHOT-javadoc.jar ...
[info] [info] Done packaging.
[info] [info] Packaging /private/var/folders/vm/h_lhw5wn573cw70qd6l0ljt80000gn/T/sbt_78381fbc/publish/target/scala-2.12/sbt-github-packages-tests-publish_2.12-0.1-SNAPSHOT.jar ...
[info] [info] Done packaging.
[info] [info]   published sbt-github-packages-tests-publish_2.12 to https://maven.pkg.github.com/djspiewak/sbt-github-packages/com/codecommit/sbt-github-packages-tests-publish_2.12/0.1-SNAPSHOT/sbt-github-packages-tests-publish_2.12-0.1-SNAPSHOT.pom
[info] [error] java.io.IOException: Access to URL https://maven.pkg.github.com/djspiewak/sbt-github-packages/com/codecommit/sbt-github-packages-tests-publish_2.12/0.1-SNAPSHOT/sbt-github-packages-tests-publish_2.12-0.1-SNAPSHOT.jar was refused by the server: Forbidden
[info] [error]  at org.apache.ivy.util.url.AbstractURLHandler.validatePutStatusCode(AbstractURLHandler.java:79)
[info] [error]  at sbt.internal.librarymanagement.ivyint.GigahorseUrlHandler.upload(GigahorseUrlHandler.scala:191)
[info] [error]  at org.apache.ivy.util.url.URLHandlerDispatcher.upload(URLHandlerDispatcher.java:82)
[info] [error]  at org.apache.ivy.util.FileUtil.copy(FileUtil.java:150)
[info] [error]  at org.apache.ivy.plugins.repository.url.URLRepository.put(URLRepository.java:84)
[info] [error]  at sbt.internal.librarymanagement.ConvertResolver$LocalIfFileRepo.put(ConvertResolver.scala:366)
[info] [error]  at org.apache.ivy.plugins.repository.AbstractRepository.put(AbstractRepository.java:130)
[info] [error]  at sbt.internal.librarymanagement.ConvertResolver$ChecksumFriendlyURLResolver.put(ConvertResolver.scala:118)
[info] [error]  at sbt.internal.librarymanagement.ConvertResolver$ChecksumFriendlyURLResolver.put$(ConvertResolver.scala:105)
[info] [error]  at sbt.internal.librarymanagement.ConvertResolver$$anonfun$defaultConvert$lzycompute$1$PluginCapableResolver$1.put(ConvertResolver.scala:165)
[info] [error]  at org.apache.ivy.plugins.resolver.RepositoryResolver.publish(RepositoryResolver.java:216)
[info] [error]  at sbt.internal.librarymanagement.IvyActions$.$anonfun$publish$5(IvyActions.scala:497)
[info] [error]  at sbt.internal.librarymanagement.IvyActions$.$anonfun$publish$5$adapted(IvyActions.scala:496)
[info] [error]  at scala.collection.TraversableLike$WithFilter.$anonfun$foreach$1(TraversableLike.scala:788)
[info] [error]  at scala.collection.Iterator.foreach(Iterator.scala:937)
[info] [error]  at scala.collection.Iterator.foreach$(Iterator.scala:937)
[info] [error]  at scala.collection.AbstractIterator.foreach(Iterator.scala:1425)
[info] [error]  at scala.collection.IterableLike.foreach(IterableLike.scala:70)
[info] [error]  at scala.collection.IterableLike.foreach$(IterableLike.scala:69)
[info] [error]  at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
[info] [error]  at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:787)
[info] [error]  at sbt.internal.librarymanagement.IvyActions$.publish(IvyActions.scala:496)
[info] [error]  at sbt.internal.librarymanagement.IvyActions$.$anonfun$publish$3(IvyActions.scala:144)
[info] [error]  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[info] [error]  at sbt.internal.librarymanagement.IvyActions$.withChecksums(IvyActions.scala:157)
[info] [error]  at sbt.internal.librarymanagement.IvyActions$.withChecksums(IvyActions.scala:151)
[info] [error]  at sbt.internal.librarymanagement.IvyActions$.$anonfun$publish$1(IvyActions.scala:144)
[info] [error]  at sbt.internal.librarymanagement.IvyActions$.$anonfun$publish$1$adapted(IvyActions.scala:134)
[info] [error]  at sbt.internal.librarymanagement.IvySbt$Module.$anonfun$withModule$1(Ivy.scala:239)
[info] [error]  at sbt.internal.librarymanagement.IvySbt.$anonfun$withIvy$1(Ivy.scala:204)
[info] [error]  at sbt.internal.librarymanagement.IvySbt.sbt$internal$librarymanagement$IvySbt$$action$1(Ivy.scala:70)
[info] [error]  at sbt.internal.librarymanagement.IvySbt$$anon$3.call(Ivy.scala:77)
[info] [error]  at xsbt.boot.Locks$GlobalLock.withChannel$1(Locks.scala:95)
[info] [error]  at xsbt.boot.Locks$GlobalLock.xsbt$boot$Locks$GlobalLock$$withChannelRetries$1(Locks.scala:80)
[info] [error]  at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock$1.apply(Locks.scala:99)
[info] [error]  at xsbt.boot.Using$.withResource(Using.scala:10)
[info] [error]  at xsbt.boot.Using$.apply(Using.scala:9)
[info] [error]  at xsbt.boot.Locks$GlobalLock.ignoringDeadlockAvoided(Locks.scala:60)
[info] [error]  at xsbt.boot.Locks$GlobalLock.withLock(Locks.scala:50)
[info] [error]  at xsbt.boot.Locks$.apply0(Locks.scala:31)
[info] [error]  at xsbt.boot.Locks$.apply(Locks.scala:28)
[info] [error]  at sbt.internal.librarymanagement.IvySbt.withDefaultLogger(Ivy.scala:77)
[info] [error]  at sbt.internal.librarymanagement.IvySbt.withIvy(Ivy.scala:199)
[info] [error]  at sbt.internal.librarymanagement.IvySbt.withIvy(Ivy.scala:196)
[info] [error]  at sbt.internal.librarymanagement.IvySbt$Module.withModule(Ivy.scala:238)
[info] [error]  at sbt.internal.librarymanagement.IvyActions$.publish(IvyActions.scala:134)
[info] [error]  at sbt.Classpaths$.$anonfun$publishTask$4(Defaults.scala:2416)
[info] [error]  at sbt.Classpaths$.$anonfun$publishTask$4$adapted(Defaults.scala:2416)
[info] [error]  at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[info] [error]  at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:40)
[info] [error]  at sbt.std.Transform$$anon$4.work(System.scala:67)
[info] [error]  at sbt.Execute.$anonfun$submit$2(Execute.scala:269)
[info] [error]  at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[info] [error]  at sbt.Execute.work(Execute.scala:278)
[info] [error]  at sbt.Execute.$anonfun$submit$1(Execute.scala:269)
[info] [error]  at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[info] [error]  at sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[info] [error]  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[info] [error]  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[info] [error]  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[info] [error]  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[info] [error]  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[info] [error]  at java.lang.Thread.run(Thread.java:748)

إذا نظرت إلى الأعلى ، فسترى أن pom تم نشره بنجاح ، ولكن تم رفض ملف jar الأول Forbidden . أبلغ alexarchambault أن ترتيب النشر غير ذي صلة ، وأن الجرار مرفوضة بغض النظر.

bug

التعليق الأكثر فائدة

يبدو أن Github قد غير بعض الأشياء ، وكان قادرًا على تحميل كامل اليوم. (الفانيليا سبت 1.3.3)

[info]  published test_2.13 to https://maven.pkg.github.com/francisdb/foo/com/example/test_2.13/0.0.9/test_2.13-0.0.9.pom
[info]  published test_2.13 to https://maven.pkg.github.com/francisdb/foo/com/example/test_2.13/0.0.9/test_2.13-0.0.9.jar
[info]  published test_2.13 to https://maven.pkg.github.com/francisdb/foo/com/example/test_2.13/0.0.9/test_2.13-0.0.9-sources.jar
[info]  published test_2.13 to https://maven.pkg.github.com/francisdb/foo/com/example/test_2.13/0.0.9/test_2.13-0.0.9-javadoc.jar

لا تزال واجهة مستخدم الويب مشوشة بشأن اللاحقة sbt

<dependency>
  <groupId>com.example.test_2</groupId>
  <artifactId>13</artifactId>
  <version>0.0.9</version>
</dependency> 

ال 23 كومينتر

بقدر ما أستطيع أن أقول ، -sources ، -javadoc ، -الاختبارات غير مدعومة

باستخدام sbt-aether-publish ، لقد نجحت في النشر إلى حزم github من sbt

مشروع / plugins.sbt

addSbtPlugin("no.arktekk.sbt" % "aether-deploy" % "0.23.0")
addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.0.0")

build.sbt

externalResolvers += "GitHub lokkju Apache Maven Packages" at "https://maven.pkg.github.com/lokkju/github-action-sbt"
publishTo := Some("GitHub lokkju Apache Maven Packages" at "https://maven.pkg.github.com/lokkju/github-action-sbt")
credentials += Credentials("GitHub Package Registry", "maven.pkg.github.com", "lokkju", "<GITHUB_TOKEN>")

// GitHub package repo isn't supporting javadoc and sources
publishArtifact in (Compile, packageDoc) := false
publishArtifact in (Compile, packageSrc) := false

sbt aetherDeploy

جانب إضافي ؛ إذا استخدمت وكيل Charles Web Debugging Proxy ، فكل شيء يعمل بشكل جيد. بدونها ، أحصل أحيانًا على أخطاء حول فشل الخادم في الاستجابة.

lokkju هم ، ماذا عن يبني متعدد الوحدات؟

لم أجربهم. key هنا يبدو أنه يستخدم aether-publish ، على الرغم من أنه لا يصلحها بالكامل. أظن أنها مشكلة في دعم SSL في إصدارات العميل التي تستخدمها كل أداة.

سأحاول بعض مكتبات java http المختلفة ، وأرى ما إذا كان بإمكاني استبدال تكوين بسيط يعمل ولا يعمل. سأعلمك بما يستجد.

لذلك ، بعد المزيد من الاستكشاف ، وجدت بعض الأعراض المثيرة للاهتمام.

فقط باستخدام curl لمحاولة تحميل الحزم ، وجدت ؛

  • يتم التعامل مع الملف الأول الذي وضعته PUT باعتباره العنصر الرئيسي ، بغض النظر عن اسم الملف أو الامتداد
  • يمكنك بعد ذلك تحميل العديد من ملفات POM (الصالحة) كما تريد ، طالما أنها تحتوي على أسماء فريدة
  • لا يمكنك تحميل أي ملفات أخرى غير POM
  • يتم تحليل الملفات ذات امتدادات ملفات JAR و POM بواسطة github ، وستقوم التنسيقات غير الصالحة بالإبلاغ عن خطأ كرسالة خطأ HTTP 4xx الذي تم إرجاعه.

تتمثل المهمة الرئيسية حاليًا في أنه يجب عليك تحميل عنصر JAR أولاً ، ثم نشر دليل عمليات النشر.

لدي بريد إلكتروني للدعم ، سنرى ما إذا كانوا يقدمون المزيد من المعلومات.

حسنًا ، لم يتم التوقيع على الأداة أيضًا ، إذن؟

يقوم تلقائيًا بإنشاء * .md5 و * .sha1 لأي ​​ملفات تم تحميلها.

وجد هذا أيضًا: https://github.com/sbt/librarymanagement/blob/d09f9f81b664baaac15054730fbcb51e1b240de2/ivy/src/main/scala/sbt/internal/librarymanagement/IvyActions.scala#L123

Artifactory deals with the publishing (and republishing) of SNAPSHOTs using a strict rule on the order of publishing. The ;build.timestamp=... suffix is the alternative.

The strict rule is:

publish the main artefact (which has no classifier)
publish the POM/ivy.xml file
publish additional artefacts which have a classifier

يبدو أنه لا يمكنني نشر المصنفات على الإطلاق حتى الآن ، وهو أمر مزعج وجزء مما لدي سؤال في github.

من المحتمل أن أقوم بإنشاء مشروع مخضرم / جافا خالص ومعرفة ما إذا كان يعمل بعد ذلك

فقط حاولت نشر لقطة باستخدام النشر الافتراضي وحصلت على هذا:

[error] stack trace is suppressed; run last publish for the full output
[error] (publish) java.io.IOException: PUT operation to URL https://maven.pkg.github.com/company/foo/bar/utils/3.24.0-SNAPSHOT/utils-3.24.0-SNAPSHOT.pom failed with status code 400: Bad Request

لا يوجد ذكر للقطات في المستندات

في الواقع لدي نفس الشيء بالنسبة للحزم العادية:

java.io.IOException: PUT operation to URL https://maven.pkg.github.com/company/foo/bar/utils/utils/0.0.1/utils-0.0.1.pom failed with status code 400: Bad Request
[error] java.io.IOException: PUT operation to URL https://maven.pkg.github.com/company/foo/bar/utils/utils/0.0.1/utils-0.0.1.pom failed with status code 400: Bad Request
[error]     at org.apache.ivy.util.url.AbstractURLHandler.validatePutStatusCode(AbstractURLHandler.java:82)
[error]     at org.apache.ivy.util.url.BasicURLHandler.upload(BasicURLHandler.java:264)
[error]     at org.apache.ivy.util.url.URLHandlerDispatcher.upload(URLHandlerDispatcher.java:82)
[error]     at org.apache.ivy.util.FileUtil.copy(FileUtil.java:150)

أتساءل كيف يبدو جسد 400

هل هناك أي تحديثات على هذا؟

لا توجد تحديثات بعد! تجاربlokkju هي الأحدث على ما أعتقد. أريد أن أتلاعب به أكثر ، لكن بصراحة يبدو أن حزم GitHub لا تزال لا تدعم استضافة الملفات التي تعد جزءًا لا يتجزأ من Maven القياسي القابل للتوزيع (مثل التوقيعات والوثائق والمصنفات). من الصعب القيام بأي شيء عملي معها كمضيف الأداة حتى يتم تصحيح هذه العيوب.

بعض المعلومات الإضافية ، الاختبار باستخدام عادي sbt 1.3.2 (بدون مكونات إضافية)

تحتاج إلى النشر في مستودع مشروعك:

publishTo := Some("GitHub Package Registry" at "https://maven.pkg.github.com/[username]/[project]")

يجب تعريف المصداقية على هذا النحو

credentials += Credentials("GitHub Package Registry","maven.pkg.github.com","[username]","[token]")

يحتاج رمزك المميز إلى النطاقات التالية: read:packages ، repo و write:packages

ولكن بمجرد النشر ، ينتهي بك الأمر بإحداثيات الحزم المقترحة هذه (حيث المؤسسة = "io.test" والاسم = "اختبار"):

<dependency>
  <groupId>com.github.[username]/[project]</groupId>
  <artifactId>io.test.test_2.13</artifactId>
  <version>0.1</version>
</dependency> 

يمكن تحميل اللقطات ولكن من المحتمل ألا يكون لها معالجة خاصة حيث لا يمكنك تحميلها مرتين

تحميل بوم يعمل ، لكن البقية تفشل:

تم نشر [info] test_2.13 إلى https://maven.pkg.github.com/ [username] / [project] /io/test/test_2.13/0.0.3/test_2.13-0.0.3.pom
[خطأ] java.io.IOException: الوصول إلى URL https://maven.pkg.github.com/ [اسم المستخدم] / [مشروع] /io/test/test_2.13/0.0.3/test_2.13-0.0. تم رفض 3.jar من قبل الخادم: استجابة محظورة = خطأ: تم نشر "test_2.13-0.0.3.jar" في الإصدار 0.0.3 من "io.test.test_2.13" بالفعل.

فشل تحميل francisdb JAR لأن SBT يقوم بتحميل الملفات خارج الترتيب ؛ مما أتذكره ، إنه خطأ طويل الأمد في SBT (IvyActions.scala) حيث تستخدم وظيفة النشر نوع خريطة بدلاً من نوع seq. مع الانتقال إلى نظام إدارة التبعية Coursier ، يمكن أن يحل هذا الأمر ذاتيًا.

اقتراحي هو تجاوز عملية التحميل نفسها داخل هذا المكون الإضافي ، مع التأكد من تحميل pom أولاً. بالطبع ، هذا لا يزال غير مفيد مع المصنفات ، والتي أحتاج إلى دعم لها.

يبدو أنه على sbt 1.3.2 لا يتم استخدام Coursier لتحميل القطع الأثرية ، فقط للتنزيل

أيضًا ، لم أتلق أي رد من GitHub بشأن هذه المشكلة

طلب السحب: # 2

يتم استخدام Coursier بشكل افتراضي فقط بدءًا من sbt 1.3.0

كان اختباري 1.3.2

تضمين التغريدة

يبدو أن Github قد غير بعض الأشياء ، وكان قادرًا على تحميل كامل اليوم. (الفانيليا سبت 1.3.3)

[info]  published test_2.13 to https://maven.pkg.github.com/francisdb/foo/com/example/test_2.13/0.0.9/test_2.13-0.0.9.pom
[info]  published test_2.13 to https://maven.pkg.github.com/francisdb/foo/com/example/test_2.13/0.0.9/test_2.13-0.0.9.jar
[info]  published test_2.13 to https://maven.pkg.github.com/francisdb/foo/com/example/test_2.13/0.0.9/test_2.13-0.0.9-sources.jar
[info]  published test_2.13 to https://maven.pkg.github.com/francisdb/foo/com/example/test_2.13/0.0.9/test_2.13-0.0.9-javadoc.jar

لا تزال واجهة مستخدم الويب مشوشة بشأن اللاحقة sbt

<dependency>
  <groupId>com.example.test_2</groupId>
  <artifactId>13</artifactId>
  <version>0.0.9</version>
</dependency> 

هذا محمس! سأقوم ببعض الاختبارات اليوم وأرى ما إذا كان بإمكاني إغلاق ذلك. مثير للغاية.

يمكنني أن أؤكد أنه ، مع بعض التعديلات على المكون الإضافي لاستخدام النتائج التجريبية francisdb ، تعمل الأشياء الآن! لا يبدو أن مشكلات webui مع لواحق البناء المشترك تؤثر على الدقة الفعلية ، فقط واجهة المستخدم. لذا فإن النشر والقرار يعملان الآن مع المكون الإضافي. لم أختبر الأشياء بعد مع مستودع خاص ؛ أعتقد أنهم لم يعملوا بعد ، لكن الأمور جيدة بما يكفي لأنني نشرت 0.1.0 .

شكرًا لكم جميعًا على عملكم الشاق وتجريبكم! البرنامج المساعد تافه بشكل ملحوظ بفضل لكم جميعًا.

تضمين التغريدة

يمكن تحميل اللقطات ولكن من المحتمل ألا يكون لها معالجة خاصة حيث لا يمكنك تحميلها مرتين

يمكنك تحميلها مرتين: يمكنك حذف لقطة في واجهة مستخدم GitHub ثم تحميل لقطة جديدة مرة أخرى (بمعنى إصدار اللقطة نفسها). هذا عمل لي. مرهقة بعض الشيء ، لكنها تعمل.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات