Skip to content
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

Implement CI for pull requests #26

Merged
merged 58 commits into from
Dec 4, 2024
Merged

Conversation

imunproductive
Copy link
Member

This PR implements a CI workflow which is executed every time a PR is open, reopened or new commits are pushed.
The workflow will checkout HEAD of a pull request branch, and first things first check if formatting is correct.
Then it will run next steps:

  • Build library.
  • Build binary.
  • Build tests.
  • Build examples.
  • Run tests. (Only if building them was successful)

These all steps could be running on any OS (Linux, macOS, Windows), but since we don't have any cross-platform code right now, I've only left Linux.
If all of the steps succeed, github-actions bot will approve the PR.
If any of steps fail, github-actions bot will request changes and provide a meaningful information about steps that were ran.

All the formatting done using rustfmt from the latest stable Rust toolchain release.
All the building and running tests done using Rust version 1.81.0, which is our current MSRV.

This CI will run on every commit even for a draft PR. It is intended behavior. If you feel like it should be changed please do let me know.

Just like any other CI it can be skipped including [skip ci] or anything similar in commit message.

Here is an example of a failed output:
image

As you can see above, I print all the steps performed, even if they were successful.
There is also available a "non-verbose" mode as I call it which can be switched very easily in the code (if you prefer it over verbose), which will only show failed steps, like this:
image

And this is how a verbose mode looks for 3 platforms:
image

For more examples you can look here.

@imunproductive imunproductive added the enhancement New feature or request label Nov 28, 2024
@imunproductive
Copy link
Member Author

To clarify:

  • The reason why Check formatting job failed is because this PR is based on older commit where master wasn't formatted yet.
  • The reason why Review PR job failed is because I am yet to ask Samuel to grant GitHub actions ability to review PRs.

@imunproductive imunproductive force-pushed the master branch 2 times, most recently from 4e4a304 to 91e65c4 Compare November 28, 2024 13:21
@imunproductive
Copy link
Member Author

After rebasing the branch everything now passes except Review PR, which fails due to workflow not having enough permissions because its not merged yet and just a PR. Everything should be fine after merging.

@arto-asimov arto-asimov self-assigned this Dec 4, 2024
@artob artob assigned artob and unassigned arto-asimov Dec 4, 2024
Copy link
Member

@artob artob left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@artob artob changed the title Implement CI Implement CI for pull requests Dec 4, 2024
@artob artob merged commit 1c2342f into asimov-platform:master Dec 4, 2024
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants