Невозможно опубликовать sh SBT многомодульный проект в частном репозитории GitHub без ошибок локально и из Actions - PullRequest
0 голосов
/ 14 февраля 2020

Я начал использовать плагин sbt-github-packages . В качестве первого шага я попытался настроить его для простого фиктивного проекта - он работал локально и в контексте действий GitHub. Затем я сделал то же самое для простого фиктивного многомодульного проекта - он работал локально и в контексте действий GitHub.

Проблема возникла, когда я попытался выполнить ту же настройку для производственного репо git, который содержит библиотека с некоторым общим кодом. Этот репо является частным и принадлежит организации. Моя учетная запись GitHub имеет полный доступ в пределах организации.

Этот проект имеет следующую структуру:

lazy val common = project
  .in(file("lib/common"))
  .settings(sdk.GlobalSettingsGroup)

lazy val `sdk-a` = project
  .in(file("lib/sdk-a"))
  .settings(sdk.GlobalSettingsGroup)
  .dependsOn(common)

lazy val `sdk-b` = project
  .in(file("lib/sdk-b"))
  .settings(sdk.GlobalSettingsGroup)
  .dependsOn(common)

...

lazy val `domain-api-a` = project
  .in(file("domain/domain-api-a"))
  .settings(sdk.GlobalSettingsGroup)
  .dependsOn(`sdk-a`)

lazy val `domain-api-b` = project
  .in(file("domain/domain-api-b"))
  .settings(sdk.GlobalSettingsGroup)
  .dependsOn(`sdk-a`, `sdk-b`)

lazy val domainApis: Seq[ProjectReference] = Seq(
  `domain-api-a`,
  `domain-api-b`,
  ...
)

lazy val libs: Seq[ProjectReference] = Seq(
  `common`,
  `sdk-a`,
  `sdk-b`,
  ...
)

lazy val all = domainApis ++ libs

lazy val root = project
  .in(file("."))
  .aggregate(all: _*)
  .settings(
    name := "foundation-backend"
  )
  .settings(sdk.GlobalSettingsGroup)

В общем, есть 19 подмодулей.

Здесь GlobalSettingsGroup :

val GlobalSettingsGroup: Seq[Setting[_]] = Seq(
      githubOwner := "private_org_name",
      githubRepository := "foundation-backend",
      credentials +=
        Credentials(
          "GitHub Package Registry",
          "maven.pkg.github.com",
          sys.env.get("GITHUB_ACTOR").getOrElse("N/A"),
          sys.env.getOrElse("GITHUB_TOKEN", "N/A")
        ),
  //scala version, organization, version etc are also here
)

Я добавил обе переменные env в .bash_profile:

export GITHUB_TOKEN=my_secret_token_for_github
export GITHUB_ACTOR="Fruzenshtein"

Когда я запускаю sbt publish локально, я вижу, как все пакеты появляются на странице пакетов Фонд-бэкэнд-репо. Но команда SBT заканчивается этими ошибками:

[error] javax.net.ssl.SSLProtocolException: Broken pipe (Write failed)
[error]         at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:126)
[error]         at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:321)
[error]         at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:264)
[error]         at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:259)
[error]         at java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:988)
[error]         at okio.Okio$1.write(Okio.java:78)
[error]         at okio.AsyncTimeout$1.write(AsyncTimeout.java:179)
[error]         at okio.RealBufferedSink.emitCompleteSegments(RealBufferedSink.java:171)
[error]         at okio.RealBufferedSink.write(RealBufferedSink.java:41)
[error]         at okhttp3.internal.http1.Http1Codec$FixedLengthSink.write(Http1Codec.java:286)
[error]         at okio.RealBufferedSink.emitCompleteSegments(RealBufferedSink.java:171)
[error]         at okio.RealBufferedSink.writeAll(RealBufferedSink.java:99)
[error]         at okhttp3.RequestBody$3.writeTo(RequestBody.java:118)
[error]         at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.java:62)
[error]         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
[error]         at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:45)
[error]         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
[error]         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
[error]         at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
[error]         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
[error]         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
[error]         at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
[error]         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
[error]         at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:120)
[error]         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
[error]         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
[error]         at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:185)

Когда я пытаюсь настроить ту же сборку в контексте действий GitHub, используя следующие шаги:

name: Scala CI

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 1.8
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Package JAR
        run: sbt publish
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GITHUB_ACTOR: ${{ github.actor }}

Я получаю эти ошибки, и нет пакеты, опубликованные в пакетах:

[error]   sdk-a / githubActor from sdk-a / credentials ((sbtghpackages.GitHubPackagesPlugin.authenticationSettings) GitHubPackagesPlugin.scala:54)
[error] 
[error]   sdk-b / githubActor from sdk-b / credentials ((sbtghpackages.GitHubPackagesPlugin.authenticationSettings) GitHubPackagesPlugin.scala:54)
[error] 
[error]   sdk-c / githubActor from sdk-c / credentials ((sbtghpackages.GitHubPackagesPlugin.authenticationSettings) GitHubPackagesPlugin.scala:54)
[error] 
[error]   domain-api-a / githubActor from domain-api-a / credentials ((sbtghpackages.GitHubPackagesPlugin.authenticationSettings) GitHubPackagesPlugin.scala:54)
[error] 
[error]   domain-api-b / githubActor from domain-api-b / credentials ((sbtghpackages.GitHubPackagesPlugin.authenticationSettings) GitHubPackagesPlugin.scala:54)
...

Я буду рад рассмотреть любые советы, поскольку я уже попробовал подход с:

githubTokenSource := TokenSource.Environment("GITHUB_TOKEN")
githubActor := sys.env.get("GITHUB_ACTOR").getOrElse("N/A")

вместо прямого плеча Credentials

...