Skip to content

Commit 34832d3

Browse files
committed
assemble tasks
1 parent 758fc5b commit 34832d3

File tree

2 files changed

+119
-32
lines changed

2 files changed

+119
-32
lines changed

.github/workflows/dataconnect.yml

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ env:
2424
FDC_ANDROID_EMULATOR_API_LEVEL: ${{ inputs.androidEmulatorApiLevel || '34' }}
2525
FDC_NODEJS_VERSION: ${{ inputs.nodeJsVersion || '20' }}
2626
FDC_FIREBASE_TOOLS_VERSION: ${{ inputs.firebaseToolsVersion || '13.29.1' }}
27-
FDC_FIREBASE_TOOLS_DIR: /tmp/firebase-tools
28-
FDC_FIREBASE_COMMAND: /tmp/firebase-tools/node_modules/.bin/firebase
27+
FDC_FIREBASE_COMMAND: firebase-dataconnect/ci/build/firebase-tools/node_modules/.bin/firebase
2928

3029
concurrency:
3130
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
@@ -50,6 +49,11 @@ jobs:
5049
- 5432:5432
5150

5251
steps:
52+
- name: Set environment variables
53+
run: |
54+
echo "ORG_GRADLE_PROJECT_firebaseToolsVersion=$FDC_FIREBASE_TOOLS_VERSION" >>"$GITHUB_ENV"
55+
echo "ORG_GRADLE_PROJECT_debugLoggingEnabled=${{ runner.debug || '0' }}" >>"$GITHUB_ENV"
56+
5357
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
5458
with:
5559
show-progress: false
@@ -63,16 +67,8 @@ jobs:
6367
with:
6468
node-version: ${{ env.FDC_NODEJS_VERSION }}
6569

66-
- run: |
67-
sudo apt install zsh
68-
/bin/zsh --version
69-
7070
- name: Install Firebase Tools ("firebase" command-line tool)
71-
run: |
72-
./firebase-dataconnect/ci.zsh \
73-
install_firebase_tools \
74-
-install_dir '${{ env.FDC_FIREBASE_TOOLS_DIR }}' \
75-
-firebase_tools_version '${{ env.FDC_FIREBASE_TOOLS_VERSION }}'
71+
run: ./gradlew -P firebase-dataconnect/ci installFirebaseTools
7672

7773
- name: Restore Gradle Cache
7874
id: restore-gradle-cache
@@ -88,16 +84,10 @@ jobs:
8884
8985
- name: Print Command-Line Tool Versions
9086
continue-on-error: true
91-
run: |
92-
./firebase-dataconnect/ci.zsh \
93-
print_tool_versions \
94-
-firebase_command '${{ env.FDC_FIREBASE_COMMAND }}'
87+
run: ./gradlew -P firebase-dataconnect/ci printToolVersions
9588

9689
- name: Gradle assembleDebugAndroidTest
97-
run: |
98-
./firebase-dataconnect/ci.zsh \
99-
gradle_assemble \
100-
${{ (runner.debug == '1' && '--info') || '' }}
90+
run: ./gradlew -P firebase-dataconnect/ci buildIntegrationTests
10191

10292
- name: Save Gradle Cache
10393
uses: actions/cache/save@d4323d4df104b026a6aa633fdb11d772146be0bf # 4.2.2
@@ -176,8 +166,7 @@ jobs:
176166
force-avd-creation: false
177167
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
178168
disable-animations: true
179-
script: |
180-
./firebase-dataconnect/ci.zsh gradle_connected_check ${{ (runner.debug == '1' && '--info') || '' }}
169+
script: ./gradlew -P firebase-dataconnect/ci runIntegrationTests
181170

182171
- name: Upload Log Files
183172
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1

firebase-dataconnect/ci/build.gradle.kts

Lines changed: 109 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ abstract class PrintToolVersions : DefaultTask() {
7979
@TaskAction
8080
fun execute() {
8181
val firebaseExecutable: File = firebaseExecutable.get().asFile
82-
val gradlewFile: File = gradlewExecutable.get().asFile
82+
val gradlewExecutable: File = gradlewExecutable.get().asFile
8383

8484
runCommandIgnoringExitCode("uname", "-a")
8585
runCommandIgnoringExitCode("which", "java")
@@ -89,7 +89,7 @@ abstract class PrintToolVersions : DefaultTask() {
8989
runCommandIgnoringExitCode("which", "node")
9090
runCommandIgnoringExitCode("node", "--version")
9191
runCommandIgnoringExitCode(firebaseExecutable.path, "--version")
92-
runCommandIgnoringExitCode(gradlewFile.path, "--version")
92+
runCommandIgnoringExitCode(gradlewExecutable.path, "--version")
9393
}
9494

9595
private fun runCommandIgnoringExitCode(vararg args: String) {
@@ -123,6 +123,70 @@ abstract class PrintToolVersions : DefaultTask() {
123123
}
124124
}
125125

126+
abstract class BaseGradleTask(@get:Internal val gradleTasks: List<String>) : DefaultTask() {
127+
128+
@get:Internal abstract val gradleInfoLogsEnabled: Property<Boolean>
129+
130+
@get:Input abstract val gradleWorkingDir: Property<File>
131+
132+
@get:InputFile abstract val gradlewExecutable: RegularFileProperty
133+
134+
@get:Inject abstract val execOperations: ExecOperations
135+
136+
fun initializeProperties(
137+
gradleWorkingDir: Provider<Directory>,
138+
gradlewExecutable: Provider<RegularFile>,
139+
gradleInfoLogsEnabled: Provider<Boolean>,
140+
) {
141+
this.gradleWorkingDir.set(gradleWorkingDir.map { it.asFile })
142+
this.gradlewExecutable.set(gradlewExecutable)
143+
this.gradleInfoLogsEnabled.set(gradleInfoLogsEnabled)
144+
}
145+
146+
@TaskAction
147+
fun execute() {
148+
val gradleWorkingDir: File = gradleWorkingDir.get()
149+
val gradlewExecutable: File = gradlewExecutable.get().asFile
150+
val gradleInfoLogsEnabled: Boolean = gradleInfoLogsEnabled.get()
151+
152+
val gradleArgs = buildList {
153+
add(gradlewExecutable.path)
154+
if (gradleInfoLogsEnabled) {
155+
add("--info")
156+
}
157+
add("--profile")
158+
add("--configure-on-demand")
159+
addAll(gradleTasks)
160+
}
161+
162+
execOperations.exec {
163+
workingDir = gradleWorkingDir
164+
commandLine(gradleArgs)
165+
logger.lifecycle("Running command in directory $workingDir: ${commandLine.joinToString(" ")}")
166+
}
167+
}
168+
}
169+
170+
abstract class BuildDataConnectIntegrationTests : BaseGradleTask(assembleTasks) {
171+
companion object {
172+
val assembleTasks =
173+
listOf(
174+
":firebase-dataconnect:assembleDebugAndroidTest",
175+
":firebase-dataconnect:connectors:assembleDebugAndroidTest",
176+
)
177+
}
178+
}
179+
180+
abstract class RunDataConnectIntegrationTests : BaseGradleTask(connectedCheckTasks) {
181+
companion object {
182+
val connectedCheckTasks =
183+
listOf(
184+
":firebase-dataconnect:connectedCheck",
185+
":firebase-dataconnect:connectors:connectedCheck",
186+
)
187+
}
188+
}
189+
126190
fun ProviderFactory.requiredGradleProperty(propertyName: String) =
127191
gradleProperty(propertyName)
128192
.orElse(
@@ -150,13 +214,47 @@ val installFirebaseToolsTask =
150214
)
151215
}
152216

153-
val printToolVersionsTask =
154-
tasks.register<PrintToolVersions>("printToolVersions") {
155-
group = ciTaskGroup
156-
description = "Print versions of notable command-line tools"
157-
val gradlewExecutable = layout.projectDirectory.file("../../gradlew")
158-
initializeProperties(
159-
firebaseExecutable = installFirebaseToolsTask.flatMap { it.firebaseExecutable },
160-
gradlewExecutable = providers.provider { gradlewExecutable },
161-
)
217+
val gradleWorkingDirProvider = providers.provider { layout.projectDirectory.dir("../..") }
218+
219+
val gradlewExecutableProvider = providers.provider { layout.projectDirectory.file("../../gradlew") }
220+
221+
val gradlewInfoLogsEnabledProvider =
222+
providers.requiredGradleProperty("debugLoggingEnabled").map {
223+
when (it) {
224+
"1" -> true
225+
"0" -> false
226+
else ->
227+
throw IllegalArgumentException(
228+
"invalid value for debugLoggingEnabled property: $it (must be either 0 or 1)"
229+
)
230+
}
162231
}
232+
233+
tasks.register<PrintToolVersions>("printToolVersions") {
234+
group = ciTaskGroup
235+
description = "Print versions of notable command-line tools"
236+
initializeProperties(
237+
firebaseExecutable = installFirebaseToolsTask.flatMap { it.firebaseExecutable },
238+
gradlewExecutable = gradlewExecutableProvider,
239+
)
240+
}
241+
242+
tasks.register<BuildDataConnectIntegrationTests>("buildIntegrationTests") {
243+
group = ciTaskGroup
244+
description = "Build the Data Connect integration tests"
245+
initializeProperties(
246+
gradleWorkingDir = gradleWorkingDirProvider,
247+
gradlewExecutable = gradlewExecutableProvider,
248+
gradleInfoLogsEnabled = gradlewInfoLogsEnabledProvider,
249+
)
250+
}
251+
252+
tasks.register<RunDataConnectIntegrationTests>("runIntegrationTests") {
253+
group = ciTaskGroup
254+
description = "Run the Data Connect integration tests"
255+
initializeProperties(
256+
gradleWorkingDir = gradleWorkingDirProvider,
257+
gradlewExecutable = gradlewExecutableProvider,
258+
gradleInfoLogsEnabled = gradlewInfoLogsEnabledProvider,
259+
)
260+
}

0 commit comments

Comments
 (0)