Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion ci/build-helpers/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ subprojects {
version = project.property("deploy.version") as String

repositories {
mavenCentral()
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
}

plugins.withType(JavaBasePlugin::class.java) {
Expand Down
4 changes: 3 additions & 1 deletion ci/build-helpers/cli/buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ plugins {
}

repositories {
mavenCentral()
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
maven("https://packages.jetbrains.team/maven/p/cmp/dev")
}

Expand Down
9 changes: 9 additions & 0 deletions ci/build-helpers/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1 +1,10 @@
pluginManagement {
repositories {
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
gradlePluginPortal()
}
}

include(":publishing")
41 changes: 41 additions & 0 deletions ci/cache-redirector.init.gradle

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we reuse a single copy somehow?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Symbolic link should work fine on macOS and Linux, and there should be some setting to make it work on Windows too

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yep - JetBrains/compose-multiplatform-core#2747

But It's probably out of scope here

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've decided to use a single copy of that script without symlinks just in case

Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
// Resolves Maven Central artifacts through JetBrains cache-redirector, to avoid hitting Maven Central rate limits (HTTP 429) on CI.
// Used by Gradle plugin tests (TestProject.kt) and examples/validateExamples*.sh, the projects themselves don't depend on it.
// The redirector has to go before Gradle Plugin Portal, as the portal redirects such artifacts to Maven Central.

def redirectorName = "MavenCentralCacheRedirector"
def redirectorUrl = "https://cache-redirector.jetbrains.com/maven-central"

beforeSettings { settings ->
// Repositories declared in settings scripts are added after this one
settings.pluginManagement.repositories.maven {
name = redirectorName
url = redirectorUrl
}
settings.dependencyResolutionManagement.repositories.maven {
name = redirectorName
url = redirectorUrl
}
}

settingsEvaluated { settings ->
// Direct Maven Central is replaced by the redirector above:
// on 429 it fails the resolution instead of falling through to the next repositories (e.g. mavenLocal with snapshots)
[settings.pluginManagement.repositories, settings.dependencyResolutionManagement.repositories].each { repositories ->
repositories.removeAll { it instanceof MavenArtifactRepository && it.url.host == "repo.maven.apache.org" }

// Gradle Plugin Portal redirects artifacts it doesn't host (e.g. AGP from Google Maven) to Maven Central,
// so it goes last for other repositories to be checked first
def pluginPortals = repositories.findAll { it instanceof MavenArtifactRepository && it.url.host == "plugins.gradle.org" }
repositories.removeAll(pluginPortals)
pluginPortals.each { repositories.addLast(it) }
}
}

allprojects {
// Some projects declare repositories in build scripts, there direct Maven Central is redirected in place
repositories.configureEach { repository ->
if (repository instanceof MavenArtifactRepository && repository.url.host == "repo.maven.apache.org") {
repository.url = redirectorUrl
}
}
}
4 changes: 3 additions & 1 deletion ci/compose-uber-jar/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ plugins {
val properties = ComposeUberJarProperties()

repositories {
mavenCentral()
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
maven(properties.composeRepoUrl)
google()
}
Expand Down
9 changes: 9 additions & 0 deletions ci/compose-uber-jar/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,2 +1,11 @@
pluginManagement {
repositories {
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
gradlePluginPortal()
}
}

rootProject.name = "compose-uber-jar"

4 changes: 3 additions & 1 deletion ci/templates/desktop-template/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ plugins {
}

repositories {
mavenCentral()
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
maven("https://packages.jetbrains.team/maven/p/cmp/dev")
google()
}
Expand Down
5 changes: 4 additions & 1 deletion ci/templates/desktop-template/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
pluginManagement {
repositories {
gradlePluginPortal()
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
maven("https://packages.jetbrains.team/maven/p/cmp/dev")
gradlePluginPortal()
}

plugins {
Expand Down
4 changes: 3 additions & 1 deletion ci/templates/html-library-template/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ plugins {
}

repositories {
mavenCentral()
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
maven("https://packages.jetbrains.team/maven/p/cmp/dev")
google()
}
Expand Down
5 changes: 4 additions & 1 deletion ci/templates/html-library-template/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
pluginManagement {
repositories {
gradlePluginPortal()
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
maven("https://packages.jetbrains.team/maven/p/cmp/dev")
gradlePluginPortal()
}

plugins {
Expand Down
13 changes: 11 additions & 2 deletions ci/templates/maven-test-project/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,12 @@
<compose.material3.version>1.9.0</compose.material3.version>
</properties>

<!-- Maven Central is resolved through cache-redirector, to avoid its rate limits on CI.
The "central" id replaces the default Maven Central repository. -->
<repositories>
<repository>
<id>mavenCentral</id>
<url>https://repo1.maven.org/maven2/</url>
<id>MavenCentralCacheRedirector</id>
<url>https://cache-redirector.jetbrains.com/maven-central</url>
</repository>
<repository>
<id>gMaven</id>
Expand All @@ -32,6 +34,13 @@
</repository>
</repositories>

<pluginRepositories>
<pluginRepository>
<id>MavenCentralCacheRedirector</id>
<url>https://cache-redirector.jetbrains.com/maven-central</url>
</pluginRepository>
</pluginRepositories>

<build>
<sourceDirectory>src/main/kotlin</sourceDirectory>
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
Expand Down
4 changes: 3 additions & 1 deletion ci/templates/multiplatform-template/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ plugins {
subprojects {
repositories {
google()
mavenCentral()
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
maven("https://packages.jetbrains.team/maven/p/cmp/dev")
}
}
5 changes: 4 additions & 1 deletion ci/templates/multiplatform-template/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
pluginManagement {
repositories {
gradlePluginPortal()
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
maven("https://packages.jetbrains.team/maven/p/cmp/dev")
google()
gradlePluginPortal()
}

plugins {
Expand Down
3 changes: 3 additions & 0 deletions components/buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ plugins {
}

repositories {
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
google()
gradlePluginPortal()
}
Expand Down
3 changes: 3 additions & 0 deletions components/buildSrc/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
pluginManagement {
repositories {
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
gradlePluginPortal()
}
}
10 changes: 7 additions & 3 deletions components/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
pluginManagement {
repositories {
google()
gradlePluginPortal()
mavenCentral()
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
maven("https://packages.jetbrains.team/maven/p/cmp/dev")
gradlePluginPortal()
if (extra["compose.useMavenLocal"] == "true") {
mavenLocal()
}
Expand Down Expand Up @@ -31,7 +33,9 @@ dependencyResolutionManagement {
mavenLocal() // mavenLocal should be the first to get the correct version of skiko during a local build.
}
google()
mavenCentral()
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
maven("https://packages.jetbrains.team/maven/p/cmp/dev")
}

Expand Down
4 changes: 4 additions & 0 deletions examples/buildWithKotlinToolchain.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ if [ -n "$compose_version" ]; then
tar -C "$example" --exclude=./build -cf - . | tar -C "$temp_dir" -xf -
echo "Building a copy of $example in $temp_dir with Compose $compose_version${kotlin_version:+ and Kotlin $kotlin_version}"

# Replaces the default Maven Central (for both dependencies and Kotlin compiler artifacts) with cache-redirector,
# to avoid its rate limits on CI
export KOTLIN_DEFAULT_MAVEN_CENTRAL_URL="https://cache-redirector.jetbrains.com/maven-central"

template="validation-versions.module-template.yaml"
{
echo "repositories:"
Expand Down
7 changes: 5 additions & 2 deletions examples/validateExamples.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,17 @@ fi
compose_version="${1:-}"
kotlin_version="${2:-}"

# Resolves Maven Central through cache-redirector, to avoid its rate limits on CI
init_script="$(cd "$(dirname "$0")/.." && pwd)/ci/cache-redirector.init.gradle"

runGradle() {
local example="$1"
local task="$2"
pushd "$example"
if [ "${#version_args[@]}" -gt 0 ]; then
./gradlew "$task" "${version_args[@]}"
./gradlew "$task" --init-script "$init_script" "${version_args[@]}"
else
./gradlew "$task"
./gradlew "$task" --init-script "$init_script"
fi
popd
}
Expand Down
7 changes: 5 additions & 2 deletions examples/validateExamplesWithJs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,17 @@ fi
compose_version="${1:-}"
kotlin_version="${2:-}"

# Resolves Maven Central through cache-redirector, to avoid its rate limits on CI
init_script="$(cd "$(dirname "$0")/.." && pwd)/ci/cache-redirector.init.gradle"

runGradle() {
local example="$1"
local task="$2"
pushd "$example"
if [ "${#version_args[@]}" -gt 0 ]; then
./gradlew "$task" "${version_args[@]}"
./gradlew "$task" --init-script "$init_script" "${version_args[@]}"
else
./gradlew "$task"
./gradlew "$task" --init-script "$init_script"
fi
popd
}
Expand Down
4 changes: 3 additions & 1 deletion gradle-plugins/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ subprojects {
version = BuildProperties.deployVersion(project)

repositories {
mavenCentral()
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
google()
mavenLocal()
maven("https://packages.jetbrains.team/maven/p/kt/dev")
Expand Down
3 changes: 3 additions & 0 deletions gradle-plugins/buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ plugins {
}

repositories {
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
gradlePluginPortal()
}

Expand Down
3 changes: 3 additions & 0 deletions gradle-plugins/buildSrc/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
pluginManagement {
repositories {
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
gradlePluginPortal()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ class TestProject(
"--stacktrace",
"-Pkotlin.js.yarn=false",
"-P${ComposeProperties.VERBOSE}=${testEnvironment.composeVerbose}",
"--init-script", File("../../ci/cache-redirector.init.gradle").absolutePath,
if (testEnvironment.parsedGradleVersion < GradleVersion.version("8.0")) {
null
} else {
Expand Down
4 changes: 3 additions & 1 deletion gradle-plugins/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
pluginManagement {
repositories {
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
gradlePluginPortal()
mavenCentral()
}
}

Expand Down
6 changes: 4 additions & 2 deletions html/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -223,11 +223,13 @@ subprojects {
}

repositories {
gradlePluginPortal()
mavenCentral()
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
maven {
url = uri("https://packages.jetbrains.team/maven/p/cmp/dev")
}
gradlePluginPortal()
google()
mavenLocal()
}
Expand Down
6 changes: 4 additions & 2 deletions html/buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

repositories {
gradlePluginPortal()
mavenCentral()
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
maven {
url = uri("https://packages.jetbrains.team/maven/p/cmp/dev")
}
maven {
url = uri("https://packages.jetbrains.team/maven/p/ui/dev")
}
gradlePluginPortal()
}

plugins {
Expand Down
6 changes: 4 additions & 2 deletions html/buildSrc/settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@ pluginManagement {
val kotlinVersion: String = settings.extra["kotlin.version"] as String

repositories {
gradlePluginPortal()
mavenCentral()
mavenCentral {
url = uri("https://cache-redirector.jetbrains.com/maven-central")
}
maven {
url = uri("https://packages.jetbrains.team/maven/p/cmp/dev")
}
maven {
url = uri("https://packages.jetbrains.team/maven/p/ui/dev")
}
gradlePluginPortal()
}

resolutionStrategy {
Expand Down
Loading
Loading