tauri-apps / tauri-action

Build your Web application as a Tauri binary for macOS, Linux and Windows
https://tauri.app
MIT License
938 stars 153 forks source link

Option to change base URL in latest.json #885

Open betamos opened 3 months ago

betamos commented 3 months ago

I use a private Github repo for my app and want to host the binaries outside of Github (in my case Cloudflare R2).

I currently:

Currently, the generated latest.json file contains github URLs for the releases. I would like it to point to my host's path ( etc) instead (note this includes the version).

However, I am open to other options. Perhaps I should be not be using static files at all. Or perhaps, there should be an option to upload to S3-compatible stores instead of Github. Feel free to suggest something better.

FabianLars commented 3 months ago

Thanks for your request! Since uploading to other targets than github is currently considered out of scope for this action i will mark this as wontfix for now.

I'd love to write the latest.json file into the job output like the build artifacts but that's not possible with how the file is (currently) getting generated. 🤔

Edit: Hmm, maybe providing a (potentionally undocumented) option for a base url wouldn't be too bad. Should be simple enough.

betamos commented 3 months ago

Thanks for the swift response.

I do think all options should be documented, Github Actions is difficult enough to use as it is.

That said, to prevent XY problems: my FR is I want to host my stuff elsewhere, and that part should be common (even if Cloudflare R2 may be niche). I do want to have a full CD pipeline eventually, but I don't expect this repo to anticipate all weird use cases, like mine.

My Actions knowledge is minimal, but here's an idea:

Would something like that make sense?

FabianLars commented 3 months ago

Uploading the packages to a release is optional if you're okay with the action not creating a github release at all. The problem is that if the action does not upload the packages, it won't be able to create a json file either because it needs to collect the packages across the different runners and it currently relies on the release for that.

At that point creating the json file from scratch yourself would probably be easier for you and us.

betamos commented 3 months ago

Ah, right. Multiple jobs makes it more complicated.

The main issue is that the artifact file names (of zip and tar files) are not deterministic within stable Tauri. They've changed in the past and might change in the future, or simply based on config changes (say MSI to NSIS).

As a result, both steps (uploading & referencing them for the updater) benefit from a single source of truth for CD purposes. So to be safe(r) I'm trusting latest.json for now (at least more than me hard-coding them). So, an optional base URL arg would be helpful. For now, I'm using sed to replace it:

sed -i -e 's#https:.*\/#https://releases.example.com/v0.2.0/#' latest.json
JokerQyou commented 1 week ago

Maybe the action can output found artifacts names (or full paths) so any following steps can generate requires fields on their own?

FabianLars commented 1 week ago

it already does https://github.com/tauri-apps/tauri-action#outputs