Create/Find a CI System that fixes a lot of the pitfalls with GH Actions.
IPv6 Support
Currently GH Actions does not support IPv6
Approving Runs
Currently every PR auto runs CI Jobs. Which is annoying as PRs who are in development with rapid commits don't need CI on every commit.
Docker container command support
GH Actions does not support passing a command to the containers which means we have to make mirrors of the containers and then add an entrypoint which consumes an env variable to pass args to containers.
GitHub Caching Limits (10GB)
A 10GB cache is way too small. A single build caches at around ~8GB. GitHub's cache also uses a single threaded gz implementation so compressing build artifacts takes AGES.
Deduplicating Runs
If you have a rule that compiles code on a branch like feature/* and then you have a PR from that branch onto main the CI system runs on both the PR and the BRANCH meaning every commit gets 2 CI runs of the exact same thing. I understand this might be benificial if you have rules which are only run when its a branch or rules that are only run when its a PR. However typically this is not the case. There MUST be a better solution to this.
Step Matrix
Sometimes we want a single job to run multiple commands in order but the commands are very similar (like uploading multiple files), it would be much easier to have some step level matrix, GH Actions only supports job level matrix.
Cross file job depends
In GitHub actions ci runs dissolve into a single long file because GitHub had no way of importing runs from different files. We should be able to depend on jobs on different files (like namespaces jobs).
# scuffle-ci.yml
workspace:
- ./lint.yml
- ./test.yml
- ./build.yml
---
# lint.yml
module: lint
jobs:
- name: lint
steps:
...
---
# test.yml
module: test
jobs:
- name: test
steps:
...
---
# build.yml
module: build
jobs:
- name: build
depends_on:
- .lint # (all jobs in lint)
- .test.test # (only the test job in test)
steps:
...
Inlined Jobs
Advancing on the above feature we could have jobs which can use things from a previous job without pushing the state to a cache or a store or anything (simply passing a volume to the next step)
Is your feature related to a bug
No response
Additional Info
We can add more features as we think of them. But all current ci solutions basically suck balls.
Participation
[ ] I am willing to submit a pull request to implement this
Tell us about your Wish
Create/Find a CI System that fixes a lot of the pitfalls with GH Actions.
Currently GH Actions does not support IPv6
Currently every PR auto runs CI Jobs. Which is annoying as PRs who are in development with rapid commits don't need CI on every commit.
GH Actions does not support passing a command to the containers which means we have to make mirrors of the containers and then add an entrypoint which consumes an env variable to pass args to containers.
A 10GB cache is way too small. A single build caches at around ~8GB. GitHub's cache also uses a single threaded gz implementation so compressing build artifacts takes AGES.
If you have a rule that compiles code on a branch like
feature/*
and then you have a PR from that branch ontomain
the CI system runs on both the PR and the BRANCH meaning every commit gets 2 CI runs of the exact same thing. I understand this might be benificial if you have rules which are only run when its a branch or rules that are only run when its a PR. However typically this is not the case. There MUST be a better solution to this.Sometimes we want a single job to run multiple commands in order but the commands are very similar (like uploading multiple files), it would be much easier to have some step level matrix, GH Actions only supports job level matrix.
In GitHub actions ci runs dissolve into a single long file because GitHub had no way of importing runs from different files. We should be able to depend on jobs on different files (like namespaces jobs).
Advancing on the above feature we could have jobs which can use things from a previous job without pushing the state to a cache or a store or anything (simply passing a volume to the next step)
Is your feature related to a bug
No response
Additional Info
We can add more features as we think of them. But all current ci solutions basically suck balls.
Participation