From 0cd8acb3e1e3fbd1b73aa8ea74bd2aabe61a0232 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 22 Jun 2022 03:49:15 +0000 Subject: [PATCH 01/14] Try publishing a site artifact --- .github/workflows/ci.yml | 8 ++++---- build.sbt | 1 + .../scala/org/typelevel/sbt/TypelevelSitePlugin.scala | 6 +++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c783bbf8..998af7db 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -89,15 +89,15 @@ jobs: run: sbt 'project ${{ matrix.project }}' '++${{ matrix.scala }}' doc - name: Make target directories - if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/series/0.4') + if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/series/0.4' || github.ref == 'refs/heads/feature/site-artifact') run: mkdir -p github/target github-actions/target kernel/target versioning/target ci-release/target scalafix/target target .js/target mdocs/target site/target ci-signing/target mergify/target unidoc/target mima/target .jvm/target .native/target no-publish/target sonatype/target ci/target sonatype-ci-release/target core/target settings/target project/target - name: Compress target directories - if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/series/0.4') + if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/series/0.4' || github.ref == 'refs/heads/feature/site-artifact') run: tar cf targets.tar github/target github-actions/target kernel/target versioning/target ci-release/target scalafix/target target .js/target mdocs/target site/target ci-signing/target mergify/target unidoc/target mima/target .jvm/target .native/target no-publish/target sonatype/target ci/target sonatype-ci-release/target core/target settings/target project/target - name: Upload target directories - if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/series/0.4') + if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/series/0.4' || github.ref == 'refs/heads/feature/site-artifact') uses: actions/upload-artifact@v2 with: name: target-${{ matrix.os }}-${{ matrix.java }}-${{ matrix.scala }}-${{ matrix.project }} @@ -106,7 +106,7 @@ jobs: publish: name: Publish Artifacts needs: [build] - if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/series/0.4') + if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/series/0.4' || github.ref == 'refs/heads/feature/site-artifact') strategy: matrix: os: [ubuntu-latest] diff --git a/build.sbt b/build.sbt index 38407346..3bc96394 100644 --- a/build.sbt +++ b/build.sbt @@ -2,6 +2,7 @@ name := "sbt-typelevel" ThisBuild / tlBaseVersion := "0.4" ThisBuild / tlCiReleaseBranches := Seq("series/0.4") +ThisBuild / tlCiReleaseBranches += "feature/site-artifact" ThisBuild / tlSitePublishBranch := Some("series/0.4") ThisBuild / crossScalaVersions := Seq("2.12.16") ThisBuild / developers := List( diff --git a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala index d3d8558a..e3c9e9aa 100644 --- a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala +++ b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala @@ -77,7 +77,7 @@ object TypelevelSitePlugin extends AutoPlugin { import TypelevelGitHubPlugin._ override def requires = - MdocPlugin && LaikaPlugin && TypelevelGitHubPlugin && GenerativePlugin && NoPublishPlugin + MdocPlugin && LaikaPlugin && TypelevelGitHubPlugin && GenerativePlugin override def globalSettings = Seq( tlSiteApiModule := None @@ -108,6 +108,10 @@ object TypelevelSitePlugin extends AutoPlugin { tlSitePreview := previewTask.value, Laika / sourceDirectories := Seq(mdocOut.value), laikaTheme := tlSiteHeliumConfig.value.build.extend(tlSiteHeliumExtensions.value), + Compile / packageDoc / mappings := { + tlSite.value + (laikaSite / mappings).value + }, mdocVariables := { mdocVariables.value ++ Map( From 0f16f4804c4dc00bf16cd2498290b80aa73fc7d8 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 22 Jun 2022 03:56:16 +0000 Subject: [PATCH 02/14] nowarn --- site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala index e3c9e9aa..fff97116 100644 --- a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala +++ b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala @@ -109,7 +109,7 @@ object TypelevelSitePlugin extends AutoPlugin { Laika / sourceDirectories := Seq(mdocOut.value), laikaTheme := tlSiteHeliumConfig.value.build.extend(tlSiteHeliumExtensions.value), Compile / packageDoc / mappings := { - tlSite.value + tlSite.value: @nowarn("cat=other-pure-statement") (laikaSite / mappings).value }, mdocVariables := { From 174529e6a0b81b078ba55be9c758f04ea95d28e2 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 22 Jun 2022 04:02:52 +0000 Subject: [PATCH 03/14] hackity mima hack --- site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala index fff97116..506b15e4 100644 --- a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala +++ b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala @@ -112,6 +112,7 @@ object TypelevelSitePlugin extends AutoPlugin { tlSite.value: @nowarn("cat=other-pure-statement") (laikaSite / mappings).value }, + SettingKey[Set[Nothing]]("mimaPreviousArtifacts") := Set.empty, mdocVariables := { mdocVariables.value ++ Map( From 5514564fc7fccd136c5bd8068331c4ef9abde894 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 22 Jun 2022 04:10:33 +0000 Subject: [PATCH 04/14] hack take 2 --- site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala index 506b15e4..2b66c6f9 100644 --- a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala +++ b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala @@ -112,7 +112,7 @@ object TypelevelSitePlugin extends AutoPlugin { tlSite.value: @nowarn("cat=other-pure-statement") (laikaSite / mappings).value }, - SettingKey[Set[Nothing]]("mimaPreviousArtifacts") := Set.empty, + SettingKey[Set[ModuleID]]("mimaPreviousArtifacts") := Set.empty, mdocVariables := { mdocVariables.value ++ Map( From e759c358018a3dcae3d50c92b9c4f07cbb8fcbad Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 22 Jun 2022 04:25:00 +0000 Subject: [PATCH 05/14] Ugh sbt --- site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala index 2b66c6f9..e28394e6 100644 --- a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala +++ b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala @@ -109,7 +109,7 @@ object TypelevelSitePlugin extends AutoPlugin { Laika / sourceDirectories := Seq(mdocOut.value), laikaTheme := tlSiteHeliumConfig.value.build.extend(tlSiteHeliumExtensions.value), Compile / packageDoc / mappings := { - tlSite.value: @nowarn("cat=other-pure-statement") + val _ = tlSite.valueit (laikaSite / mappings).value }, SettingKey[Set[ModuleID]]("mimaPreviousArtifacts") := Set.empty, From 13b35b00d620ae99cd044e1b35f22f6a0c4c45ac Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 22 Jun 2022 04:34:51 +0000 Subject: [PATCH 06/14] wut --- site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala index e28394e6..a2f3cae1 100644 --- a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala +++ b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala @@ -109,7 +109,7 @@ object TypelevelSitePlugin extends AutoPlugin { Laika / sourceDirectories := Seq(mdocOut.value), laikaTheme := tlSiteHeliumConfig.value.build.extend(tlSiteHeliumExtensions.value), Compile / packageDoc / mappings := { - val _ = tlSite.valueit + val _ = tlSite.value (laikaSite / mappings).value }, SettingKey[Set[ModuleID]]("mimaPreviousArtifacts") := Set.empty, From 2b0dad263c4d0649e8bcaedc7dd13159d858d731 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 22 Jun 2022 05:19:13 +0000 Subject: [PATCH 07/14] Fixing --- .../src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala index a2f3cae1..32ed3f4f 100644 --- a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala +++ b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala @@ -109,8 +109,7 @@ object TypelevelSitePlugin extends AutoPlugin { Laika / sourceDirectories := Seq(mdocOut.value), laikaTheme := tlSiteHeliumConfig.value.build.extend(tlSiteHeliumExtensions.value), Compile / packageDoc / mappings := { - val _ = tlSite.value - (laikaSite / mappings).value + (laikaSite / mappings).dependsOn(tlSite).value }, SettingKey[Set[ModuleID]]("mimaPreviousArtifacts") := Set.empty, mdocVariables := { From fb939cad0ce556b85bb6b2630d61ca8b6e029c02 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 22 Jun 2022 05:28:56 +0000 Subject: [PATCH 08/14] Set module name for site --- build.sbt | 1 + 1 file changed, 1 insertion(+) diff --git a/build.sbt b/build.sbt index 3bc96394..34882b58 100644 --- a/build.sbt +++ b/build.sbt @@ -189,6 +189,7 @@ lazy val docs = project .in(file("mdocs")) .enablePlugins(TypelevelSitePlugin) .settings( + name := "sbt-typelevel-website", laikaConfig ~= { _.withRawContent }, tlSiteApiPackage := Some("org.typelevel.sbt"), tlSiteRelatedProjects := Seq( From 0a0fdf1c2dc2885fafe3232cd0afc57f3c2e6481 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Fri, 30 Jun 2023 00:38:25 +0000 Subject: [PATCH 09/14] Try to setup site artifact upload/download dance --- .github/workflows/ci.yml | 55 +++++++++++- .mergify.yml | 8 ++ build.sbt | 33 ++++--- .../sbt/TypelevelCiSigningPlugin.scala | 11 ++- .../typelevel/sbt/gha/GenerativeKeys.scala | 4 + .../typelevel/sbt/gha/GenerativePlugin.scala | 87 ++++++++----------- .../org/typelevel/sbt/gha/WorkflowStep.scala | 35 ++++++++ project/build.sbt | 1 + .../sbt/TypelevelSiteCiReleasePlugin.scala | 52 +++++++++++ .../TypelevelSonatypeCiReleasePlugin.scala | 7 +- 10 files changed, 219 insertions(+), 74 deletions(-) create mode 100644 site-ci-release/src/main/scala/org/typelevel/sbt/TypelevelSiteCiReleasePlugin.scala diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 04c41230..8a08cf9c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -205,23 +205,23 @@ jobs: - name: Make target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/feature/site-artifact') shell: bash - run: mkdir -p github/target github-actions/target kernel/target versioning/target ci-release/target scalafix/target mdocs/target site/target ci-signing/target mergify/target unidoc/target mima/target no-publish/target sonatype/target ci/target sonatype-ci-release/target core/target settings/target project/target + run: mkdir -p github/target github-actions/target kernel/target versioning/target ci-release/target scalafix/target site/target ci-signing/target mergify/target unidoc/target mima/target site-ci-release/target no-publish/target sonatype/target ci/target sonatype-ci-release/target core/target settings/target project/target - name: Compress target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/feature/site-artifact') shell: bash - run: tar cf targets.tar github/target github-actions/target kernel/target versioning/target ci-release/target scalafix/target mdocs/target site/target ci-signing/target mergify/target unidoc/target mima/target no-publish/target sonatype/target ci/target sonatype-ci-release/target core/target settings/target project/target + run: tar cf targets.tar github/target github-actions/target kernel/target versioning/target ci-release/target scalafix/target site/target ci-signing/target mergify/target unidoc/target mima/target site-ci-release/target no-publish/target sonatype/target ci/target sonatype-ci-release/target core/target settings/target project/target - name: Upload target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/feature/site-artifact') uses: actions/upload-artifact@v3 with: - name: target-${{ matrix.os }}-${{ matrix.java }}-${{ matrix.scala }}-${{ matrix.project }} + name: ${{ matrix.os }}-${{ matrix.java }}-${{ matrix.scala }}-${{ matrix.project }} path: targets.tar publish: name: Publish Artifacts - needs: [build] + needs: [build, site] if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/feature/site-artifact') strategy: matrix: @@ -340,6 +340,16 @@ jobs: tar xf targets.tar rm targets.tar + - name: Download target directories (site) + uses: actions/download-artifact@v3 + with: + name: site + + - name: Inflate target directories (site) + run: | + tar xf targets.tar + rm targets.tar + - name: Import signing key if: env.PGP_SECRET != '' && env.PGP_PASSPHRASE == '' env: @@ -613,3 +623,40 @@ jobs: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: mdocs/target/docs/site keep_files: true + + - name: Import signing key + if: env.PGP_SECRET != '' && env.PGP_PASSPHRASE == '' + env: + PGP_SECRET: ${{ secrets.PGP_SECRET }} + PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }} + run: echo $PGP_SECRET | base64 -di | gpg --import + + - name: Import signing key and strip passphrase + if: env.PGP_SECRET != '' && env.PGP_PASSPHRASE != '' + env: + PGP_SECRET: ${{ secrets.PGP_SECRET }} + PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }} + run: | + echo "$PGP_SECRET" | base64 -di > /tmp/signing-key.gpg + echo "$PGP_PASSPHRASE" | gpg --pinentry-mode loopback --passphrase-fd 0 --import /tmp/signing-key.gpg + (echo "$PGP_PASSPHRASE"; echo; echo) | gpg --command-fd 0 --pinentry-mode loopback --change-passphrase $(gpg --list-secret-keys --with-colons 2> /dev/null | grep '^sec:' | cut --delimiter ':' --fields 5 | tail -n 1) + + - name: Publish site to sonatype + if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/feature/site-artifact') + env: + SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + SONATYPE_CREDENTIAL_HOST: ${{ secrets.SONATYPE_CREDENTIAL_HOST }} + run: sbt docs/publish + + - name: Make target directories + run: mkdir -p target + + - name: Compress target directories + run: tar cf targets.tar target + + - name: Upload target directories + uses: actions/upload-artifact@v3 + with: + name: site + path: targets.tar diff --git a/.mergify.yml b/.mergify.yml index 1a48bc1d..2210e2c5 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -146,6 +146,14 @@ pull_request_rules: add: - site remove: [] +- name: Label site-ci-release PRs + conditions: + - files~=^site-ci-release/ + actions: + label: + add: + - site-ci-release + remove: [] - name: Label sonatype PRs conditions: - files~=^sonatype/ diff --git a/build.sbt b/build.sbt index 2782c99a..2c3477af 100644 --- a/build.sbt +++ b/build.sbt @@ -62,11 +62,11 @@ lazy val `sbt-typelevel` = tlCrossRootProject.aggregate( ciSigning, sonatypeCiRelease, ci, - core, ciRelease, site, - unidoc, - docs + siteCiRelease, + core, + unidoc ) lazy val kernel = project @@ -188,6 +188,22 @@ lazy val ciRelease = project ciSigning ) +lazy val site = project + .in(file("site")) + .enablePlugins(SbtPlugin) + .settings( + name := "sbt-typelevel-site" + ) + .dependsOn(kernel, github, githubActions, noPublish) + +lazy val siteCiRelease = project + .in(file("site-ci-release")) + .enablePlugins(SbtPlugin) + .settings( + name := "sbt-typelevel-site-ci-release" + ) + .dependsOn(site, sonatypeCiRelease, ciSigning) + lazy val core = project .in(file("core")) .enablePlugins(SbtPlugin) @@ -196,17 +212,10 @@ lazy val core = project ) .dependsOn( ciRelease, - settings + settings, + siteCiRelease ) -lazy val site = project - .in(file("site")) - .enablePlugins(SbtPlugin) - .settings( - name := "sbt-typelevel-site" - ) - .dependsOn(kernel, github, githubActions, noPublish) - lazy val unidoc = project .in(file("unidoc")) .enablePlugins(TypelevelUnidocPlugin) diff --git a/ci-signing/src/main/scala/org/typelevel/sbt/TypelevelCiSigningPlugin.scala b/ci-signing/src/main/scala/org/typelevel/sbt/TypelevelCiSigningPlugin.scala index bee1f008..9be1b38a 100644 --- a/ci-signing/src/main/scala/org/typelevel/sbt/TypelevelCiSigningPlugin.scala +++ b/ci-signing/src/main/scala/org/typelevel/sbt/TypelevelCiSigningPlugin.scala @@ -26,12 +26,18 @@ import Keys._ object TypelevelCiSigningPlugin extends AutoPlugin { + object autoImport { + lazy val tlCiSigningImportKey = settingKey[Seq[WorkflowStep]]("Steps to import the PGP key") + } + + import autoImport._ + override def requires = SbtGpg && GitHubActionsPlugin && GenerativePlugin override def trigger = allRequirements override def buildSettings = Seq( - githubWorkflowPublishPreamble := Seq( + tlCiSigningImportKey := Seq( WorkflowStep.Run( // if your key is not passphrase-protected List("echo $PGP_SECRET | base64 -di | gpg --import"), name = Some("Import signing key"), @@ -48,7 +54,8 @@ object TypelevelCiSigningPlugin extends AutoPlugin { cond = Some("env.PGP_SECRET != '' && env.PGP_PASSPHRASE != ''"), env = env ) - ) + ), + githubWorkflowPublishPreamble := tlCiSigningImportKey.value ) import SbtGpg.autoImport._ diff --git a/github-actions/src/main/scala/org/typelevel/sbt/gha/GenerativeKeys.scala b/github-actions/src/main/scala/org/typelevel/sbt/gha/GenerativeKeys.scala index eb7fbc0e..c84c3340 100644 --- a/github-actions/src/main/scala/org/typelevel/sbt/gha/GenerativeKeys.scala +++ b/github-actions/src/main/scala/org/typelevel/sbt/gha/GenerativeKeys.scala @@ -76,6 +76,8 @@ trait GenerativeKeys { "A set of branch predicates which will be applied to determine whether the current branch gets a publication stage; if empty, publish will be skipped entirely (default: [== main])") lazy val githubWorkflowPublishCond = settingKey[Option[String]]( "A set of conditionals to apply to the publish job to further restrict its run (default: [])") + lazy val githubWorkflowPublishNeeds = + settingKey[Set[String]]("A set of job IDs the publish job needs (default: {build})") lazy val githubWorkflowPublishTimeoutMinutes = settingKey[Option[Int]]( "The maximum number of minutes to let the publish job run before GitHub automatically cancels it (default: None)") @@ -99,6 +101,8 @@ trait GenerativeKeys { lazy val githubWorkflowArtifactUpload = settingKey[Boolean]( "Controls whether or not to upload target directories in the event that multiple jobs are running sequentially. Can be set on a per-project basis (default: true)") + lazy val githubWorkflowArtifactDownloadExtraArtifacts = + settingKey[Set[String]]("Additional artifacts which should be downloaded (default: {})") lazy val githubWorkflowArtifactDownloadExtraKeys = settingKey[Set[String]]( "Additional matrix keys for which *all* artifacts should be downloaded and not just for the primary value (default: {})") lazy val githubWorkflowJobSetup = settingKey[Seq[WorkflowStep]]( diff --git a/github-actions/src/main/scala/org/typelevel/sbt/gha/GenerativePlugin.scala b/github-actions/src/main/scala/org/typelevel/sbt/gha/GenerativePlugin.scala index e77269f2..08db21b0 100644 --- a/github-actions/src/main/scala/org/typelevel/sbt/gha/GenerativePlugin.scala +++ b/github-actions/src/main/scala/org/typelevel/sbt/gha/GenerativePlugin.scala @@ -19,7 +19,6 @@ package org.typelevel.sbt.gha import sbt.Keys._ import sbt._ -import java.nio.file.FileSystems import scala.io.Source object GenerativePlugin extends AutoPlugin { @@ -577,6 +576,7 @@ ${indent(jobs.map(compileJob(_, sbt)).mkString("\n\n"), 1)} WorkflowStep.Sbt(List("+publish"), name = Some("Publish project"))), githubWorkflowPublishTargetBranches := Seq(RefPredicate.Equals(Ref.Branch("main"))), githubWorkflowPublishCond := None, + githubWorkflowPublishNeeds := Set("build"), githubWorkflowPublishTimeoutMinutes := None, githubWorkflowJavaVersions := Seq(JavaSpec.temurin("11")), githubWorkflowScalaVersions := { @@ -601,21 +601,16 @@ ${indent(jobs.map(compileJob(_, sbt)).mkString("\n\n"), 1)} private val windowsGuard = Some("contains(runner.os, 'windows')") - private val PlatformSep = FileSystems.getDefault.getSeparator - private def normalizeSeparators(pathStr: String): String = { - pathStr.replace(PlatformSep, "/") // *force* unix separators - } - - private val pathStrs = Def setting { + private val relativePaths = Def setting { val base = (ThisBuild / baseDirectory).value.toPath internalTargetAggregation.value map { file => val path = file.toPath if (path.isAbsolute) - normalizeSeparators(base.relativize(path).toString) + base.relativize(path) else - normalizeSeparators(path.toString) + path } } @@ -624,40 +619,21 @@ ${indent(jobs.map(compileJob(_, sbt)).mkString("\n\n"), 1)} override def buildSettings = settingDefaults ++ Seq( githubWorkflowPREventTypes := PREventType.Defaults, + githubWorkflowArtifactDownloadExtraArtifacts := Set.empty, githubWorkflowArtifactDownloadExtraKeys := Set.empty, githubWorkflowGeneratedUploadSteps := { val generate = githubWorkflowArtifactUpload.value && githubWorkflowPublishTargetBranches.value.nonEmpty if (generate) { - val sanitized = pathStrs.value map { str => - if (str.indexOf(' ') >= 0) // TODO be less naive - s"'$str'" - else - str - } - - val mkdir = WorkflowStep.Run( - List(s"mkdir -p ${sanitized.mkString(" ")} project/target"), - name = Some("Make target directories"), - cond = Some(publicationCond.value)) - - val tar = WorkflowStep.Run( - List(s"tar cf targets.tar ${sanitized.mkString(" ")} project/target"), - name = Some("Compress target directories"), - cond = Some(publicationCond.value)) - val keys = githubWorkflowBuildMatrixAdditions.value.keys.toList.sorted val artifactId = MatrixKeys.groupId(keys) - - val upload = WorkflowStep.Use( - UseRef.Public("actions", "upload-artifact", "v3"), - name = Some(s"Upload target directories"), - params = Map("name" -> s"target-$artifactId", "path" -> "targets.tar"), - cond = Some(publicationCond.value) - ) - - Seq(mkdir, tar, upload) + WorkflowStep + .upload( + relativePaths.value.toList :+ java.nio.file.Paths.get("project", "target"), + artifactId + ) + .map(_.withCond(Some(publicationCond.value))) } else { Seq() } @@ -679,7 +655,7 @@ ${indent(jobs.map(compileJob(_, sbt)).mkString("\n\n"), 1)} val exclusions = githubWorkflowBuildMatrixExclusions.value.toList // we build the list of artifacts, by iterating over all combinations of keys - val artifacts = + val matrixArtifacts = expandMatrix( oses, scalas, @@ -690,24 +666,29 @@ ${indent(jobs.map(compileJob(_, sbt)).mkString("\n\n"), 1)} ).map { case _ :: scala :: _ :: tail => scala :: tail case _ => sys.error("Bug generating artifact download steps") // shouldn't happen - } - - if (githubWorkflowArtifactUpload.value) { - artifacts flatMap { v => + }.map { v => val pretty = v.mkString(", ") + val id = s"target-$${{ matrix.os }}-$${{ matrix.java }}-${v.mkString("-")}" + (pretty, id) + } - val download = WorkflowStep.Use( - UseRef.Public("actions", "download-artifact", "v3"), - name = Some(s"Download target directories ($pretty)"), - params = - Map("name" -> s"target-$${{ matrix.os }}-$${{ matrix.java }}-${v.mkString("-")}") - ) - - val untar = WorkflowStep.Run( - List("tar xf targets.tar", "rm targets.tar"), - name = Some(s"Inflate target directories ($pretty)")) + val artifacts = + matrixArtifacts ++ githubWorkflowArtifactDownloadExtraArtifacts.value.map(x => (x, x)) - Seq(download, untar) + if (githubWorkflowArtifactUpload.value) { + artifacts flatMap { + case (pretty, id) => + val download = WorkflowStep.Use( + UseRef.Public("actions", "download-artifact", "v3"), + name = Some(s"Download target directories ($pretty)"), + params = Map("name" -> id) + ) + + val untar = WorkflowStep.Run( + List("tar xf targets.tar", "rm targets.tar"), + name = Some(s"Inflate target directories ($pretty)")) + + Seq(download, untar) } } else { Seq() @@ -753,7 +734,7 @@ ${indent(jobs.map(compileJob(_, sbt)).mkString("\n\n"), 1)} scalas = List.empty, sbtStepPreamble = List.empty, javas = List(githubWorkflowJavaVersions.value.head), - needs = List("build"), + needs = githubWorkflowPublishNeeds.value.toList.sorted, timeoutMinutes = githubWorkflowPublishTimeoutMinutes.value )).filter(_ => githubWorkflowPublishTargetBranches.value.nonEmpty) @@ -783,7 +764,7 @@ ${indent(jobs.map(compileJob(_, sbt)).mkString("\n\n"), 1)} } ) - private val publicationCond = Def setting { + private[sbt] val publicationCond = Def setting { val publicationCondPre = githubWorkflowPublishTargetBranches .value diff --git a/github-actions/src/main/scala/org/typelevel/sbt/gha/WorkflowStep.scala b/github-actions/src/main/scala/org/typelevel/sbt/gha/WorkflowStep.scala index ad0f9b51..eb840e6f 100644 --- a/github-actions/src/main/scala/org/typelevel/sbt/gha/WorkflowStep.scala +++ b/github-actions/src/main/scala/org/typelevel/sbt/gha/WorkflowStep.scala @@ -16,6 +16,9 @@ package org.typelevel.sbt.gha +import java.nio.file.FileSystems +import java.nio.file.Path + sealed trait WorkflowStep extends Product with Serializable { def id: Option[String] def name: Option[String] @@ -156,4 +159,36 @@ object WorkflowStep { def withEnv(env: Map[String, String]) = copy(env = env) def withTimeoutMinutes(minutes: Option[Int]) = copy(timeoutMinutes = minutes) } + + def upload(paths: List[Path], artifactId: String): List[WorkflowStep] = { + val pathStrs = paths.map(path => normalizeSeparators(path.toString)) + + val sanitized = pathStrs.map { str => + if (str.indexOf(' ') >= 0) // TODO be less naive + s"'$str'" + else + str + } + + val mkdir = WorkflowStep.Run( + List(s"mkdir -p ${sanitized.mkString(" ")}"), + name = Some("Make target directories")) + + val tar = WorkflowStep.Run( + List(s"tar cf targets.tar ${sanitized.mkString(" ")}"), + name = Some("Compress target directories")) + + val upload = WorkflowStep.Use( + UseRef.Public("actions", "upload-artifact", "v3"), + name = Some(s"Upload target directories"), + params = Map("name" -> artifactId, "path" -> "targets.tar") + ) + + List(mkdir, tar, upload) + } + + private val PlatformSep = FileSystems.getDefault.getSeparator + private def normalizeSeparators(pathStr: String): String = { + pathStr.replace(PlatformSep, "/") // *force* unix separators + } } diff --git a/project/build.sbt b/project/build.sbt index e6ecff93..69320a9d 100644 --- a/project/build.sbt +++ b/project/build.sbt @@ -11,6 +11,7 @@ val modules = List( "no-publish", "scalafix", "settings", + "site-ci-release", "site", "sonatype", "sonatype-ci-release", diff --git a/site-ci-release/src/main/scala/org/typelevel/sbt/TypelevelSiteCiReleasePlugin.scala b/site-ci-release/src/main/scala/org/typelevel/sbt/TypelevelSiteCiReleasePlugin.scala new file mode 100644 index 00000000..ed98b28d --- /dev/null +++ b/site-ci-release/src/main/scala/org/typelevel/sbt/TypelevelSiteCiReleasePlugin.scala @@ -0,0 +1,52 @@ +/* + * Copyright 2022 Typelevel + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.typelevel.sbt + +import org.typelevel.sbt.gha.GenerativePlugin +import org.typelevel.sbt.gha.GenerativePlugin.autoImport._ +import sbt.Keys._ +import sbt._ + +object TypelevelSiteCiReleasePlugin extends AutoPlugin { + + override def requires = TypelevelCiSigningPlugin && TypelevelSitePlugin && TypelevelSonatypeCiReleasePlugin + + override def trigger = allRequirements + + import TypelevelCiSigningPlugin.autoImport._ + import TypelevelSitePlugin.autoImport._ + + override def projectSettings = Seq( + githubWorkflowArtifactUpload := false, + ThisBuild / githubWorkflowArtifactDownloadExtraArtifacts += "site", + ThisBuild / githubWorkflowPublishNeeds += "site", + tlSitePublish ++= { + tlCiSigningImportKey.value ++ List( + WorkflowStep.Sbt( + List(s"${thisProject.value.id}/${publish.key.toString}"), + name = Some("Publish site to sonatype"), + cond = Some(GenerativePlugin.publicationCond.value), + env = TypelevelSonatypeCiReleasePlugin.env + ) + ) ++ WorkflowStep.upload( + List(java.nio.file.Paths.get("target")), + "site" + ) + } + ) + +} diff --git a/sonatype-ci-release/src/main/scala/org/typelevel/sbt/TypelevelSonatypeCiReleasePlugin.scala b/sonatype-ci-release/src/main/scala/org/typelevel/sbt/TypelevelSonatypeCiReleasePlugin.scala index c7bdcf88..dc987058 100644 --- a/sonatype-ci-release/src/main/scala/org/typelevel/sbt/TypelevelSonatypeCiReleasePlugin.scala +++ b/sonatype-ci-release/src/main/scala/org/typelevel/sbt/TypelevelSonatypeCiReleasePlugin.scala @@ -64,9 +64,10 @@ object TypelevelSonatypeCiReleasePlugin extends AutoPlugin { ) ) - private val env = List("SONATYPE_USERNAME", "SONATYPE_PASSWORD", "SONATYPE_CREDENTIAL_HOST") - .map(k => k -> s"$${{ secrets.$k }}") - .toMap + private[sbt] val env = List( + "SONATYPE_USERNAME", + "SONATYPE_PASSWORD", + "SONATYPE_CREDENTIAL_HOST").map(k => k -> s"$${{ secrets.$k }}").toMap private def tlCiReleaseCommand: Command = Command.command("tlCiRelease") { state => From b9d1dd66b4263131217e0ca11b119f1d1e3a3f26 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Fri, 30 Jun 2023 05:29:07 +0000 Subject: [PATCH 10/14] Formatting --- .../scala/org/typelevel/sbt/TypelevelSiteCiReleasePlugin.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/site-ci-release/src/main/scala/org/typelevel/sbt/TypelevelSiteCiReleasePlugin.scala b/site-ci-release/src/main/scala/org/typelevel/sbt/TypelevelSiteCiReleasePlugin.scala index ed98b28d..177f667c 100644 --- a/site-ci-release/src/main/scala/org/typelevel/sbt/TypelevelSiteCiReleasePlugin.scala +++ b/site-ci-release/src/main/scala/org/typelevel/sbt/TypelevelSiteCiReleasePlugin.scala @@ -23,7 +23,8 @@ import sbt._ object TypelevelSiteCiReleasePlugin extends AutoPlugin { - override def requires = TypelevelCiSigningPlugin && TypelevelSitePlugin && TypelevelSonatypeCiReleasePlugin + override def requires = + TypelevelCiSigningPlugin && TypelevelSitePlugin && TypelevelSonatypeCiReleasePlugin override def trigger = allRequirements From 5707649034357119c5919afaf8720b739df9bf5c Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Fri, 30 Jun 2023 05:33:27 +0000 Subject: [PATCH 11/14] Fix artifact upload id --- .github/workflows/ci.yml | 2 +- .../src/main/scala/org/typelevel/sbt/gha/GenerativePlugin.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8a08cf9c..0422a172 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -216,7 +216,7 @@ jobs: if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/feature/site-artifact') uses: actions/upload-artifact@v3 with: - name: ${{ matrix.os }}-${{ matrix.java }}-${{ matrix.scala }}-${{ matrix.project }} + name: target-${{ matrix.os }}-${{ matrix.java }}-${{ matrix.scala }}-${{ matrix.project }} path: targets.tar publish: diff --git a/github-actions/src/main/scala/org/typelevel/sbt/gha/GenerativePlugin.scala b/github-actions/src/main/scala/org/typelevel/sbt/gha/GenerativePlugin.scala index 08db21b0..401cf392 100644 --- a/github-actions/src/main/scala/org/typelevel/sbt/gha/GenerativePlugin.scala +++ b/github-actions/src/main/scala/org/typelevel/sbt/gha/GenerativePlugin.scala @@ -627,7 +627,7 @@ ${indent(jobs.map(compileJob(_, sbt)).mkString("\n\n"), 1)} githubWorkflowPublishTargetBranches.value.nonEmpty if (generate) { val keys = githubWorkflowBuildMatrixAdditions.value.keys.toList.sorted - val artifactId = MatrixKeys.groupId(keys) + val artifactId = "target-" + MatrixKeys.groupId(keys) WorkflowStep .upload( relativePaths.value.toList :+ java.nio.file.Paths.get("project", "target"), From 233b428b7abc633cb4f963d2417057af7f062351 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Sat, 1 Jul 2023 20:03:59 +0000 Subject: [PATCH 12/14] Disable publishing from this branch --- .github/workflows/ci.yml | 10 +++++----- build.sbt | 1 - 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0422a172..331623c5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -203,17 +203,17 @@ jobs: run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' doc - name: Make target directories - if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/feature/site-artifact') + if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') shell: bash run: mkdir -p github/target github-actions/target kernel/target versioning/target ci-release/target scalafix/target site/target ci-signing/target mergify/target unidoc/target mima/target site-ci-release/target no-publish/target sonatype/target ci/target sonatype-ci-release/target core/target settings/target project/target - name: Compress target directories - if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/feature/site-artifact') + if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') shell: bash run: tar cf targets.tar github/target github-actions/target kernel/target versioning/target ci-release/target scalafix/target site/target ci-signing/target mergify/target unidoc/target mima/target site-ci-release/target no-publish/target sonatype/target ci/target sonatype-ci-release/target core/target settings/target project/target - name: Upload target directories - if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/feature/site-artifact') + if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') uses: actions/upload-artifact@v3 with: name: target-${{ matrix.os }}-${{ matrix.java }}-${{ matrix.scala }}-${{ matrix.project }} @@ -222,7 +222,7 @@ jobs: publish: name: Publish Artifacts needs: [build, site] - if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/feature/site-artifact') + if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') strategy: matrix: os: [ubuntu-latest] @@ -642,7 +642,7 @@ jobs: (echo "$PGP_PASSPHRASE"; echo; echo) | gpg --command-fd 0 --pinentry-mode loopback --change-passphrase $(gpg --list-secret-keys --with-colons 2> /dev/null | grep '^sec:' | cut --delimiter ':' --fields 5 | tail -n 1) - name: Publish site to sonatype - if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/feature/site-artifact') + if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') env: SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} diff --git a/build.sbt b/build.sbt index 2c3477af..c9647d82 100644 --- a/build.sbt +++ b/build.sbt @@ -1,7 +1,6 @@ name := "sbt-typelevel" ThisBuild / tlBaseVersion := "0.5" -ThisBuild / tlCiReleaseBranches += "feature/site-artifact" ThisBuild / crossScalaVersions := Seq("2.12.18") ThisBuild / developers ++= List( tlGitHubDev("armanbilge", "Arman Bilge"), From abab42203042d9e3d2160140108d8bcdcc4b9414 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Sat, 1 Jul 2023 20:12:29 +0000 Subject: [PATCH 13/14] Ignore site module in dependency submission --- .github/workflows/ci.yml | 2 +- ci/src/main/scala/org/typelevel/sbt/TypelevelCiPlugin.scala | 6 +++++- docs/customization.md | 3 ++- .../main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala | 2 ++ 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 331623c5..497f59b2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -486,7 +486,7 @@ jobs: - name: Submit Dependencies uses: scalacenter/sbt-dependency-submission@v2 with: - modules-ignore: sbt-typelevelJVM sbt-typelevelNative sbt-typelevel sbt-typelevelJS + modules-ignore: sbt-typelevelJVM sbt-typelevelNative sbt-typelevel sbt-typelevelJS docs configs-ignore: test scala-tool scala-doc-tool validate-steward: diff --git a/ci/src/main/scala/org/typelevel/sbt/TypelevelCiPlugin.scala b/ci/src/main/scala/org/typelevel/sbt/TypelevelCiPlugin.scala index 8787e6a7..cd204b60 100644 --- a/ci/src/main/scala/org/typelevel/sbt/TypelevelCiPlugin.scala +++ b/ci/src/main/scala/org/typelevel/sbt/TypelevelCiPlugin.scala @@ -46,6 +46,9 @@ object TypelevelCiPlugin extends AutoPlugin { lazy val tlCiDependencyGraphJob = settingKey[Boolean]("Whether to add a job to submit dependencies to GH (default: true)") + lazy val tlCiDependencyIgnoreModules = + settingKey[Seq[ProjectRef]]( + "Modules to ignore in dependency submission job (default: no-publish modules)") lazy val tlCiStewardValidateConfig = settingKey[Option[File]]( "The location of the Scala Steward config to validate (default: `.scala-steward.conf`, if exists)") @@ -61,6 +64,7 @@ object TypelevelCiPlugin extends AutoPlugin { tlCiMimaBinaryIssueCheck := false, tlCiDocCheck := false, tlCiDependencyGraphJob := true, + tlCiDependencyIgnoreModules := noPublishProjectRefs.value, githubWorkflowTargetBranches ++= Seq( "!update/**", // ignore steward branches "!pr/**" // escape-hatch to disable ci on a branch @@ -148,7 +152,7 @@ object TypelevelCiPlugin extends AutoPlugin { steps = githubWorkflowJobSetup.value.toList :+ WorkflowStep.DependencySubmission( None, - Some(noPublishProjectRefs.value.toList.map(_.project)), + Some(tlCiDependencyIgnoreModules.value.toList.map(_.project)), Some(List("test", "scala-tool", "scala-doc-tool")), None ), diff --git a/docs/customization.md b/docs/customization.md index 85612b51..09875e3d 100644 --- a/docs/customization.md +++ b/docs/customization.md @@ -54,7 +54,8 @@ Instead of using the super-plugins, for finer-grained control you can always add - `tlCiScalafixCheck` (setting): Whether to do scalafix check in CI (default: `false`). - `tlCiMimaBinaryIssueCheck` (setting): Whether to do MiMa binary issues check in CI (default: `false`). - `tlCiDocCheck` (setting): Whether to build API docs in CI (default: `false`). -- `tlCiDependencyGraphJob` (setting): Whether to add a job to submit dependencies to GH (default: `true`) +- `tlCiDependencyGraphJob` (setting): Whether to add a job to submit dependencies to GH (default: `true`). +- `tlCiDependencyIgnoreModules` (setting): "Modules to ignore in dependency submission job (default: no-publish modules). - `tlCiStewardValidateConfig` (setting): The location of the Scala Steward config to validate (default: `.scala-steward.conf`, if exists). - `tlCrossRootProject` (method): helper to create a `root` project that can aggregate both `Project`s and `CrossProject`s. Automatically creates separate jobs in the CI matrix for each platform (JVM, JS, etc.). diff --git a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala index 2bfaa5b9..22440d6f 100644 --- a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala +++ b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala @@ -76,6 +76,7 @@ object TypelevelSitePlugin extends AutoPlugin { import autoImport._ import TypelevelGitHubPlugin._ + import TypelevelCiPlugin.autoImport._ override def requires = MdocPlugin && LaikaPlugin && TypelevelGitHubPlugin && GenerativePlugin @@ -213,6 +214,7 @@ object TypelevelSitePlugin extends AutoPlugin { List.empty } }, + ThisBuild / tlCiDependencyIgnoreModules += thisProjectRef.value, ThisBuild / githubWorkflowAddedJobs += WorkflowJob( "site", From 691796f956d93316d4a7efa7eebad7ccc26ba1c1 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Sat, 1 Jul 2023 20:31:57 +0000 Subject: [PATCH 14/14] Workaround no sbt-tl-ci dep in sbt-tl-site --- .../main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala index 22440d6f..889834c0 100644 --- a/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala +++ b/site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala @@ -76,7 +76,6 @@ object TypelevelSitePlugin extends AutoPlugin { import autoImport._ import TypelevelGitHubPlugin._ - import TypelevelCiPlugin.autoImport._ override def requires = MdocPlugin && LaikaPlugin && TypelevelGitHubPlugin && GenerativePlugin @@ -214,7 +213,11 @@ object TypelevelSitePlugin extends AutoPlugin { List.empty } }, - ThisBuild / tlCiDependencyIgnoreModules += thisProjectRef.value, + // avoid depending directly on sbt-typelevel-ci + ThisBuild / SettingKey[Seq[ProjectRef]]("tlCiDependencyIgnoreModules") := { + val old = (ThisBuild / SettingKey[Seq[ProjectRef]]("tlCiDependencyIgnoreModules")).?.value + old.getOrElse(Seq.empty) :+ thisProjectRef.value + }, ThisBuild / githubWorkflowAddedJobs += WorkflowJob( "site",