-
-
Notifications
You must be signed in to change notification settings - Fork 430
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
chore(ci): New layout of the CI #473
Conversation
ef008c7
to
6af7bd6
Compare
f4b38b1
to
ef6e7d6
Compare
5854ecb
to
a38e74a
Compare
a38e74a
to
ca25dca
Compare
I forgot to add the coverage in the CI. |
Codecov Report
@@ Coverage Diff @@
## master #473 +/- ##
=========================================
Coverage ? 55.41%
=========================================
Files ? 71
Lines ? 11597
Branches ? 0
=========================================
Hits ? 6426
Misses ? 4324
Partials ? 847
Flags with carried forward coverage won't be shown. Click here to find out more. Continue to review full report at Codecov.
|
Good to merge if the review is ok. |
let's make AVX and SSE2 mandatory |
Can I merge? (and take care of the settings of the project to make things mandatory) |
This is a complete rewrite of the CI factory.
Workflows
There are now three workflows corresponding to the different OS of the runners:
Jobs
Each workflow is composed of two jobs:
Both jobs are identical besides the go version they are executing. The reason to avoid the
matrix
strategy is that GitHub appends the matrix tags to each of the running jobs. As a consequence, changing the version of Go implies modifying the protection policy of the project.Caching
Each job is trying to use the cache mechanism to lower the time passed in the CI.
Steps
The jobs are:
A matrix strategy is only present to tests the build tags (as it was before). A special tag "none" is present. If
tag
is none, the-tag
is omitted.README
With this build process, I think it is safe to use the badge of the Linux runner on the README. It performs all the tests on Linux and validates that the code is compilable on all the platforms.
TODO
Once this PR is validated, the protection of the master branch needs to be tweaked to request the validation of:
Maintenance
When a new Go version is dropped, there is a need to modify the three workflows
Optimization
The code is heavily repeated (DRY they said). If this system is ok for us, it could be good to write a small tool (based on templates), to automate all the stuff when a new Go version is dropped.