Reason for awx collection locaton

All, I was wondering why the AWX collection lives in a folder under the AWX repo rather then being its own repo under the Ansible project GitHub? I maintain the ansible-collection-awx-awx for the fedora project and I find it odd that the collection is not it’s own git repo? Any insight into this would be greatly appreciated.

5 Likes

+1 … cc @TheRealHaoLiu @shanemcd @AlanCoding … thoughts?

1 Like

FYI, we’d like people to get used to using the group-mentions, as it means people can go on holiday or be busy without worrying :stuck_out_tongue:

(Of course, if you specifically need those 3 folks to look rather than anyone in AWX, then you can tell me off and I’ll go away, I’m just here to set some new norms)

2 Likes

@AWX would be the correct one awx tag as well.

I think that part of it is, that the development, testing, and so much more is intertwined with the product, but I also have advocated for its seperation in the past, However that was more about quicker release cadence for ansible.controller, and they have increased the releases on awx.awx to monthly.

1 Like

One of the ideas I had when proposing this topic is this would help release non redundant RPMs and Galaxy releases, and it would allow the awx collection to follow the Ansible Collection Packaging Guidelines a bit better if we are just concerned with the collection. However i do recognize that this is a quality of life improvement more than anything

5 Likes

I think a lot of this stems from testing and how we have coupled things like testing in the past @aheath1992 thanks for opening this here as well to get others folks thoughts (issue found here: Split AWX collections into its own repo from AWX · Issue #14438 · ansible/awx · GitHub)

I think with the merging of upstream awx collection integration tests, this effort might be less likely just because that work was a big lift for the folks that did that work.

I do think we could potentially look at mitigating parts of redundancy with adding something to our release process that is something like “are there collection changes? cut release if changes, no cut if no changes are present”.

A lot of this hinges I think on how the project and the collection are developed today, it is very much hand in hand which lends itself to cut release no matter what, even if it wasn’t touched. I would like to see things change but how and when I can’t comment.

I think starting this is the right course of action so kudos for doing this.

3 Likes

In my opinion, it shouldn’t be hard to run the collection tests against the devel branch of AWX in its own CI. Of course it involves checking out the other repo, but the problem is more of a philosophical one. We run the collection integration tests against unrelated patches to the main server code. I’m internally conflicted on that.

If we split the collection, and if we didn’t run integration testing with the collection on AWX PRs, then we should certainly have a schedule (daily?) to check that tests are passing periodically in the collection repo, so we get notified after-the-fact of breakage from server changes.

The much bigger problem here is the schema completeness for the collection. This assures that any new fields added to the API are also added to the collection. You obviously have to run this against AWX PRs. That’s the entire point. So that would involve checking out the collection… but how would you fix the errors? You couldn’t.

You can see our CLI is an OPTIONS-based tool. The collection couldn’t be, but the completeness check is an alternative to assure we keep the collection and the server in sync.

5 Likes

I did not write those guidelines in a way that mandates upstream repositories to be structured in a specific way, but yeah, the examples do assume the “standard” layout for collection repositories.

From what @AlanCoding says, It does seem that the AWX collection has a good reason for being tied together like this. FWIW, there are 4 collections (that we know of) in the ansible package that store the collection’s code in a subdirectory of the upstream git repository (search for collection-directory: in https://github.com/ansible-community/ansible-build-data/blob/main/9/collection-meta.yaml), so it’s certainly not the only one doing this.

5 Likes

oooo, good call out! thank you … group mentions FTW :+1:

1 Like