From 3e1c574e9693e3bdc56a6da931fefc35b3aa3dcd Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 12 Sep 2024 13:40:37 +0800 Subject: [PATCH 01/11] . --- .github/workflows/run-tests.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index ed862f35a90..73bfa45f40d 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -11,9 +11,9 @@ name: Run Tests on: push: - branches: - - main - pull_request: +# branches: +# - main +# pull_request: workflow_dispatch: # cancel older runs of a pull request; From 8fb5a805e49a2bfe5fe5073f09096cb59ba8f66c Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 12 Sep 2024 13:53:13 +0800 Subject: [PATCH 02/11] . --- .github/workflows/publish-artifacts.yml | 4 ++-- .github/workflows/run-tests.yml | 6 +++--- ci/release-maven.sh | 3 --- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/publish-artifacts.yml b/.github/workflows/publish-artifacts.yml index 007647800df..112475d99a2 100644 --- a/.github/workflows/publish-artifacts.yml +++ b/.github/workflows/publish-artifacts.yml @@ -31,9 +31,9 @@ jobs: concurrency: publish-sonatype-${{ github.sha }} env: + SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} SONATYPE_PGP_SECRET: ${{ secrets.SONATYPE_PGP_SECRET }} - SONATYPE_USERNAME: ${{ secrets.SONATYPE_DEPLOY_USER }} - SONATYPE_PASSWORD: ${{ secrets.SONATYPE_DEPLOY_PASSWORD }} SONATYPE_PGP_PASSWORD: ${{ secrets.SONATYPE_PGP_PASSWORD }} LANG: "en_US.UTF-8" LC_MESSAGES: "en_US.UTF-8" diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 73bfa45f40d..ed862f35a90 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -11,9 +11,9 @@ name: Run Tests on: push: -# branches: -# - main -# pull_request: + branches: + - main + pull_request: workflow_dispatch: # cancel older runs of a pull request; diff --git a/ci/release-maven.sh b/ci/release-maven.sh index 09190175d37..7cb356d0b6f 100755 --- a/ci/release-maven.sh +++ b/ci/release-maven.sh @@ -14,10 +14,7 @@ rm gpg_key # Publish all artifacts ./mill -i \ mill.scalalib.PublishModule/publishAll \ - --sonatypeCreds $SONATYPE_USERNAME:$SONATYPE_PASSWORD \ --gpgArgs --passphrase=$SONATYPE_PGP_PASSWORD,--no-tty,--pinentry-mode,loopback,--batch,--yes,-a,-b \ --publishArtifacts __.publishArtifacts \ - --readTimeout 3600000 \ - --awaitTimeout 3600000 \ --release true \ --signed true From fb180c862dcef49ff198a7e2ca71ff1850656659 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 12 Sep 2024 13:55:46 +0800 Subject: [PATCH 03/11] . --- scalalib/src/mill/scalalib/PublishModule.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scalalib/src/mill/scalalib/PublishModule.scala b/scalalib/src/mill/scalalib/PublishModule.scala index 68db2ae529e..6af1dd4384f 100644 --- a/scalalib/src/mill/scalalib/PublishModule.scala +++ b/scalalib/src/mill/scalalib/PublishModule.scala @@ -240,7 +240,7 @@ trait PublishModule extends JavaModule { outer => // TODO: In mill 0.11, we may want to change to a String argument // which we can split at `,` symbols, as we do in `PublishModule.publishAll`. gpgArgs: Seq[String] = Seq.empty, - release: Boolean = false, + release: Boolean = true, readTimeout: Int = 60000, connectTimeout: Int = 5000, awaitTimeout: Int = 120 * 1000, From 5518480711c2f7eaaa9f82be4356389acd5c9d83 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 12 Sep 2024 14:03:58 +0800 Subject: [PATCH 04/11] . --- ci/release-maven.sh | 3 +-- main/src/mill/main/TokenReaders.scala | 2 +- .../src/mill/scalalib/PublishModule.scala | 20 +++++++++++-------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/ci/release-maven.sh b/ci/release-maven.sh index 7cb356d0b6f..2e269717648 100755 --- a/ci/release-maven.sh +++ b/ci/release-maven.sh @@ -16,5 +16,4 @@ rm gpg_key mill.scalalib.PublishModule/publishAll \ --gpgArgs --passphrase=$SONATYPE_PGP_PASSWORD,--no-tty,--pinentry-mode,loopback,--batch,--yes,-a,-b \ --publishArtifacts __.publishArtifacts \ - --release true \ - --signed true + --release true diff --git a/main/src/mill/main/TokenReaders.scala b/main/src/mill/main/TokenReaders.scala index a23584f2480..05ed2a595f0 100644 --- a/main/src/mill/main/TokenReaders.scala +++ b/main/src/mill/main/TokenReaders.scala @@ -9,7 +9,7 @@ import mill.resolve.SimpleTaskTokenReader case class Tasks[T](value: Seq[mill.define.NamedTask[T]]) object Tasks { - private[main] class TokenReader[T]() extends mainargs.TokensReader.Simple[Tasks[T]] { + private[mill] class TokenReader[T]() extends mainargs.TokensReader.Simple[Tasks[T]] { def shortName = "" def read(s: Seq[String]): Either[String, Tasks[T]] = { Resolve.Tasks.resolve( diff --git a/scalalib/src/mill/scalalib/PublishModule.scala b/scalalib/src/mill/scalalib/PublishModule.scala index 6af1dd4384f..8a8d8a0d959 100644 --- a/scalalib/src/mill/scalalib/PublishModule.scala +++ b/scalalib/src/mill/scalalib/PublishModule.scala @@ -3,6 +3,7 @@ package scalalib import mill.define.{Command, ExternalModule, Target, Task} import mill.api.{JarManifest, PathRef, Result} +import mill.main.Tasks import mill.scalalib.PublishModule.checkSonatypeCreds import mill.scalalib.publish.SonatypeHelpers.{ PASSWORD_ENV_VARIABLE_NAME, @@ -241,9 +242,9 @@ trait PublishModule extends JavaModule { outer => // which we can split at `,` symbols, as we do in `PublishModule.publishAll`. gpgArgs: Seq[String] = Seq.empty, release: Boolean = true, - readTimeout: Int = 60000, - connectTimeout: Int = 5000, - awaitTimeout: Int = 120 * 1000, + readTimeout: Int = 30 * 60 * 1000, + connectTimeout: Int = 30 * 60 * 1000, + awaitTimeout: Int = 30 * 60 * 1000, stagingRelease: Boolean = true ): define.Command[Unit] = T.command { val PublishModule.PublishData(artifactInfo, artifacts) = publishArtifacts() @@ -306,16 +307,19 @@ object PublishModule extends ExternalModule { * Add the default args to your args to keep them. */ def publishAll( - publishArtifacts: mill.main.Tasks[PublishModule.PublishData], + publishArtifacts: Tasks[PublishModule.PublishData] = + new Tasks.TokenReader[PublishModule.PublishData]() + .read(Seq("__.publishArtifacts")) + .getOrElse(sys.error("Unable to resolve __.publishArtifacts")), sonatypeCreds: String = "", signed: Boolean = true, gpgArgs: String = defaultGpgArgs.mkString(","), - release: Boolean = false, + release: Boolean = true, sonatypeUri: String = "https://oss.sonatype.org/service/local", sonatypeSnapshotUri: String = "https://oss.sonatype.org/content/repositories/snapshots", - readTimeout: Int = 10 * 60 * 1000, - connectTimeout: Int = 10 * 60 * 1000, - awaitTimeout: Int = 10 * 60 * 1000, + readTimeout: Int = 30 * 60 * 1000, + connectTimeout: Int = 30 * 60 * 1000, + awaitTimeout: Int = 30 * 60 * 1000, stagingRelease: Boolean = true ): Command[Unit] = T.command { val x: Seq[(Seq[(os.Path, String)], Artifact)] = T.sequence(publishArtifacts.value)().map { From 2de5e7d9a402cf23819165c198adfbccdb534b77 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 12 Sep 2024 14:35:49 +0800 Subject: [PATCH 05/11] . --- .github/workflows/publish-artifacts.yml | 8 ++-- ci/release-maven.sh | 16 +------ .../SonatypeCentralPublishModule.scala | 16 +++++-- .../src/mill/scalalib/PublishModule.scala | 46 +++++++++++++------ .../scalalib/publish/SonatypeHelpers.scala | 4 +- 5 files changed, 51 insertions(+), 39 deletions(-) diff --git a/.github/workflows/publish-artifacts.yml b/.github/workflows/publish-artifacts.yml index 112475d99a2..b73c665d62c 100644 --- a/.github/workflows/publish-artifacts.yml +++ b/.github/workflows/publish-artifacts.yml @@ -31,10 +31,10 @@ jobs: concurrency: publish-sonatype-${{ github.sha }} env: - SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} - SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} - SONATYPE_PGP_SECRET: ${{ secrets.SONATYPE_PGP_SECRET }} - SONATYPE_PGP_PASSWORD: ${{ secrets.SONATYPE_PGP_PASSWORD }} + MILL_SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + MILL_SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + MILL_PGP_SECRET_BASE64: ${{ secrets.SONATYPE_PGP_SECRET }} + MILL_PGP_PASSWORD: ${{ secrets.SONATYPE_PGP_PASSWORD }} LANG: "en_US.UTF-8" LC_MESSAGES: "en_US.UTF-8" LC_ALL: "en_US.UTF-8" diff --git a/ci/release-maven.sh b/ci/release-maven.sh index 2e269717648..3f0b2d1a41b 100755 --- a/ci/release-maven.sh +++ b/ci/release-maven.sh @@ -2,18 +2,6 @@ set -eu -echo $SONATYPE_PGP_SECRET | base64 --decode > gpg_key +./mill -i installLocal -gpg --import --no-tty --batch --yes gpg_key - -rm gpg_key - -# Build all artifacts -./mill -i __.publishArtifacts - -# Publish all artifacts -./mill -i \ - mill.scalalib.PublishModule/publishAll \ - --gpgArgs --passphrase=$SONATYPE_PGP_PASSWORD,--no-tty,--pinentry-mode,loopback,--batch,--yes,-a,-b \ - --publishArtifacts __.publishArtifacts \ - --release true +./target/mill-release -i mill.scalalib.PublishModule/publishAll \ No newline at end of file diff --git a/contrib/sonatypecentral/src/mill/contrib/sonatypecentral/SonatypeCentralPublishModule.scala b/contrib/sonatypecentral/src/mill/contrib/sonatypecentral/SonatypeCentralPublishModule.scala index 807100af3f4..7158c9bc87d 100644 --- a/contrib/sonatypecentral/src/mill/contrib/sonatypecentral/SonatypeCentralPublishModule.scala +++ b/contrib/sonatypecentral/src/mill/contrib/sonatypecentral/SonatypeCentralPublishModule.scala @@ -13,7 +13,7 @@ import mill.contrib.sonatypecentral.SonatypeCentralPublishModule.{ getPublishingTypeFromReleaseFlag, getSonatypeCredentials } -import mill.scalalib.PublishModule.{defaultGpgArgs, getFinalGpgArgs} +import mill.scalalib.PublishModule.defaultGpgArgs import mill.scalalib.publish.Artifact import mill.scalalib.publish.SonatypeHelpers.{ PASSWORD_ENV_VARIABLE_NAME, @@ -40,10 +40,13 @@ trait SonatypeCentralPublishModule extends PublishModule { val fileMapping = publishData.withConcretePath._1 val artifact = publishData.meta val finalCredentials = getSonatypeCredentials(username, password)() - + PublishModule.pgpImportSecretIfProvided(T.env) val publisher = new SonatypeCentralPublisher( credentials = finalCredentials, - gpgArgs = getFinalGpgArgs(sonatypeCentralGpgArgs()), + gpgArgs = sonatypeCentralGpgArgs() match { + case "" => PublishModule.defaultGpgArgsForPassphrase(T.env.get("PGP_PASSPHRASE")) + case gpgArgs => gpgArgs.split(",").toIndexedSeq + }, connectTimeout = sonatypeCentralConnectTimeout(), readTimeout = sonatypeCentralReadTimeout(), log = T.log, @@ -86,10 +89,13 @@ object SonatypeCentralPublishModule extends ExternalModule { val finalBundleName = if (bundleName.isEmpty) None else Some(bundleName) val finalCredentials = getSonatypeCredentials(username, password)() - + PublishModule.pgpImportSecretIfProvided(T.env) val publisher = new SonatypeCentralPublisher( credentials = finalCredentials, - gpgArgs = getFinalGpgArgs(gpgArgs), + gpgArgs = gpgArgs match { + case "" => PublishModule.defaultGpgArgsForPassphrase(T.env.get("PGP_PASSPHRASE")) + case gpgArgs => gpgArgs.split(",").toIndexedSeq + }, connectTimeout = connectTimeout, readTimeout = readTimeout, log = T.log, diff --git a/scalalib/src/mill/scalalib/PublishModule.scala b/scalalib/src/mill/scalalib/PublishModule.scala index 8a8d8a0d959..005ee43390e 100644 --- a/scalalib/src/mill/scalalib/PublishModule.scala +++ b/scalalib/src/mill/scalalib/PublishModule.scala @@ -221,7 +221,7 @@ trait PublishModule extends JavaModule { outer => /** * Publish all given artifacts to Sonatype. - * Uses environment variables SONATYPE_USERNAME and SONATYPE_PASSWORD as + * Uses environment variables MILL_SONATYPE_USERNAME and MILL_SONATYPE_PASSWORD as * credentials. * * @param sonatypeCreds Sonatype credentials in format username:password. @@ -248,12 +248,14 @@ trait PublishModule extends JavaModule { outer => stagingRelease: Boolean = true ): define.Command[Unit] = T.command { val PublishModule.PublishData(artifactInfo, artifacts) = publishArtifacts() + PublishModule.pgpImportSecretIfProvided(T.env) new SonatypePublisher( sonatypeUri, sonatypeSnapshotUri, checkSonatypeCreds(sonatypeCreds)(), signed, - if (gpgArgs.isEmpty) PublishModule.defaultGpgArgs else gpgArgs, + if (gpgArgs.isEmpty) PublishModule.defaultGpgArgsForPassphrase(T.env.get("PGP_PASSPHRASE")) + else gpgArgs, readTimeout, connectTimeout, T.log, @@ -279,7 +281,28 @@ trait PublishModule extends JavaModule { outer => } object PublishModule extends ExternalModule { - val defaultGpgArgs: Seq[String] = Seq("--batch", "--yes", "-a", "-b") + val defaultGpgArgs: Seq[String] = defaultGpgArgsForPassphrase(None) + def pgpImportSecretIfProvided(env: Map[String, String]): Unit = { + for (secret <- env.get("MILL_PGP_SECRET_BASE64")) { + os.call( + ("gpg", "--import", "--no-tty", "--batch", "--yes"), + stdin = java.util.Base64.getDecoder.decode(secret) + ) + } + } + + def defaultGpgArgsForPassphrase(passphrase: Option[String]): Seq[String] = { + passphrase.map("--passphrase=" + _).toSeq ++ + Seq( + "--no-tty", + "--pinentry-mode", + "loopback", + "--batch", + "--yes", + "-a", + "-b" + ) + } case class PublishData(meta: Artifact, payload: Seq[(PathRef, String)]) { @@ -313,7 +336,7 @@ object PublishModule extends ExternalModule { .getOrElse(sys.error("Unable to resolve __.publishArtifacts")), sonatypeCreds: String = "", signed: Boolean = true, - gpgArgs: String = defaultGpgArgs.mkString(","), + gpgArgs: String = "", release: Boolean = true, sonatypeUri: String = "https://oss.sonatype.org/service/local", sonatypeSnapshotUri: String = "https://oss.sonatype.org/content/repositories/snapshots", @@ -325,12 +348,16 @@ object PublishModule extends ExternalModule { val x: Seq[(Seq[(os.Path, String)], Artifact)] = T.sequence(publishArtifacts.value)().map { case PublishModule.PublishData(a, s) => (s.map { case (p, f) => (p.path, f) }, a) } + + pgpImportSecretIfProvided(T.env) + new SonatypePublisher( sonatypeUri, sonatypeSnapshotUri, checkSonatypeCreds(sonatypeCreds)(), signed, - getFinalGpgArgs(gpgArgs), + if (gpgArgs.isEmpty) defaultGpgArgsForPassphrase(T.env.get("MILL_PGP_PASSPHRASE")) + else gpgArgs.split(','), readTimeout, connectTimeout, T.log, @@ -344,15 +371,6 @@ object PublishModule extends ExternalModule { ) } - private[mill] def getFinalGpgArgs(initialGpgArgs: String): Seq[String] = { - val argsAsString = if (initialGpgArgs.isEmpty) { - defaultGpgArgs.mkString(",") - } else { - initialGpgArgs - } - argsAsString.split(",").toIndexedSeq - } - private def getSonatypeCredsFromEnv: Task[(String, String)] = T.task { (for { username <- T.env.get(USERNAME_ENV_VARIABLE_NAME) diff --git a/scalalib/src/mill/scalalib/publish/SonatypeHelpers.scala b/scalalib/src/mill/scalalib/publish/SonatypeHelpers.scala index 882e039022d..a5534b4340d 100644 --- a/scalalib/src/mill/scalalib/publish/SonatypeHelpers.scala +++ b/scalalib/src/mill/scalalib/publish/SonatypeHelpers.scala @@ -8,8 +8,8 @@ import java.security.MessageDigest object SonatypeHelpers { // http://central.sonatype.org/pages/working-with-pgp-signatures.html#signing-a-file - val USERNAME_ENV_VARIABLE_NAME = "SONATYPE_USERNAME" - val PASSWORD_ENV_VARIABLE_NAME = "SONATYPE_PASSWORD" + val USERNAME_ENV_VARIABLE_NAME = "MILL_SONATYPE_USERNAME" + val PASSWORD_ENV_VARIABLE_NAME = "MILL_SONATYPE_PASSWORD" private[mill] def getArtifactMappings( isSigned: Boolean, From 82e4168eac5cf80f7cf8915d947752dbae9bc2b9 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 12 Sep 2024 14:49:10 +0800 Subject: [PATCH 06/11] . --- .github/workflows/publish-artifacts.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-artifacts.yml b/.github/workflows/publish-artifacts.yml index b73c665d62c..7f1db0be4a7 100644 --- a/.github/workflows/publish-artifacts.yml +++ b/.github/workflows/publish-artifacts.yml @@ -34,7 +34,7 @@ jobs: MILL_SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} MILL_SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} MILL_PGP_SECRET_BASE64: ${{ secrets.SONATYPE_PGP_SECRET }} - MILL_PGP_PASSWORD: ${{ secrets.SONATYPE_PGP_PASSWORD }} + MILL_PGP_PASSPHRASE: ${{ secrets.SONATYPE_PGP_PASSWORD }} LANG: "en_US.UTF-8" LC_MESSAGES: "en_US.UTF-8" LC_ALL: "en_US.UTF-8" From 70a7e6d408ed459fafed8a20b045f22d5091f67d Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 12 Sep 2024 16:47:14 +0800 Subject: [PATCH 07/11] fix --- .../src/mill/scalalib/PublishModule.scala | 20 ++++++++++++++++--- .../src/mill/scalalib/publish/settings.scala | 11 +++++++++- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/scalalib/src/mill/scalalib/PublishModule.scala b/scalalib/src/mill/scalalib/PublishModule.scala index 005ee43390e..06b877f6c22 100644 --- a/scalalib/src/mill/scalalib/PublishModule.scala +++ b/scalalib/src/mill/scalalib/PublishModule.scala @@ -321,13 +321,26 @@ object PublishModule extends ExternalModule { * Uses environment variables SONATYPE_USERNAME and SONATYPE_PASSWORD as * credentials. * + * @param publishArtifacts what artifacts you want to publish. Defaults to `__.publishArtifacts` + * which selects all `PublishModule`s in your build * @param sonatypeCreds Sonatype credentials in format username:password. * If specified, environment variables will be ignored. * Note: consider using environment variables over this argument due * to security reasons. - * @param gpgArgs GPG arguments. Defaults to `--batch --yes -a -b`. + * @param signed + * @param gpgArgs GPG arguments. Defaults to `--passphrase=$MILL_PGP_PASSPHRASE,--no-tty,--pienty-mode,loopback,--batch,--yes,-a,-b`. * Specifying this will override/remove the defaults. * Add the default args to your args to keep them. + * @param release Whether to release the artifacts after staging them + * @param sonatypeUri Sonatype URI to use. Defaults to `oss.sonatype.org`, newer projects + * may need to set it to https://s01.oss.sonatype.org/service/local + * @param sonatypeSnapshotUri Sonatype snapshot URI to use. Defaults to `oss.sonatype.org`, newer projects + * may need to set it to https://s01.oss.sonatype.org/content/repositories/snapshots + * @param readTimeout How long to wait before timing out network reads + * @param connectTimeout How long to wait before timing out network connections + * @param awaitTimeout How long to wait before timing out on failed uploads + * @param stagingRelease + * @return */ def publishAll( publishArtifacts: Tasks[PublishModule.PublishData] = @@ -373,8 +386,9 @@ object PublishModule extends ExternalModule { private def getSonatypeCredsFromEnv: Task[(String, String)] = T.task { (for { - username <- T.env.get(USERNAME_ENV_VARIABLE_NAME) - password <- T.env.get(PASSWORD_ENV_VARIABLE_NAME) + // Allow legacy environment variables as well + username <- T.env.get(USERNAME_ENV_VARIABLE_NAME).orElse(T.env.get("SONATYPE_USERNAME")) + password <- T.env.get(PASSWORD_ENV_VARIABLE_NAME).orElse(T.env.get("SONATYPE_PASSWORD")) } yield { Result.Success((username, password)) }).getOrElse( diff --git a/scalalib/src/mill/scalalib/publish/settings.scala b/scalalib/src/mill/scalalib/publish/settings.scala index 6448f047e69..9a5771188b4 100644 --- a/scalalib/src/mill/scalalib/publish/settings.scala +++ b/scalalib/src/mill/scalalib/publish/settings.scala @@ -1,5 +1,6 @@ package mill.scalalib.publish +import mill.api.Result import mill.scalalib.Dep case class Artifact(group: String, id: String, version: String) { @@ -71,7 +72,15 @@ case class PomSettings( developers: Seq[Developer], @deprecated("Value will be ignored. Use PublishModule.pomPackageingType instead", "Mill 0.11.8") packaging: String = PackagingType.Jar -) +) { + if (licenses.isEmpty) { + sys.error("You must have a license set in your PomSettings or Sonatype will silently fail.") + } else if (developers.isEmpty) { + sys.error( + "You must have a at least one developer set in your PomSettings or Sonatype will silently fail." + ) + } +} object PackagingType { val Pom = "pom" From 07a5142a7551e0cb839362c465e23911eec7a21d Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 12 Sep 2024 16:56:33 +0800 Subject: [PATCH 08/11] revert hardcoded pom validation --- scalalib/src/mill/scalalib/publish/settings.scala | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/scalalib/src/mill/scalalib/publish/settings.scala b/scalalib/src/mill/scalalib/publish/settings.scala index 9a5771188b4..204199f933e 100644 --- a/scalalib/src/mill/scalalib/publish/settings.scala +++ b/scalalib/src/mill/scalalib/publish/settings.scala @@ -72,15 +72,7 @@ case class PomSettings( developers: Seq[Developer], @deprecated("Value will be ignored. Use PublishModule.pomPackageingType instead", "Mill 0.11.8") packaging: String = PackagingType.Jar -) { - if (licenses.isEmpty) { - sys.error("You must have a license set in your PomSettings or Sonatype will silently fail.") - } else if (developers.isEmpty) { - sys.error( - "You must have a at least one developer set in your PomSettings or Sonatype will silently fail." - ) - } -} +) object PackagingType { val Pom = "pom" From 135b47f1f41ae9179da8cf16dc11462d9ccfc522 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 12 Sep 2024 17:22:10 +0800 Subject: [PATCH 09/11] . --- scalalib/src/mill/scalalib/publish/settings.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/scalalib/src/mill/scalalib/publish/settings.scala b/scalalib/src/mill/scalalib/publish/settings.scala index 204199f933e..6448f047e69 100644 --- a/scalalib/src/mill/scalalib/publish/settings.scala +++ b/scalalib/src/mill/scalalib/publish/settings.scala @@ -1,6 +1,5 @@ package mill.scalalib.publish -import mill.api.Result import mill.scalalib.Dep case class Artifact(group: String, id: String, version: String) { From 7e8d1de0f823ba5a0ae6abd658a82894cd6010b0 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 12 Sep 2024 17:58:09 +0800 Subject: [PATCH 10/11] . --- scalalib/test/src/mill/scalalib/PublishModuleTests.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scalalib/test/src/mill/scalalib/PublishModuleTests.scala b/scalalib/test/src/mill/scalalib/PublishModuleTests.scala index 022fd252274..09531aae09f 100644 --- a/scalalib/test/src/mill/scalalib/PublishModuleTests.scala +++ b/scalalib/test/src/mill/scalalib/PublishModuleTests.scala @@ -163,7 +163,7 @@ object PublishModuleTests extends TestSuite { eval.apply(HelloWorldWithPublish.core.checkSonatypeCreds("")) assert( - msg.contains("Consider using SONATYPE_USERNAME/SONATYPE_PASSWORD environment variables") + msg.contains("Consider using MILL_SONATYPE_USERNAME/MILL_SONATYPE_PASSWORD environment variables") ) } } From c57001395860d8ea480bfb9e60a1e513a8b8f732 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 12 Sep 2024 18:37:57 +0800 Subject: [PATCH 11/11] . --- scalalib/test/src/mill/scalalib/PublishModuleTests.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scalalib/test/src/mill/scalalib/PublishModuleTests.scala b/scalalib/test/src/mill/scalalib/PublishModuleTests.scala index 09531aae09f..2e5e7ac3557 100644 --- a/scalalib/test/src/mill/scalalib/PublishModuleTests.scala +++ b/scalalib/test/src/mill/scalalib/PublishModuleTests.scala @@ -163,7 +163,9 @@ object PublishModuleTests extends TestSuite { eval.apply(HelloWorldWithPublish.core.checkSonatypeCreds("")) assert( - msg.contains("Consider using MILL_SONATYPE_USERNAME/MILL_SONATYPE_PASSWORD environment variables") + msg.contains( + "Consider using MILL_SONATYPE_USERNAME/MILL_SONATYPE_PASSWORD environment variables" + ) ) } }