ivanilves / lstags Goto Github PK
View Code? Open in Web Editor NEWExplore Docker registries and manipulate Docker images!
License: Apache License 2.0
Explore Docker registries and manipulate Docker images!
License: Apache License 2.0
IMO we need some mechanism to show that the PR we merge should not create a release.
For example, a refactor PR, which should be tested as any other PR, but should not be released cause it provides no value for user.
... this could be interesting !
Add some basic README.md
with utility description and a couple of examples
local
package should be split intro a Docker daemon interaction part and tag operations part, and refactored. Eventually.
lstags private-host/cassandra
Get https://private-host/v2: http: server gave HTTP response to HTTPS client
Something like --filter /^v.*/
and
or or
(?)Need to complement and secure this: #60
@ivanilves could you stop making us look into travis.yml in order to get what we need to build the project?
Let's wrap all the cryptic hipster golang stuff with an old school Makefile:
WDYT?
We need integration testing for lstags
.
Cases like:
A pull (-p
) dry run would show which images would be pulled.
A push (-P
) dry run would show which images would a) be pulled and b) when the -r
(external repo flag is given which images would be pushed to it.
This would allow for users to see issues like missing tags in a "plan" phase before running the actual pull/pull and push.
If this is wanted, depending on my time in the next weeks, I would be up to create a PR with this logic implemented.
Artifactory etc
Pull ones matched by #51
Maybe it's useless, but since we got Docker TCP support now it's a sin not to try! π
do we need to support loading config files from remote sources
http://user:[email protected]/file.yaml
???
We need to vendor dependencies inside the repo.
Integration suite broken after fddf058
Maybe we need to provide Kubernetes chart, some cron job to sync local docker images with registry?
... but they should π
... no so beautiful for now ...
Hi, It's a very useful tool. However I found a mismatch problem when our private registry is hosted on a port e.g. 5000. An example as below.
$ docker images
my.registry.com:5000/my_image my_tag abfaa2fbade0 10 months ago 97MB
$ lstags my.registry.com:5000/my_image
<STATE> <DIGEST> <(local) ID> <Created At> <TAG>
LOCAL-ONLY sha256:85b750cd33aa29ffce453f63984f4f6c9 abfaa2fbade0 2016-11-30T03:37:55-08:00 my.registry.com:5000/my_image:5000/my_image
ABSENT sha256:85b750cd33aa29ffce453f63984f4f6c9 n/a 2016-11-30T03:37:55-08:00 my.registry.com:5000/my_image:my_tag
It seems the colon before the port number caused the wrong parsing result somewhere.
Thanks!
Extract registry authentication information from local Docker system.
One wise man said:
If
docker pull
can pull w/o reentering the password, whylstags
can not execute like this?
Do we need this?
fetchRepoDetails
is a total shit:
So:
Currently we have no tests, which makes our code a β³ π£
We need to be able to list multiple images. Like:
lstags alpine nginx containers.company.io
Unable to compare local and remote digests, cause they are always different.
More research required on this topic, as long as w/o solving this issue, the whole lstags
idea is useless.
We can not rely on manual Docker API version specification!
We need Docker API version detector inside our application.
We have main.go tested but what about packages?
Could we also have some testing for packages?
We are not using concurrency mechanisms provided by Golang.
We are executing lots of HTTP requests sequentially, which is π’
I think the idea from @solidnerd PR #92 should be implemented.
We need automatic releases with our CI.
This means on every merged PR, we will need to:
TODOs collected from #101
This is a development of #93
cc @solidnerd
To become a better utility and also to become a package/library we need to separate core logic into a api
package, so the main will become really bare and easy to understand. Also other people could include api
as a Golang package [not just using CLI] with this.
Just trying to get things up and runningβ
$ lstags --version
VERSION: v30-d15b77b
$ lstags alpine~/^3\\./
panic: runtime error: index out of range
goroutine 1 [running]:
github.com/ivanilves/lstags/docker/config.Load(0x1360289, 0x15, 0x0, 0x0, 0x0)
/home/travis/gopath/src/github.com/ivanilves/lstags/docker/config/config.go:79 +0x4fe
main.main()
/home/travis/gopath/src/github.com/ivanilves/lstags/main.go:98 +0x8d
Enforce our blackbox integration testing with a whitebox end2end job which will:
We may also consider 2 tests one pull and one for pull/push.
We have reached the state when we need to:
Now we have more tests and every CI run is around 5-7min.
We need to take it back to ~2-3min so development will be joyful again! π
Options include:
... so no zone info will be needed, more compact output FTW!
Some simple Travis thing would be enough π
... to balance between having good speed and making DoS of Docker registry. ;)
Doing it "hard way" like we do it now is stable, but stupid.
Repo became huge: 57mb currently π±
If we fear remote repo deletion, we should fork all remote repos and point dependencies to our forks.
we need to support configuration loading from yaml file as it is more scm/git friendly
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.