gelly-gmod / gelly

Library to integrate fluids into a game engine
GNU General Public License v3.0
18 stars 3 forks source link

Reimplement CI/CD and release system #63

Closed Derpius closed 2 months ago

Derpius commented 2 months ago

Context

Scope

Acceptance Criteria

Other

This will be harder to do without #61

This depends on #56 (probably easier to do in parallel)

yogwoggf commented 2 months ago

Yeah this is probably one of the most important things to do, anyways Vurv implemented GMA packing by writing his own GMA implementation, but that has a lot of issues like the blacklist being out of sync with Facepunch's blacklist...

Derpius commented 2 months ago

Could either host gmad.exe ourselves or compile from source (and cache)

I would strongly suggest the former - Ideally not committed into the repo, but I can't think of any great alternatives

yogwoggf commented 2 months ago

All blockers done, will start working on this

yogwoggf commented 2 months ago

Nearly complete in branch 63-cd-ci, although I have yet to write logic for caching. It's a little difficult, every submodule is in wildly different places, not sure how to cache those. Although, it should be simple enough to cache previous builds.

Derpius commented 2 months ago

Two options for caching submodules:

Key as repository name/url

  1. For each submodule, attempt to restore from cache with the repository name/URL
  2. On cache hit, update the submodule (pull any changes)
  3. On cache miss, init the submodule
  4. Save the updated submodule to the cache

This is probably the fastest approach. You perform incremental updates whenever you update the submodule’s commit in the project. It probably doesn’t handle switching the branch of a submodule though.

Key as repository + commit SHA

  1. For each submodule, attempt to restore from cache with the repository name/URL and commit hash
  2. On cache hit, do nothing
  3. On cache miss, init the submodule and add the new cache entry with the commit hash

This is robust to changing branches, and is marginally faster on cache hit (but much slower on cache miss in the case where the repo was previously cloned)

yogwoggf commented 2 months ago

Caching for submodules is done, although not really done that well but it should do. Now I'm working on using sccache for caching, it's a "modern" ccache developed by Mozilla which has real nice plug-n-play support for everything (msvc, clang, gcc, etc).

yogwoggf commented 2 months ago

Sccache plugged in, but further blockers remain to switching to ubuntu cross-compilation. Will make a ticket

yogwoggf commented 2 months ago

All done in #70