Skip to content
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

Releases not being pulled by Ansible Galaxy #236

Open
mmolinac opened this issue Apr 8, 2022 · 16 comments
Open

Releases not being pulled by Ansible Galaxy #236

mmolinac opened this issue Apr 8, 2022 · 16 comments
Assignees
Labels

Comments

@mmolinac
Copy link
Contributor

mmolinac commented Apr 8, 2022

I've noticed that the last version published in Ansible Galaxy is 2.1.2.
However, according to the Contributing guidelines page, a new release on GitHub and adding a tag to the master branch is all that's required for it to work.
Looks like something else is missing, because new version 2.2.0 is tagged and it's not on Ansible Galaxy.

@mmolinac
Copy link
Contributor Author

mmolinac commented Apr 8, 2022

It could be related to tests not building on Travis CI.
I'm afraid I'm not familiar with the errors on some of the tests (CentOS).

@pkuczynski
Copy link
Member

@lpaulmp @thbar @sfgeorge any idea?

@thbar
Copy link
Contributor

thbar commented Apr 10, 2022

I looked a bit into this, just sharing initial bits at this point.

The Travis setup has been removed in #235.

It used to include this:

rvm1-ansible/.travis.yml

Lines 54 to 55 in 0fcf5f3

notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/

I have no idea if it worked or not, but it looks like an interesting suppression, which could be a cause.

Also I came across this interesting post which mentions that also.

https://www.jeffgeerling.com/blog/2020/automatically-building-and-publishing-ansible-galaxy-collections

I believe re-instating a post-release (or post something) POST over there will likely help.

I will see if I can make some time to re-instate that this week (but please anyone feel free to jump at it whenever you want if it's doable on your side).

@pkuczynski
Copy link
Member

There are plenty of gha which allows to send web hook notifications. Thing is that Ansible Galaxy seems to only support Travis at the moment: ansible/galaxy#1379

Maybe we should just mimic travis payload, as someone suggested? @sfgeorge do you wanna have a look at this or shall we wait for @thbar?

@pkuczynski
Copy link
Member

Looks like @sfgeorge already had a look into this ansible/galaxy#46 and gave up? Can you say something about it @sfgeorge ?

@pkuczynski
Copy link
Member

Some suggestions here too ansible/galaxy#2070

@sfgeorge
Copy link
Contributor

@pkuczynski I didn't start any actual legwork on it, but my comment on ansible/galaxy#46 suggests that perhaps someone write a reusable GitHub Action that uses GitHub Actions many available context variables and transforms them to make a POST to Ansible Galaxy mimic'ing a POST from Travis-CI.

Pro: Would avoid having to touch a line of code of Galaxy.
Cons: Some might consider this a kludge. (I think of it as just re-using an "API" that's already been established.)

@pkuczynski
Copy link
Member

So it looks there are couple of GHA which allows to achieve the same result: https://github.com/marketplace?type=actions&query=galaxy+

@sfgeorge would you like to tackle that as you were the original author of CI change?

@sfgeorge
Copy link
Contributor

@pkuczynski short answer – Yeah, I can definitely take a stab, will do 👍

Longer answer – Those solutions use ansible-galaxy role import ..., which to my understanding will publish the latest version of the role, but not update the build status. In truth, we should do both. I can take a stab at each.

@pkuczynski
Copy link
Member

Awesome! Thanks!

@pkuczynski
Copy link
Member

@sfgeorge any chance you can give it a shot soon?

@pkuczynski pkuczynski added the bug label May 9, 2022
@claasz
Copy link
Contributor

claasz commented May 25, 2022

For anyone wondering how to install 2.2.0 in the meantime: As a workaround you can use
$ ansible-galaxy install https://github.com/rvm/rvm1-ansible/archive/refs/tags/v2.2.0.tar.gz

@sfgeorge
Copy link
Contributor

@pkuczynski Apologies, it may be a little while before I can get to this due to other commitments.

@coldnebo
Copy link

coldnebo commented Jun 13, 2022

For anyone wondering how to install 2.2.0 in the meantime: As a workaround you can use $ ansible-galaxy install https://github.com/rvm/rvm1-ansible/archive/refs/tags/v2.2.0.tar.gz

Still an issue:

TASK [rvm.ruby : Import GPG keys from keyservers] ****************************************************************************************************
failed: [localhost] (item=hkp://pool.sks-keyservers.net) => {"ansible_loop_var": "item", "changed": false, "cmd": "gpg --batch --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB", "delta": "0:00:20.045397", "end": "2022-06-13 14:08:56.849421", "item": "hkp://pool.sks-keyservers.net", "

ok, this works:

$ cd /home/lkyrala/.ansible/roles
$ ansible-galaxy install https://github.com/rvm/rvm1-ansible/archive/refs/tags/v2.2.0.tar.gz
$ rm -rf rvm.ruby
$ mv v2.2.0 rvm.ruby

then run your playbook as usual:

$ ansible-playbook ...
...
TASK [rvm.ruby : Import GPG keys from keyservers] ****************************************************************************************************
ok: [localhost] => (item=hkp://keys.openpgp.org)
...

@mmolinac
Copy link
Contributor Author

@sfgeorge Have you been able to give a look at the publishing issue?

@sfgeorge
Copy link
Contributor

Unfortunately I haven't had time to do this. But I want to share my understanding of a few options we have for solving this problem if someone is able to take a stab.

Option 1 – ansible-galaxy import (probably easiest)

By adding a ansible-galaxy import command to the CI/CD process, we can trigger galaxy importing the latest release.

Here's an example (thank you @geerlingguy).

Option 2 – Migrate to a Collection

We could migrate this standalone galaxy role to a role in a Collection.

This would the Galaxy /v2 API as opposed to /v1. However, /v1 is by no means deprecated. There is divided opinion on whether migrating to /v2 provides any particular benefit; some folks feel like the release of /v2 was rushed and problematic.

Option 3 – Support build notifications from GitHub Actions

Sadly, Ansible Galaxy only supports build status updates from the proprietary Travis CI JSON payload schema. To my knowledge, this might be the only Option that includes getting Galaxy to accurately show a projects builds as passing/failing.

We could write a reusable GitHub Action that takes facts from a GitHub Action Job, transforms them into the proprietary format, and pushes the JSON payload to Galaxy.

ansible/galaxy#46 (comment)

Option 3 has the most features, and Option 1 is by far the simplest to implement.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants