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

Create Development Docker Container #2546

Open
3 tasks
chatton opened this issue Oct 14, 2022 · 4 comments
Open
3 tasks

Create Development Docker Container #2546

chatton opened this issue Oct 14, 2022 · 4 comments
Labels
needs discussion Issues that need discussion before they can be worked on type: refactor Architecture, code or CI improvements that may or may not tackle technical debt.

Comments

@chatton
Copy link
Contributor

chatton commented Oct 14, 2022

Summary

Create and maintain a development container with all of the required tooling to work within the ibc-go repo, in order to provide a uniform experience for all developers.

Problem Definition

It can be a problem when working with different versions of tooling on a day to day basis but especially when onboarding onto the repo, as well as discrepancies in CI environments.

Proposal

Create a docker container which has tooling installed at specified versions which can be used in CI and our Makefiles. Some examples of software that could be included would be things such as.

  • go
  • goimports
  • gofumpt
  • npm
  • hermes
  • go relayer

This would allow a consistent development experience, as well as making onboarding onto the repo as painless as possible, wth the only project dependency required to get started being docker.

Makefile targets can utilize this dev container so everybody's experience is the same.


For Admin Use

  • Not duplicate issue
  • Appropriate labels applied
  • Appropriate contributors tagged/assigned
@chatton chatton added needs discussion Issues that need discussion before they can be worked on type: refactor Architecture, code or CI improvements that may or may not tackle technical debt. labels Oct 14, 2022
@Anmol1696
Copy link
Contributor

This does make sense, but my concern would be with having hermes and go relayer as well into all the docker image. What are your thoughts on having 2 or 3 kinds of docker images:

  • cosmos/ibc-go:<version>-dev: Can be larger in size, can have everything needed for development by a developer locally
  • cosmos/ibc-go:<version>-build: Image with go, goimports, gofumpt, used for building code, running tests and used in the CI
  • cosmos/ibc-go:<version>-linter: For CI specific dependencies, this can be lighter, can be more as per the requirements

CI docker images in my opion should be different from the development environment docker images, since on CI one would be more resource constrained. Same goes for builder images.

Although I do feel these docker images with work best if we layer up properly, as well as have a dependencies clear between them.

@Anmol1696
Copy link
Contributor

@chatton I can raise an initial PR with the dev requirements as you mentioned.
Can have futher descissions from using the dev docker container itself and going from there.

@chatton
Copy link
Contributor Author

chatton commented Nov 2, 2022

Hi @Anmol1696, I think it could be work quite well to have separate containers like you suggested. To me the most important thing is a consistency among dev environments, an environment the same as CI is an added bonus (a lighter version for CI would be great too).

Would be happy to continue the conversation from an initial PR ❤️

@chatton
Copy link
Contributor Author

chatton commented Nov 2, 2022

I will also link this issue #1748 as it seems to be attempting to achieve a similar thing
cc @Anmol1696

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs discussion Issues that need discussion before they can be worked on type: refactor Architecture, code or CI improvements that may or may not tackle technical debt.
Projects
None yet
Development

No branches or pull requests

2 participants