-
Notifications
You must be signed in to change notification settings - Fork 18
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
feat: rewrite release system to support multiple images per commit #50
feat: rewrite release system to support multiple images per commit #50
Conversation
5dd4de3
to
de9d663
Compare
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
de9d663
to
1dfd5cb
Compare
Can you please help me understand the workflow here? Seems like you're promposing a tag system where we tag the same commit again with updated zephyr/sdk versions, timestamp, etc and by pushing multiple tags, we build and push those equivalent docker image tags w/ the appropriate bundled software in it? |
That's correct. As was done previously, to release a particular candidate image we take its docker tag and push an equivalent git tag to the associated commit. That then triggers the release process. Said tag can then either be left there or deleted. It's not ideal and a GitHub API (release?) trigger would probably be more appropriate, but this was the quickest solution. The key takeaway is that it lets us run regular (nightly?) builds to pick up security fixes and patches, from which we can periodically release stable versions outside the Zephyr lifecycle. Given that we've now got comprehensive integration tests (which didn't exist when I developed this PR), we may also wish to automate regular releases for security and patches, maybe the base images too. In which case the release system would become redundant. |
@petejohanson, our discussion on #development got me thinking, and I realised it was worth recording the reasoning/purpose for each field in the tag ...
In terms of ease of use:
Perhaps that sways your thoughts about which are necessary (or can be dropped?) and/or the ordering. I'm still thinking it through. |
I'm also open to shortening the |
I'm happy enough with the current approach. Candidate tags are relative shortlived and we can tweak it later if necessary. |
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
a29875f
to
4d7bb65
Compare
I guess another approach to this is to make the
... would become ...
with the option of dropping ( side note: IFAICT, the cache must be per branch to avoid potential conflicts - see #56 ) I'm not sure how I feel about this, but it's certainly another option. |
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
4d7bb65
to
62ef655
Compare
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
I've been experimenting with abbreviated SHA codes and I think I prefer them. I'll squash that in soon. |
I've also been giving some thought as to how (major.minor) This is important given the "latest" Docker tag for each branch is now the branch name. So there's potential for overlap/conflict. There's a few options to consider, some involving #17 and some not. I'm still firming up my thoughts around it. |
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
c311531
to
7b7154d
Compare
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
7b7154d
to
5e572da
Compare
@petejohanson, with #62 now concluded, how are you feeling about this PR please? |
@innovaker This all seems reasonable to me. I suppose the only question I have is do we want to have any enforcement to be sure that any tag is "compatible" with the branch that contains the commit in question that has that tag applied to it? |
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
After some discussion on Discord, it was decided to add a guard. |
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
Further discussion concluded the existing protection should be sufficient: |
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
5e572da
to
552440f
Compare
@petejohanson, I think this is ready for approval. |
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
552440f
to
ed5e02f
Compare
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
ed5e02f
to
da2b4f9
Compare
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded. This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible. Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary. PR: zmkfirmware#50
da2b4f9
to
cec3713
Compare
A critical limitation of the first design was the assumption that there would only be one Docker build per commit. As such, software packages were often only refreshed when Zephyr was upgraded.
This new design opens the door to better CI practices. It allows regular rebuilds of the Docker images irrespective of version control. This is critical for incorporating the latest security fixes and bug patches as soon as possible.
Maintainers are still required to trigger stable releases (via tags), but this can be revisited in the future if further automation is necessary.