Verified Commit ca49d336 authored by Snorre Magnus Davøen's avatar Snorre Magnus Davøen 💬
Browse files

Release initial version of containinator

Adds Docker image to more easily run command. Expand on usage and development in
README. Add release to CHANGELOG.
Signed-off-by: Snorre Magnus Davøen's avatarSnorre Magnus Davøen <>
parent cebccd27
\ No newline at end of file
......@@ -12,4 +12,5 @@ pom.xml.asc
\ No newline at end of file
\ No newline at end of file
......@@ -2,9 +2,12 @@
All notable changes to this project will be documented in this file. This change log follows the conventions of [](
## [Unreleased]
## [v0.1.0] - 2019-06-26
### Added
- Initial implementation of command line app
- locate argument to list projects with container registry
- terminate argument to instruct GitLab to bulk delete Docker image tags from projects' registries
- Docker image to bundle all required dependencies (dynamically linked libsunec and others)
FROM adoptopenjdk/openjdk12:slim
COPY ./containinator /app/
ENTRYPOINT [ "/app/containinator", "-Djava.library.path=/opt/java/openjdk/lib/" ]
\ No newline at end of file
......@@ -10,16 +10,29 @@ For this reason you should probably use `docker-distribution-pruner` after runni
## Installation
You can run the command via the Docker image:
docker run -it --rm --help
You can also build the app binary yourself.
Refer to the development section for detailed instructions.
clj -Anative-image
# You need to tell the command where to find java libs so it can get the file
./containinator -Djava.library.path=/path/to/java/lib/ --help
### Caveat
Currently binaries compiled with GraalVM's native-image does not hardlink the `sunec` dependency.
Currently binaries compiled with GraalVM's native-image does not statically link the `sunec` dependency.
If you are running the binary on its own you need to supply the sunec library via an openjdk or graalvm installation.
There is [an issue]( about this in the official graal repository.
For the time being you can run the binary with `containinator -Djava.library.path=/<path to java/graal>/lib/`.
The Docker image will bundle the sunec dependency.
The Docker image is based on the `adoptopenjdk/openjdk12` image and thus bundles the file.
## Usage
......@@ -53,11 +66,38 @@ Locating projects for given arguments on Please be patient
## Development
Ensure you have the following installed:
- [openjdk](
- [Clojure](
- [GraalVM](
To run a repl:
Use your editor's jack-in functionality when developing with an editor like Emacs, VSCode Calva, or IntelliJ Cursive.
To comple a binary:
clj -Anative-image
To build a Docker image:
Ensure that the `` command is present in the project root.
You can copy it from your GraalVM installation.
docker build -t .
## Testing
Testing is not really applicable as more or less the entire app is side-effecting.
## License
......@@ -2,18 +2,15 @@
:deps {org.clojure/clojure {:mvn/version "1.9.0"}
cli-matic {:mvn/version "0.3.7"}
org.martinklepsch/clj-http-lite {:mvn/version "0.4.1"}
clj-http {:mvn/version "3.10.0"}
metosin/muuntaja {:mvn/version "0.6.4"}}
{:test {:extra-paths ["test"]
:extra-deps {org.clojure/test.check {:mvn/version "RELEASE"}}}
{:main-opts ["-m clj.native-image containinator"
:jvm-opts [""]
......@@ -22,11 +19,5 @@
{:git/url ""
:sha "567176ddb0f7507c8b0969e0a10f60f848afaf7d"}}}
{:extra-deps {com.cognitect/test-runner
{:git/url ""
:sha "76568540e7f40268ad2b646110f237a60295fa3c"}}
:main-opts ["-m" "cognitect.test-runner"
"-d" "test"]}
:uberjar {:extra-deps {seancorfield/depstar {:mvn/version "RELEASE"}}
:main-opts ["-m" "hf.depstar.uberjar" "containinator.jar"]}}}
......@@ -182,7 +182,7 @@
(def app-config
{:app {:command "containinator"
:description "A command to locate and terminate Docker image tags on GitLab servers"
:version "0.1"}
:version "0.1.0"}
:global-opts [{:option "token"
:short "t"
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment