-
-
Notifications
You must be signed in to change notification settings - Fork 64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add TeamCity CI config files #203
base: master
Are you sure you want to change the base?
Conversation
This also includes |
I appreciate that some sort of modern automation tool could potentially bring AsteroidOS a lot of benefits and thanks for looking into this! However, I have concerns about how things are done here. First of all, you never stated clearly what your goals were. What are you trying to achieve, exactly ? For example: if the goal is to verify that pull requests don't cause regressions before they are merged, then the CI system should really build all of asteroid-image, not just the part that got modified (otherwise it wouldn't catch things that depended on it and broke). Alternatively, if your goal is to distribute a sstate cache on asteroidos.org, we already have a super dumb cron script that builds asteroid for all watches and updates https://release.asteroidos.org/nightlies why couldn't this be trivially extended to share its sstate ? If your goal is to rebuild asteroid as soon as something is pushed, why isn't that enough to just build it once a day ? If you'd clarify what you're trying to achieve, it would make the technical tradeoffs much more apparent and make our lives as maintainers considerably easier. Then, it's fairly obvious that you spent a lot of time working on the implementation of all of this and we appreciate the effort. However, it does not seem like any of your big design decisions were discussed or documented anywhere ? For example, why TeamCity and not something else ? Maybe you had excellent reasons to choose it but from our perspective as maintainers we just get a giant commit full of xml files which are virtually impossible to review to configure a random tool we never heard of. We won't merge this unless you can make a really strong case for it (as opposed to something simpler). Also consider this situation which already happened in the past: someone contributed Jenkins configs without documentation or assistance and moved on with their life: https://github.com/AsteroidOS/jenkins-job-builds because no maintainers were onboarded to it so this just rotted in a dark corner. I fear that history is repeating itself here with whatever is the latest trendy tool. One of the questions I would like to see answered for example is: why rebuild something from scratch instead of reviving the old jenkins automation ? Also, the changes required by this automation seem fairly intrusive. You originally proposed splitting a Yocto layer (although that seems to no longer be the case) or changing our commit policy. All of these big changes deserve discussions and as long as we won't have a clear picture of what you're trying to achieve and why this way we won't be merging this. Anyway, bear with us, I'm sure your contributions could be very useful so don't loose sight of your goals. I'm just dubious that the current implementation is the best way to get there. ;) |
Just a heads up, I can't respond to the comments until next week due to conference, but please remind me around that time. Overall Otherwise, the structural changes, job workflow and comment structure are applicable to any CI tool. I'll walk through the ideas here when I get back. |
@FlorentRevest I am almost back in a stable schedule, so let me address some of your issues:
As for the specific issues:
There are 2 goals: To confirm that PR builds are buildable outside the dev's personal environment; and to periodically rebuild the dev environment from scratch to confirm that newcommers will be able to do the same builds themselves. With a CI as opposed to a cron job, we have more finer details on where things go wrong, and we can track specific upstream third-party repos. This PR also includes the
Indeed we still need to discuss this, and I am fully open to switching to different environment, but here are the reason for my choice of teamcity:
Of course it's not a perfect solution:
The only other CI solution I have looked at is
This is always a risk, so I want to document as much of my journey as possible, at the very least in
Yes, I got a better understanding of Yocto, and just meta-asteroid#89 is sufficient for this. As for the commit policy, these are not requirements, just suggestions for the core team if they want some finer control of the CI tool. Certainly I will not want external contributors to follow those, so I tried to make the build as flexible as possible. The format itself still needs to be discussed, and I will appreciate any help with the Regex part of it. Anyway, sorry for the wall of text, so let's split up our discussions in smaller sections in |
Made a drastic simplification to the teamcity CI by switching to a Kotlin settings file. The configurations still need a bit of work to get it to build, but I'll work on documenting the Edit: I will start putting it in production on my side, and I am up for a new round of discussion. |
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
Reserving the top comment to add notes on the usage of the CI