Skip to content

[Build] Introduce 'Test Federation'#5762

Open
sellmair wants to merge 1 commit intomasterfrom
sellmair/federal-ci
Open

[Build] Introduce 'Test Federation'#5762
sellmair wants to merge 1 commit intomasterfrom
sellmair/federal-ci

Conversation

@sellmair
Copy link
Member

@sellmair sellmair commented Mar 20, 2026

OSIP-1080
The project is split into several larger 'Domains'. Commits changing files within their domains can be verified independently.

Note:
This MR will not engage the system, but allows all further owners of 'Domains' to experiment with it and annotate tests/test tasks. The rollout of a federal CI system will be gradual.

OSIP-1080
The project is split into several larger 'Domains'.
Commits changing files within their domains can be verified
independently.
@kotlin-safe-merge
Copy link

kotlin-safe-merge bot commented Mar 20, 2026

Code Owners

Rule Owners Approval
.​gitignore, **.​gradle.​kts, /​gradle/​, /​repo/​, **.​gradle kotlin-build-infrastructure, @sellmair
/​analysis/​ kotlin-analysis-api
/​libraries/​tools/​kotlin-​gradle-​plugin-​integration-​tests/​ kotlin-build-tools
/​native/​swift/​**/​*.​gradle.​kts kotlin-native
/​native/​swift/​ @glukianets, @mMaxy
/​plugins/​compose/​ @ShikaSD, @andrewbailey, @bentrengrove, @chuckjaz, @derekxu16
/​scripts/​ kotlin-build-infrastructure

import org.jetbrains.kotlin.tooling.core.withClosure
import kotlin.io.path.Path

/*
Copy link
Contributor

Choose a reason for hiding this comment

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

Copyright is duplicated in almost all files of the convention plugin.

Copy link
Member Author

@sellmair sellmair Mar 23, 2026

Choose a reason for hiding this comment

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

Oh, yes, this seems to have happened when I moved the files into a package. Thank you, done ✅

":tools:jdk-api-validator",
":wasm:wasm.ir",
":compiler:test-engine-sandbox",
":repo:test-federation-runtime"
Copy link
Contributor

Choose a reason for hiding this comment

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

Please add a trailing comma.

Copy link
Member Author

Choose a reason for hiding this comment

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

Done ✅

include:
- "libraries/tools/*gradle*/**"

Unknown:
Copy link
Contributor

Choose a reason for hiding this comment

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

Why is the "Compiler" domain is the root of the whole hierarchy, not the "Unknown"?

The current domain definition is incorrect because, for example, change in the standard library could be observed in the compiler tests, but since stdlib falls into "Unknown", "Compiler" domain would be considered unaffected.

Copy link
Member Author

Choose a reason for hiding this comment

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

Right now, the Unknown domain was declared last so that the universal glob can match any file not matched previously. It seems like the stdlib falling into 'Unknown' might not be nice. Would you like us to declare it as its own Domain instead, or would you prefer to couple 'Unknown' and the larger 'Compiler Domain' for the first test runs?

Copy link
Contributor

Choose a reason for hiding this comment

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

couple 'Unknown' and the larger 'Compiler Domain' for the first test runs?

I think this should be the way not just for the initial period, but always. Otherwise it would be quite easy to forget about updating the domains.yaml on adding new core modules to the project/refactoring existing ones and get incorrectly skipped tests.

Copy link
Member Author

Choose a reason for hiding this comment

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

Good point, lets try it out like this 👍


/**
* Files matching these 'glob' patterns will be included in this subsystem.
* - e.g., 'compiler/​**' will include all files under the 'compiler' subdirectory
Copy link
Contributor

Choose a reason for hiding this comment

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

Intellij diff shows some zero-width spaces here, can you please check?

@get:Inject
internal abstract val exec: ExecOperations

private var _diff: List<String>? = null
Copy link
Contributor

Choose a reason for hiding this comment

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

Why is this one not synchronized, and the one in AffectedDomain is?

val out = ByteArrayOutputStream()
val err = ByteArrayOutputStream()
val result = exec.exec {
commandLine("git", "diff", "--name-only", "origin/master...HEAD")
Copy link
Contributor

Choose a reason for hiding this comment

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

Shouldn't it be relative to the merge-base?

@@ -0,0 +1,2 @@
#!/bin/bash
Copy link
Contributor

Choose a reason for hiding this comment

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

What about also commiting IJ run configuration for that?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants