[Android] JulianXhokaxhiu:
Lineage CICD Project

This is my personal effort given to you, the community, which spends a lot of hours to craft a fully-functional and perfectly tuned ROM for our beloved Smartphones!
​

What is it?

This project aims to provide a Build system for Android Developers which will be able to build an Android ROM for a different set of Codenames given, automatically for you, ( by default ) every night. Not only built stock sources that are already available on LineageOS Github account, but feel free to build even your custom code thanks to the support of local_manifests/*.xml fully supported by this Docker.

Where can I find it

CICD

- Github: https://github.com/julianxhokaxhiu/docker-lineage-cicd

- Docker Hub: https://hub.docker.com/r/julianxhokaxhiu/docker-lineage-cicd/

OTA

- GIthub: https://github.com/julianxhokaxhiu/LineageOTA

- Docker Hub: https://hub.docker.com/r/julianxhokaxhiu/lineageota/

- XDA: https://xdaforums.com/showthread.php?t=2636334

Why?

As you all remember the transition from CyanogenMod to LineageOS was not smooth. Even today we are not granted with Nightly Builds, but with Weekly, because of capacity issues on providing such an amazing plethora of supported Devices ROM ZIPs ready to be flashed.

Therefore this projects aims on providing an easy-to-use build system which may help you on providing a Ready-To-Flash ZIP at the end of each Build round.

How does it work?

This is a pre-packaged Docker system based on Debian, with all the dependencies in place to correctly build ( even in an optimized way ) any LineageOS codename ROM. A cronjob will take care to start the build script on the configured time ( by default 10:00 UTC ~= 02:00 PDT ), which then will take care to build every codename given with an environment variable to the Docker.

All you need from now on is just the Docker Engine installed on your favourite Linux distribution.

Bonus!

Of course the ZIP that will be produced needs to be transferred to the device in order to flash it. Such a boring task...what if we can automate it through OTA? :)

As you all know, my first big project I've ever started for XDA was the OTA Server which perfectly emulates all the required calls to make it working with ( old and deprecated now ) CyanogenMod ROMS, as well as with ( long life to ) LineageOS, right now, today!

All you need to do is to configure an Environment variable in the Docker to say where your OTA Server is located. The URL will the be added automatically for you inside the build.prop file as cm.updater.uri=$OTA_URL.

...but wait, there is more!

Since the OTA Server is written in PHP, you all know that is a headache to prepare the system to make it working. A lot of user complained in the original Thread that was difficult for them to understand how to setup it correctly, therefore a fully working autonomous Docker is there for you, ready to serve the OTA Layer for you built ROMs!

I want to use it right now!

I am pretty sure you want! The Docker has now been tested for a nearly a Month and I'm successfully installing my own builds for a couple of weeks on my devices ( really a great satisfaction! ).

If you want to run it as well, I suggest you to take a look at this Bash script that will run for you the Dockers, already talking to each other. Since the script has been studied to work on top of the "VPS Powered By Docker" project, I suggest you to take a look at it. Although nothing is preventing you to use it in your favourite way.

Requirements

See the detailed list on the project README.

What about License

All my projects are always developed with MIT license, which means feel free to do what you want with it. I don't really care if you do business with it, it was a great challenge for me reaching this autonomous entity to run, therefore I don't mind of possible outcomes of it. Although Issues are always welcome for improvements, if any found, of suggestion for a possible feature enhancements.

Future plans?

At the moment I have some ideas, which I may, or may not, be able to implement as I am not a professional Android Developer. Although some nice to have points are:

- Possibility to build ANY Android distro ( from AOSP to any fork of it )

- Possibility to have changelogs of every nightly build ( attached as *.txt and *.html format, next to the built ROM )

- Maybe a logo?