Make make targets more reproducible #305
Labels
No labels
P0
P1
P2
P3
badger
frostfs-adm
frostfs-cli
frostfs-ir
frostfs-lens
frostfs-node
good first issue
triage
Infrastructure
blocked
bug
config
discussion
documentation
duplicate
enhancement
go
help wanted
internal
invalid
kludge
observability
perfomance
question
refactoring
wontfix
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: TrueCloudLab/frostfs-node#305
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
We have docker targets, but it could also be beneficial to use same version in other cases:
So the proposal is following:
bootstrap
target which install necessary dependencies inbin
orbin/build/
. The path can overridden, but it would be nice to install locally by default.Does it look sane? @realloc @dstepanov-yadro
Also, do we have any problems with using
docker/*
in pre-commit when run locally?can't we just run all linters and precommit checks in the CI/cloud pipeline and let people sort out their local config/setup individually?
@realloc please, could you describe your thoughts.
Summarizing, we have few approaches for this problem.
protoc
in a localbin
directory, like we do forhugo
in https://git.frostfs.info/TrueCloudLab/frostfs.info/src/branch/master/Makefile#L11This may cause problems for non-linux users or complicate Makefile with multi-OS support. This also doesn't solve problems with wrong versions of
go
ormake
.This works well even on Windows. However, we are out of sync between image templates in
.docker
directory and what we declare in Makefile.I'd suggest using a combined method when we set desired tool version in
Makefile
and call it inside container when build a wrapping docker image locally. It would have a desired Go version and all other tools as declared. When run on a normal system it would install what needed on a host. Combined with tools like g/gvm it would help to create isolated environments.In this case CI should be using the docker image to build and run tests, while developers will have options to use same environment or change for experimental purposes.
Both protoc and lint versions are now pinned.