37 lines
2.5 KiB
Markdown
37 lines
2.5 KiB
Markdown
# Docker F-Droid Build Environment
|
|
Self-contained build environment using F-Droid tools. This extends [docker-executable-fdroidserver](https://gitlab.com/fdroid/docker-executable-fdroidserver) with the latest [fdroiddata](https://gitlab.com/fdroid/fdroiddata) and the latest Android and Gradle SDKs.
|
|
|
|
The idea is to be able to add in your own app's configuration and build it with F-Droid's tooling.
|
|
|
|
See [Build Server Setup](https://f-droid.org/docs/Build_Server_Setup) on f-droid.org and [issue #370](https://gitlab.com/fdroid/fdroidserver/issues/370) on `fdroidserver` (Improve first time user experience of fdroid build).
|
|
|
|
## Building
|
|
`docker build -t fdroidbuild .`
|
|
|
|
The `fdroiddata` is placed into `/fdroiddata`.
|
|
|
|
## Try it yourself!
|
|
### Building from F-Droid Metadata
|
|
`docker run -v "$(pwd)/build:/fdroiddata/build" fdroidbuild build org.fdroid.fdroid -l`
|
|
|
|
Should produce the `org.fdroid.fdroid` apk in `build`.
|
|
|
|
### Building in Repo
|
|
If you have a file named `.fdroid.yml` or `.fdroid.json` at the root of your repository, the build will be run right out of the repo using that metadata file; see [Running `fdroid build` in your app's source](https://f-droid.org/docs/Building_Applications/#running-fdroid-build-in-your-apps-source) (note that contrary to the doc, neither `.fdroid.txt` nor `.fdroid.xml` are supported anymore; thus, this image does not look for them).
|
|
|
|
Else, if you have a directory named `fdroid` at the root of your repository, its contents will be copied over into the `/fdroiddata/metadata` directory. Additionally, the token `%REPO` in all metadata files will be replaced with the path to the repo in the container. This is so the metadata file does not need to know the exact path the repo will live at during the build.
|
|
|
|
A F-Droid metadata file is named `<appId>.txt` and [looks like this](https://gitlab.com/fdroid/fdroiddata/blob/master/templates/app-full). So, if you have such a file located at `fdroid/net.monarchpass.app.txt`, you should be able to run this:
|
|
|
|
`docker run -v "$(pwd)/build:/fdroiddata/build" -v "$(pwd):/repo" fdroidbuild build net.monarchpass.app.txt -l`
|
|
|
|
and build the latest version of that app.
|
|
|
|
## Note on Gradle versions
|
|
F-droid's build server supports multiple versions of Gradle, and [uses several methods to detect which version to use](https://gitlab.com/fdroid/fdroidserver/blob/master/buildserver/gradle), such as parsing it out of `build.gradle` or `gradle-wrapper.properties`. This image uses that same approach, but it only includes Gradle versions >= 3.0.
|
|
|
|
Gradle versions are kept in `/opt/gradle/versions`.
|
|
|
|
## License
|
|
GNU GPL v3.
|