Git Product home page Git Product logo

bring's People

Contributors

iyehuda avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

bring's Issues

Silence external commands output by default

Is your feature request related to a problem? Please describe.
Every command that bring executes (e.g. docker pull) may be verbose and print confusing text.

Describe the solution you'd like
It will be better to:

  1. Print custom messages by default (e.g. "Pulling image...", "Saving images to /tmp/images.tar", etc.)
  2. Have an option to turn on external commands output with --verbose global flag
  3. Have an option to turn off outputs with --quite flag

Describe alternatives you've considered
One can run bring ... &> /dev/null but it is not that comfortable.

Additional context
It may be a good opportunity to implement a logger for the mission.

Add makefile

Add makefile for developer convenience.
The makefile should support the following targets:

  • setup - Setup everything necessary to start coding.
    It is meant for newcomers to contribute easily
  • build - Build the bring CLI binary
  • clean - Remove any sort of temporary files and build assets
  • test - Run all of the tests

Here is an example from aquasecurity/trivy

Add integration tests for docker download

Add tests that will:

  1. Check bring docker download command
  2. Check image pulling logic
  3. Check images saving logic
  4. Will have a tag mentioning they are integration tests

Add License

As appropriate for every opensource project, add an open source license.
MIT-2 will be fine.

Standard test names

Is your feature request related to a problem? Please describe.
Current tests and subtest do not follow some consistent naming rules.

Describe the solution you'd like
It will be nice to have consistent naming convention across unit and integration tests.
Additionaly, it should be easy to name a new test.

Describe alternatives you've considered
None.

Additional context
None.

Add CI via GitHub Actions

Configure GitHub actions to perform:

  1. Linting (via golangci-lint)
  2. Testing (both unit and integartion)

Support loading and uploading docker images

Add a bring docker upload command that will:

  1. Take a local file path as input argument
    The file is supposed to be the output of the bring docker download command
  2. Take target registry and prefix as input argument
  3. Load the docker images from the specified file
  4. Retag the images relative to the specified target registry
    a. Preserve the original path under the source registry

Example inputs and outputs:

# Download images locally
bring docker download redis:7.0.5 quay.io/argoproj/argocd:2.4.14 --to images.tar

# Load images and push custom registry
bring docker upload images.tar --to quay.io/myorg/public

# Images will be retagged and pushed as follows:
# redis:7.0.5 -> quay.io/myorg/public/redis:7.0.5
# quay.io/argoproj/argocd:2.4.14 -> quay.io/myorg/public/argoproj/argocd:2.4.14

Don't depend on docker daemon for docker download/upload

Image operations such as pull, save, load and push can be made via Go implementations rather than exec'ing some docker commands.
The dependency of docker daemon existence is limiting and not unnecessary.
In the vision of bring, the CLI should be independent and standalone so it can be run everywhere.

We can, for example, use Google's go-containerregistry library.

Add contribution guide

Is your feature request related to a problem? Please describe.
It is not easy to get onboarding to contribute this project.
There is no information about how development is done, with what tools, etc.

Describe the solution you'd like
Create a contribution guide (CONTRIBUTING.md) explainging:

  • Development environment setup
  • How to submit issues
  • How to submit PRs
  • what is the architecture
  • How to add new features
  • How to write tests
  • How the CI works
  • General community guidelines

Describe alternatives you've considered
None.

Additional context
None.

Create issue templates

Issue templates help standardizes the process of understanding the contributor/end-user situation and helps priorize work.
Add issue templates for bug reports and feature requests.

Add Pull Request Template

Is your feature request related to a problem? Please describe.
When opening a PR, one should write its description from scratch.

Describe the solution you'd like
It would be nice to have a template to focus contributors on what should be written in PR descriptions.

Describe alternatives you've considered
None.

Additional context
None.

Add Comprehensive README

Is your feature request related to a problem? Please describe.
The currunt README file is very sparse and not informative.

Describe the solution you'd like
Make the README a GREAT one by:

  • Adding project longer description
  • Adding installation instructions
  • Adding command examples
  • Adding godoc link
  • Adding contributors section

Describe alternatives you've considered
None.

Additional context
None.

Use ephemeral registry for integration tests

Is your feature request related to a problem? Please describe.
If someone wants to run integration tests locally, he must either:

  1. Have credentials for yehduac.jfrog.io registry, or
  2. Temporarily change the destination registry to custom one

Describe the solution you'd like
It will be better to use something like testcontainers to setup an ephemeral docker registry locally.

Describe alternatives you've considered
None.

Additional context
There's a trivy implementation of such thing here.

Add version command

Is your feature request related to a problem? Please describe.
It is impossible to know what version of bring am I using

Describe the solution you'd like
I would like to run something like bring -v, bring --version or bring version to know what version of bring I am using.

Describe alternatives you've considered
None.

Additional context
None.

Add roadmap documentation

Is your feature request related to a problem? Please describe.
It is not clear where this project is going to, what features are needed and how to best implement them.

Describe the solution you'd like
Create a nice roadmap document (maybe as wiki page) explaining milestones for this project.

Describe alternatives you've considered
It is also possible to just put it in a markdown file but it is probably a bad idea to mix this in the source code management.

Additional context
None.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.