Skip to content

Migrate on-push PR jobs from Gitlab over to Github#3275

Closed
jaschutte wants to merge 3 commits into
clash-lang:masterfrom
jaschutte:pullci
Closed

Migrate on-push PR jobs from Gitlab over to Github#3275
jaschutte wants to merge 3 commits into
clash-lang:masterfrom
jaschutte:pullci

Conversation

@jaschutte
Copy link
Copy Markdown
Contributor

We have self-hosted Github runners, however we still mirror the repository to Gitlab to run jobs on PRs. This migrates over the jobs that the Gitlab runners do over to Github. In specific; only the jobs performed on push are copied over. This includes the following set of jobs:

  • Testing if all clash-* projects successfully compile against all supported GHC versions in Cabal and Stack
  • Package & cache all clash-* projects using Nix (this also runs tests for those packages) for all supported GHC versions
  • Run the clash testsuite for VHDL, Verilog and SystemVerilog in all supported GHC versions

Nix automatically caches whatever it builds to our local cache, pushes to the master branch also get cached in Cachix.
Cabal caches only the clash dependencies (the key is the hash of the cabal.project file, I think this should be correct as its the only thing that changes the dependencies(?). If not, let me know and I will change it to something else. Maybe the .cabal files should be part of the key too?) It uses the local minio cache.
Stack does not utilize caching.

TODO:

  • Run clash-ffi tests(?)
  • Add .cabal to the key to the Cabal cache

jaschutte added 3 commits May 21, 2026 15:48
Simply compiles clash for cabal & stack, Nix runs tests by default so
there is no need to duplicate those.
Runs clash-testsuite using Nix, does all compiler & HDLs in parallel to
make optimal use of the runners
@jaschutte
Copy link
Copy Markdown
Contributor Author

Another thing to note; this does not remove the old Gitlab pipeline yet. I think its best to do that all at once once all Gitlab jobs have been migrated.

@martijnbastiaan
Copy link
Copy Markdown
Member

Do you ensure memory limits on the host side? If not, you could do the poor man's thing we do over at bittide-hardware:

https://github.com/bittide/bittide-hardware/blob/a12b033591cedfe2403109016256e30e0ef61e13/.github/workflows/ci.yml#L77-L79

@jaschutte
Copy link
Copy Markdown
Contributor Author

We have configured the backend hosting the runners to limit the CPUs per job, memory I am not quite sure but it shouldn't be a difficult thing to add (iirc it's literally just an option inside of docker-compose).

@jaschutte
Copy link
Copy Markdown
Contributor Author

Closing as this is a PR from a fork and not from a main branch, therefore the new tests ironically enough don't run.

See #3289 for the new PR.

@jaschutte jaschutte closed this Jun 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants