conan-io / conan

Conan - The open-source C and C++ package manager
https://conan.io
MIT License
8.31k stars 986 forks source link

GitHub action to integrate with winget-release upon releaser #17153

Open assarbad opened 1 month ago

assarbad commented 1 month ago

Changelog: (Feature | Fix | Bugfix): Describe here your pull request Docs: https://github.com/conan-io/docs/pull/XXXX

CLAassistant commented 1 month ago

CLA assistant check
All committers have signed the CLA.

assarbad commented 1 month ago

Hi folks, still preparing this. Same person as #16979, but this is my account outside of work. I also did a few of the PRs to bring the winget-pkgs manifest for Conan up-to-date (latest microsoft/winget-pkgs#179052).

This PR will require some assistance and preparation by at least one project member to get the GitHub action going.

FWIW the process I outlined for another project windirstat/issues#88 is probably applicable here as well. But since the existing manifest seems much closer to what Komac expects, I expect less problems here.

I will try this out via my own fork, creating one (or a few) PRs with a fake (re-release) of the 2.8.0 Windows installers. No worries, I'll close the PRs almost immediately. Having contributed to microsoft/winget-pkgs before, I am confident that none of these test PRs would go through accidentally.

PS: Could one of you — @czoido or @memsharded — provide guidance please. It feels like several of those checkboxes above don't exactly apply for a PR like this one.

memsharded commented 1 month ago

Hi @assarbad

Thanks for your contribution.

We are at this moment exploring the possibility to move our Conan client CI to GH actions. If this action helps improving the automation for winget, that would be a good addition, but it would be important that this wouldn't cause any disruptions or blockage to the Conan releases if something goes wrong in this action, and also to consider possible future maintenance cost. From the code, it seems the action is pretty simple, but just to make sure about possible future issues.

In any case, I'd prefer to wait a bit until we move the main CI to GH actions (if it happens, still evaluating), we get a bit more used to them, and resume this one from there. I think that one or two releases once we move to CI with GH actions would be good to continue with this.

Thanks very much!

assarbad commented 1 month ago

We are at this moment exploring the possibility to move our Conan client CI to GH actions. If this action helps improving the automation for winget, that would be a good addition, but it would be important that this wouldn't cause any disruptions or blockage to the Conan releases if something goes wrong in this action, and also to consider possible future maintenance cost. From the code, it seems the action is pretty simple, but just to make sure about possible future issues.

@memsharded Understood. So to the best of my knowledge here is how it works (some further findings about Komac and winget-releaser are documented in windirstat/windirstat#88).

There is something along the lines of continue-on-error for GitHub actions, if you wanted to make sure. But I think each action stands alone. So when this action triggers it'll be run but failure should not affect other actions unless you somehow establish a dependency chain (don't know how you'd do that, btw).

In any case, I'd prefer to wait a bit until we move the main CI to GH actions (if it happens, still evaluating), we get a bit more used to them, and resume this one from there. I think that one or two releases once we move to CI with GH actions would be good to continue with this.

Perfectly fine with me. I have figured it out enough so that I can invoke Komac manually to do the same deed the above action would, so creating an updated manifest is no longer a manual process for me.

In fact, so could you. Here's the command line for a hypothetical version 2.8.1, in case you stick to the same tag and file name conventions:

$ komac update JFrog.Conan --version 2.8.1 --urls https://github.com/conan-io/conan/releases/download/2.8.1/conan-2.8.1-windows-i686-installer.exe https://github.com/conan-io/conan/releases/download/2.8.1/conan-2.8.1-windows-x86_64-installer.exe

It's trivial to adapt this for subsequent releases.

One caveat: should you ever desire to use an alternative tag naming convention where the tag name contains a leading v or other parts that aren't exactly the version, let me know and I'll try to adapt it. For WinDirStat I just finished it so that we can distinguish beta/... from release/... tags and thereby have two distinct actions for updating a separate .Beta manifest in winget-pkgs.