-
-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Move Linux, Windows and MacOS CI/CD to Github Actions #1901
Conversation
@steve-chavez Do we need to enable Github Actions in the settings? |
Just checked, they're enabled.
Will set this. |
Hm, it doesn't trigger for this PR somehow.. Are the settings set like this?
|
Hm, still not triggering I see. Maybe it's because of the draft PR? |
Ah, here we go - apparently had to disable GH Actions in my fork. Thank you @steve-chavez ! |
First successful run: Note: With the hot cache we have now the Stack builds are just 1-3 minutes. We now have executable for each OS available as artifacts for each push, see the list at the bottom. I think this could supercede our |
Hm, I do see there's some overlap with how we do the nightlies. But having all of them on the same release page feels more convenient, each nightly can also point to its changelog. How would we instruct users to use nightlies with this new way? |
I don't think we need a token here. At the codecov-action repo it says:
|
Ah, good catch - will try without |
Apparently |
Ah, I forgot. We have to consider docker as well, we were also releasing nightlies there. |
a454654
to
44fa8dd
Compare
@steve-chavez This new setup now works pretty well! With hot caches, a full CI run takes 5-10 minutes, including all tests as well as the builds for Linux, Windows, MacOS and FreeBSD. Build artifacts for all platforms are available for every single commit, also from pull requests. I believe this covers most of the need for the 'nightly' release (which was quite inconsistent so far). To replace it, my suggestion is:
The workflow enforces that the tagged version corresponds to the version in WDYT? |
27a5df6
to
5b92fbf
Compare
@monacoremo Looks amazing! Great work! 💯 🥇
True, the nightlies were more of a hack. Let's go ahead with your approach 👍 |
… coverage changes
bde6813
to
7f2f6e7
Compare
Thank you, glad to hear! :-) I've tested the release steps on my https://github.com/monacoremo/postgrest fork, both pre-releases and full releases. @steve-chavez I've noted the last todos that need to be completed by you as the repo owner above:
Would you be able to make those changes and then we merge? |
@monacoremo Sure. Done! Also, I've revoked the secrets and Github apps that Appveyor and Travis had(CircleCI still has an installed app on the org because we use it on postgrest-docs).
I don't have the postgrest-bot creds anymore(it was created using begriffs' account), so it should be changed to my username "stevechavez". I've confirmed it works, I used it for v8.0. |
@monacoremo Do you know what's the state of building the static binary with Nix on ARM? It didn't work last time we tried. Ideally we'd build the ARM binary on Github Actions. Currently I build the ARM binary manually for Ubuntu. |
I think that's going to be quite tricky - but let's try it! Do you have a machine that we can use for testing @steve-chavez ? On the Nix side, I dont think that https://github.com/nh2/static-haskell-nix that we rely on actively tracks whether ARM-builds succeed. But it could work in principle and we could be lucky, let's see! A full alternative would be to use https://input-output-hk.github.io/haskell.nix/tutorials/cross-compilation/ instead of the standard Nix setup, but that would be a major undertaking. On the GitHub Actions side, I don't think there is an ARM runner right now... We would need to host an external runner. |
I do! I use a t4g.large on AWS to build the Ubuntu binary. I'll grant you access and share you the details through email 📧 |
Now that Travis and CircleCI impose capacity limits, it's probably easiest for us to run everything on Github Actions.
Progress on feature parity with legacy CI
shell: 'script -q -e -c "bash --noprofile --norc -eo pipefail {0}"'
- used only for the Nix tests for nowExtra
postgrest.cabal
, commit and run.github/release
Not for this PR:
Tasks before merge
postgrest-bot
the right user name?