Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
An improved workflow for maintaining Salt #96
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
base: master
Are you sure you want to change the base?
An improved workflow for maintaining Salt #96
Changes from all commits
a8616ca
b8bc52b
69aa9fe
350a21f
c81cd74
c342ef2
1abc6b0
85f3e08
a8448c9
ae926f9
a01c6ab
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Won't this cause a lot of merge conflicts?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are we also merging the changelog like we do in Uyuni or do we need to resolve merge conflicts manually?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be now clarified on the RFC text
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can't find it, can you help me out with the line number or a link? With the list of "backported PRs" in the spec file, we might hit this issue in two places.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Something is unclear about the workflow to me. You write that we use
systemsmanagement:saltstack:github/salt
as the devel project. Does that mean the changes go "Github" ->systemsmanagement:saltstack:github/salt
->systemsmanagement:saltstack/salt
->openSUSE:Factory
? What exactly is this Jenkins job doing?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, that's correct. Essentially:
systemsmanagement:saltstack:github/salt
-> services must be enabled here in order to automatically gets the changes from the corresponding GitHub branch, therefore we cannot use this source to submit toFactory
(services MUST be disabled when submitting). (poc example: https://build.opensuse.org/package/show/home:PSuarezHernandez:tests:github/salt)systemsmanagement:saltstack/salt
-> this is expected to contain same codebase as the above package but in a way that is "ready-to-be-submitted". This means, with the services disabled, and containing the actual spec file, changelog and obsinfo/obscpio files. (poc example: https://build.opensuse.org/package/show/home:PSuarezHernandez:tests/salt)The jenkins jobs takes care of automatically pushing any new change that is added to
systemsmanagement:saltstack:github/salt
via OBS services to the package "ready-to-be-submitted" package atsystemsmanagement:saltstack/salt
. It disables the services by adjusting the_service
, then it manually runs the services to get the spec file, changelog and obsinfo/obscpio files. So after Jenkins runs, the package atsystemsmanagement:saltstack/salt
contains the same codebase than the:github
package and it is ready to be submitted, i.a. toopenSUSE:Factory
or Maintenance.I'll try to clarify this better on the RFC text.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This has been part of the other RFC, but for me it's still not so clear that we can have "builtin extensions". How do we publish these to PyPI from the main repository? How do we get them to show up on https://extensions.saltproject.io/?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These "builtin extensions" I introduced it as an optional way for us to be able to provide extensions that do not have yet a proper Salt Extension package.
This could happen for example in these cases:
might not be necessary but it is an option we have.
Builtin extenions would reduce, if necessary, the number of Salt Extensions packages we want to deal with.
It would be up to us to decide whether we want to have any builtin extensions or we just go with all needed extensions as separeted packages if they are already migrated to Salt Extensions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the other RFC, the list of built-in extension includes
zypperpkg
andtransactional_update
. These are extensions we want to maintain, i.e. we will need to publish them on PyPI. What's the workflow for maintaining these built-in extensions? Do we have the same rules wrt. pull requests and what they have to contain? How do we publish them to PyPI? What's the plan here?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So if I get one single github and OBS projects, which will produce one package per each extension. Will this produce/require a big spec file?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The spec file will be bigger than an if each package is isolated, but it won't be that big actually:
You can see how the spec file looks for 2 packages extensions (mysql and prometheus) here:
https://build.opensuse.org/projects/home:PSuarezHernandez:tests/packages/salt-extensions/files/salt-extensions.spec?expand=1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, looks fine. But it has a high risk of growing a lot, depending on the number of extensions being packaged.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To me this looks harder to maintain over time than separate packages. With
py2pack
, it's pretty easy to create new Python packages. Maybe we can it to create new rpms for Salt extensions?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The current approach uses a combination of Jenkins and the OBS<>Github integration, but we still rely on Jenkins as you point out in #Drawbacks. Do we win much by this setup? I wonder if a setup that does not use OBS' SCM/CI Github integration, one that just relies on Jenkins for triggering new builds, would be simpler (as in fewer moving parts). Long term,
scmsync
might be the way to go.