Document the local publish process (#1082)
This commit is contained in:
Родитель
d7371b1865
Коммит
20de7e472d
|
@ -0,0 +1,118 @@
|
|||
# Using locally-published components in Fenix
|
||||
|
||||
Note: This is a bit tedious, so feel free to ask in slack if there's a better
|
||||
way to test things. At the moment substitution is broken, so this is necessary
|
||||
in more cases than we'd like.
|
||||
|
||||
Note 2: This is fenix-specific only in that some links on the page go to the
|
||||
`mozilla-mobile/fenix` repository, and that I'm describing `fenix`, however
|
||||
these steps should work for e.g. `reference-browser`, as well. (Same goes for
|
||||
lockwise, or any other consumer of our components, but they may use a different
|
||||
structure -- lockwise has no Dependencies.kt, for example)
|
||||
|
||||
1. If you've added a new project to the megazord:
|
||||
1. In the gradle plugin's [`AppServicesExtension.kt`](AppServicesExtension),
|
||||
add the new component to the relevant megazord. Note: you may have
|
||||
already done this.
|
||||
2. In the gradle plugin's [`build.gradle`](plugin-build-gradle), change
|
||||
`ext.plugin_version` to end with `-TESTING$N`
|
||||
<sup><a href="#note1">1</a></sup> where `$N` is some number
|
||||
that you haven't used for this before.
|
||||
|
||||
Example: `ext.plugin_version = '0.4.4-TESTING3'`
|
||||
3. Inside the `gradle-plugin` directory run `./gradlew publishToMavenLocal`.
|
||||
|
||||
It's important that you do this from inside the plugin's directory,
|
||||
e.g. cwd must be `path/to/application-services/gradle-plugin`!
|
||||
|
||||
2. Inside the `application-services` repository root:
|
||||
1. In [`.buildconfig-android.yml`](app-services-yaml), change
|
||||
`libraryVersion` to end in `-TESTING$N` <sup><a href="#note1">1</a></sup>,
|
||||
where `$N` is some number that you haven't used for this before.
|
||||
|
||||
Example: `libraryVersion: 0.27.0-TESTING3`
|
||||
2. Check your `local.properties` file, and add `rust.targets=x86` if you're
|
||||
testing on the emulator, `rust.targets=arm` if you're testing on 32-bit
|
||||
arm (arm64 for 64-bit arm, etc). This will make the build that's done in
|
||||
the next step much faster.
|
||||
3. Run `./gradlew publishToMavenLocal`. This may take between 5 and 10 minutes.
|
||||
|
||||
3. Inside the `android-components` repository root:
|
||||
1. In [`.buildconfig.yml`](android-components-yaml), change
|
||||
`componentsVersion` to end in `-TESTING$N` <sup><a href="#note1">1</a></sup>,
|
||||
where `$N` is some number that you haven't used for this before.
|
||||
|
||||
Example: `componentsVersion: 0.51.0-TESTING3`
|
||||
2. Inside [`buildSrc/src/main/java/Dependencies.kt`](android-components-deps),
|
||||
change `mozilla_appservices` to reference the `libraryVersion` you
|
||||
published in step 2 part 1.
|
||||
|
||||
Example: `const val mozilla_appservices = "0.27.0-TESTING3"`
|
||||
|
||||
3. Inside [`build.gradle`](android-components-build-gradle), add
|
||||
`mavenLocal()` inside `allprojects { repositories { <here> } }`.
|
||||
|
||||
4. Inside the android-component's `local.properties` file, ensure
|
||||
`substitutions.application-services.dir` is *NOT* set.
|
||||
|
||||
5. Run `./gradlew publishToMavenLocal`.
|
||||
|
||||
4. Inside the `fenix` repository root:
|
||||
1. Inside [`build.gradle`](fenix-build-gradle-1), add
|
||||
`mavenLocal()` inside `allprojects { repositories { <here> } }`.
|
||||
1. If you added a new project to the megazord (e.g. you went through the
|
||||
parts of step 1) you must also add `mavenLocal()` to
|
||||
[`buildscript { ... dependencies { <here> }}`](fenix-build-gradle-2)
|
||||
|
||||
2. Inside fenix's `local.properties` file, ensure
|
||||
`substitutions.application-services.dir` is *NOT* set.
|
||||
|
||||
3. Inside [`buildSrc/src/main/java/Dependencies.kt`](fenix-deps), change
|
||||
`mozilla_android_components` to the version you defined in step 3 part 1.
|
||||
|
||||
Example: `const val mozilla_android_components = "0.51.0-TESTING3"`
|
||||
1. If you added a new project to the megazord (e.g. you went through the
|
||||
parts of step 1) you must also change `appservices_gradle_plugin` to
|
||||
the version you defined in step 1 part 1.
|
||||
|
||||
Example: `const val appservices_gradle_plugin = "0.4.4-TESTING3"`
|
||||
2. If there are any direct dependencies on application services (at the
|
||||
moment there are not, but there have been in the past and may be in
|
||||
the future), change it's version here to the one defined in step 2
|
||||
part 1.
|
||||
|
||||
You should now be able to build and run fenix (assuming you could before all
|
||||
this).
|
||||
|
||||
## Caveats
|
||||
|
||||
1. This assumes you have followed the [android/rust build setup](./setup-android-build-environment.md)
|
||||
2. Make sure you're fully up to date in all repos, unless you know you need to
|
||||
not be.
|
||||
3. This omits the steps if changes needed because, e.g. application-services
|
||||
made a breaking change to an API used in android-components. These should be
|
||||
understandable to fix, you usually should be able to find a PR with the fixes
|
||||
somewhere in the android-component's list of pending PRs (or, failing that, a
|
||||
description of what to do in the application-services changelog).
|
||||
4. Ask in #rust-components slack (or #sync on mozilla IRC if you are an
|
||||
especially brave external contributor) if you get stuck.
|
||||
|
||||
---
|
||||
|
||||
<b id="note1">[1]</b>: It doesn't have to start with `-TESTING`, it only needs
|
||||
to have the format `-someidentifier`. `-SNAPSHOT$N` is also very common to use,
|
||||
however without the numeric suffix, this has specific meaning to gradle, so we
|
||||
avoid it. Additionally, while the `$N` we have used in our running example has
|
||||
matched (e.g. all of the identifiers ended in `-TESTING3`, this is not required,
|
||||
so long as you match everything up correctly at the end. This can be tricky, so
|
||||
I always try to use the same number).
|
||||
|
||||
[AppServicesExtension]: https://github.com/mozilla/application-services/blob/594f4e3f6c190bc5a6732f64afc573c09020038a/gradle-plugin/src/main/kotlin/mozilla/appservices/AppServicesExtension.kt#L21-L55
|
||||
[plugin-build-gradle]: https://github.com/mozilla/application-services/blob/594f4e3f6c190bc5a6732f64afc573c09020038a/gradle-plugin/build.gradle#L3
|
||||
[app-services-yaml]: https://github.com/mozilla/application-services/blob/594f4e3f6c190bc5a6732f64afc573c09020038a/.buildconfig-android.yml#L1
|
||||
[android-components-yaml]: https://github.com/mozilla-mobile/android-components/blob/b98206cf8de818499bdc87c00de942a41f8aa2fb/.buildconfig.yml#L1
|
||||
[android-components-deps]: https://github.com/mozilla-mobile/android-components/blob/b98206cf8de818499bdc87c00de942a41f8aa2fb/buildSrc/src/main/java/Dependencies.kt#L37
|
||||
[android-components-build-gradle]: https://github.com/mozilla-mobile/android-components/blob/b98206cf8de818499bdc87c00de942a41f8aa2fb/build.gradle#L28
|
||||
[fenix-build-gradle-1]: https://github.com/mozilla-mobile/fenix/blob/f897c2e295cd1b97d4024c7a9cb45dceb7a2fa89/build.gradle#L26
|
||||
[fenix-build-gradle-2]: https://github.com/mozilla-mobile/fenix/blob/f897c2e295cd1b97d4024c7a9cb45dceb7a2fa89/build.gradle#L6
|
||||
[fenix-deps]: https://github.com/mozilla-mobile/fenix/blob/f897c2e295cd1b97d4024c7a9cb45dceb7a2fa89/buildSrc/src/main/java/Dependencies.kt#L28
|
Загрузка…
Ссылка в новой задаче