{ "info": { "author": "Red Hat", "author_email": "user-cont-team@redhat.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development", "Topic :: Software Development :: Quality Assurance", "Topic :: Utilities" ], "description": "# Colin\n\n![PyPI](https://img.shields.io/pypi/v/colin.svg)\n![PyPI - License](https://img.shields.io/pypi/l/colin.svg)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/colin.svg)\n![PyPI - Status](https://img.shields.io/pypi/status/colin.svg)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/427eb0c5dfc040cea798b23575dba025)](https://www.codacy.com/app/user-cont/colin?utm_source=github.com&utm_medium=referral&utm_content=user-cont/colin&utm_campaign=Badge_Grade)\n[![Build Status](https://ci.centos.org/job/user-cont-colin-master/badge/icon)](https://ci.centos.org/job/user-cont-colin-master/)\n\nTool to check generic rules and best-practices for container images and dockerfiles.\n\nFor more information, please check our [documentation on colin.readthedocs.io](https://colin.readthedocs.io/en/latest/).\n\n![example](./docs/example.gif)\n\n\n# Features\n\n* Validate a selected artifact against a ruleset.\n* Artifacts can be container images and dockerfiles.\n* We provide a default ruleset we believe every container image should satisfy.\n* There is a ruleset to validate an artifact whether it complies to [Fedora Container Guidelines](https://fedoraproject.org/wiki/Container:Guidelines)\n* Colin can list available rulesets and list checks in a ruleset.\n* There is a python API available\n* Colin can be integrated into your workflow easily - it can provide results in json format.\n\n\n## Installation\n\n\n### Via `pip`\n\nIf you are on Fedora distribution, please install python3-pyxattr so you don't\nhave to compile it yourself when getting it from PyPI.\n\n```bash\n$ pip3 install --user colin\n```\n\n`colin` is supported on python 3.6+ only.\n\n### On Fedora distribution\n\ncolin is packaged in official Fedora repositories:\n```\n$ dnf install -y colin\n```\n\n### Requirements\n\n- For checking `image` target-type, you have to install [podman](https://github.com/containers/libpod/blob/master/docs/tutorials/podman_tutorial.md). If you need to check local docker images, you need to prefix your images with `docker-daemon` (e.g. `colin check docker-daemon:docker.io/openshift/origin-web-console:v3.11`).\n\n- If you want to use `ostree` target, you need to install following tools:\n - [ostree](https://github.com/ostreedev/ostree)\n - [atomic](https://github.com/projectatomic/atomic#atomic-usrbinatomic)\n - [skopeo](https://github.com/containers/skopeo#skopeo-)\n\n## Usage\n\n```\n$ colin --help\nUsage: colin [OPTIONS] COMMAND [ARGS]...\n\n COLIN -- Container Linter\n\nOptions:\n -V, --version Show the version and exit.\n -h, --help Show this message and exit.\n\nCommands:\n check Check the image/dockerfile (default).\n info Show info about colin and its dependencies.\n list-checks Print the checks.\n list-rulesets List available rulesets.\n```\n\n```\n$ colin check --help\nUsage: colin check [OPTIONS] TARGET\n\n Check the image/dockerfile (default).\n\nOptions:\n -r, --ruleset TEXT Select a predefined ruleset (e.g. fedora).\n -f, --ruleset-file FILENAME Path to a file to use for validation (by\n default they are placed in\n /usr/share/colin/rulesets).\n --debug Enable debugging mode (debugging logs, full\n tracebacks).\n --json FILENAME File to save the output as json to.\n --stat Print statistics instead of full results.\n -s, --skip TEXT Name of the check to skip. (this option is\n repeatable)\n -t, --tag TEXT Filter checks with the tag.\n -v, --verbose Verbose mode.\n --checks-path DIRECTORY Path to directory containing checks (default\n ['/home/flachman/.local/lib/python3.7/site-\n packages/colin/checks']).\n --pull Pull the image from registry.\n --target-type TEXT Type of selected target (one of image,\n dockerfile, ostree). For ostree, please specify\n image name and path like this: image@path\n --timeout INTEGER Timeout for each check in seconds.\n (default=600)\n --insecure Pull from an insecure registry (HTTP or invalid\n TLS).\n -h, --help Show this message and exit.\n```\n\nLet's give it a shot:\n```\n$ colin -f ./rulesets/fedora.json registry.fedoraproject.org/f29/cockpit\nPASS:Label 'architecture' has to be specified.\nPASS:Label 'build-date' has to be specified.\nFAIL:Label 'description' has to be specified.\nPASS:Label 'distribution-scope' has to be specified.\n:\n:\nPASS:10 FAIL:8\n```\n\n\n### Directly from git\n\nIt's possible to use colin directly from git:\n\n```\n$ git clone https://github.com/user-cont/colin.git\n$ cd colin\n```\n\nWe can now run the analysis:\n\n```\n$ python3 -m colin.cli.colin -f ./rulesets/fedora.json registry.fedoraproject.org/f29/cockpit\nPASS:Label 'architecture' has to be specified.\nPASS:Label 'build-date' has to be specified.\nFAIL:Label 'description' has to be specified.\nPASS:Label 'distribution-scope' has to be specified.\n:\n:\nPASS:10 FAIL:8\n```\n\n### Exit codes\n\nColin can exit with several codes:\n\n- `0` --> OK\n- `1` --> error in the execution\n- `2` --> CLI error, wrong parameters\n- `3` --> at least one check failed\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/user-cont/colin", "keywords": "containers,sanity,linter", "license": "GPLv3+", "maintainer": "", "maintainer_email": "", "name": "colin", "package_url": "https://pypi.org/project/colin/", "platform": "", "project_url": "https://pypi.org/project/colin/", "project_urls": { "Homepage": "https://github.com/user-cont/colin" }, "release_url": "https://pypi.org/project/colin/0.4.0/", "requires_dist": [ "Click", "six", "dockerfile-parse", "fmf", "PyYAML" ], "requires_python": "", "summary": "Tool to check generic rules/best-practices for containers/images/dockerfiles.", "version": "0.4.0" }, "last_serial": 5311405, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "464823e1ce4d91caedd5c142d424da87", "sha256": "4ee7ba6c03c5329412cca2d7cf9908008daf8f1ff240d4b9f16bba6860be8e3f" }, "downloads": -1, "filename": "colin-0.0.1.tar.gz", "has_sig": false, "md5_digest": "464823e1ce4d91caedd5c142d424da87", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3312373, "upload_time": "2018-03-28T13:19:54", "url": "https://files.pythonhosted.org/packages/fb/c5/48b3b7ad5c05b9682d13f306f4243ae23374e0080b34d959dd4031f205f1/colin-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "76237d118f6eebe3d5a11dd1a11db1ba", "sha256": "9aa62400eb8c76edc8a3619a9ca3b9f57f4a75662bf5dce191311d5836c1ad97" }, "downloads": -1, "filename": "colin-0.0.2.tar.gz", "has_sig": false, "md5_digest": "76237d118f6eebe3d5a11dd1a11db1ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3318223, "upload_time": "2018-03-29T13:58:02", "url": "https://files.pythonhosted.org/packages/e2/24/34d945f48588dac2b496b64f043942ad6da1f174bd1a1f7a890829963ad2/colin-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "1f9e9766fecd39d7bbadcadff1a35ae6", "sha256": "3208229fc14f486c70a47d7f09df8facbd2c1095d10f4c064b1a1c0460f5b749" }, "downloads": -1, "filename": "colin-0.0.3.tar.gz", "has_sig": false, "md5_digest": "1f9e9766fecd39d7bbadcadff1a35ae6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3321975, "upload_time": "2018-04-05T11:43:28", "url": "https://files.pythonhosted.org/packages/68/46/ac84611748c8e399cd56895f6cf78cf88c0f4250115f1c07655f03f0dd12/colin-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "e557c33e04e57f699d44aab64199a65f", "sha256": "64c3bfb810ddff93829c0bddad0c5635b793010da66fdd9d494dfc5d9a5fa89a" }, "downloads": -1, "filename": "colin-0.0.4.tar.gz", "has_sig": false, "md5_digest": "e557c33e04e57f699d44aab64199a65f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3568363, "upload_time": "2018-04-25T14:48:32", "url": "https://files.pythonhosted.org/packages/59/01/0184c2a3396053478ec2a10f7fb588ee0b381d31b2e6bc33e1e2eec4ca42/colin-0.0.4.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "676fd30c55a85a4a24a585de05f76860", "sha256": "a0564474a6400a1d268767c4fe3cc2623afbd40e9d277cba3a0577b3b19fdfaa" }, "downloads": -1, "filename": "colin-0.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "676fd30c55a85a4a24a585de05f76860", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 48027, "upload_time": "2018-05-30T14:26:43", "url": "https://files.pythonhosted.org/packages/d9/27/cf7156042b7a7299c7ec351de223e46123ef91ec5feffdeb232a1e16930d/colin-0.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e89079e5c298cb1cad0957f1ffb40af8", "sha256": "3b526ee6b33156e72e843ad6cf6f459a7fb7568c8cc8908927210d0d321d6650" }, "downloads": -1, "filename": "colin-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e89079e5c298cb1cad0957f1ffb40af8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 48028, "upload_time": "2018-05-30T14:26:42", "url": "https://files.pythonhosted.org/packages/fe/ed/1669912cb332bfe41b0f32237f19b67c3c58eb5dad3397a977d3fc225a54/colin-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f87dc8612ad3e911951c42733ad7e10", "sha256": "ab062153a9bc8c2ef8cee0b09cfe2a562e1d318aacbb82fc0d91271d275356d9" }, "downloads": -1, "filename": "colin-0.1.0.tar.gz", "has_sig": false, "md5_digest": "9f87dc8612ad3e911951c42733ad7e10", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3323804, "upload_time": "2018-05-30T14:26:46", "url": "https://files.pythonhosted.org/packages/c1/38/4e9202bc5df34dd11683648ffbf8d279927b670d7acd03ecad7f63d55735/colin-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "32c1c3225ea9b4befbe9691589051918", "sha256": "3ae1c1900b8dc059f3ae56d5f70a80e5d9c0fec11376d97b5107bcc91a132b05" }, "downloads": -1, "filename": "colin-0.2.0-py2-none-any.whl", "has_sig": false, "md5_digest": "32c1c3225ea9b4befbe9691589051918", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 60298, "upload_time": "2018-09-19T12:57:29", "url": "https://files.pythonhosted.org/packages/87/d0/f31c44159dc264924ff36145cd28bd0a11292f2d4c12283dd18200c7054e/colin-0.2.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d5a1c358a6858fae69da2f0104563758", "sha256": "4be5e9851d07e1fb8446df22ccd3c91bed208904f495cffef8a1e55921df75d5" }, "downloads": -1, "filename": "colin-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d5a1c358a6858fae69da2f0104563758", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 60297, "upload_time": "2018-09-19T12:57:27", "url": "https://files.pythonhosted.org/packages/5b/99/73da95ae4595bd717a0d0f3ea2bcd9dcfdaa2572c8dfb567a68207bc6f80/colin-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "262a0c106cd9617f4bfff7d8d374ccbb", "sha256": "28393d0a2d21204b55b709edf58f57af83910de0f1d2cdbc4877451cf43108d6" }, "downloads": -1, "filename": "colin-0.2.0.tar.gz", "has_sig": false, "md5_digest": "262a0c106cd9617f4bfff7d8d374ccbb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3329494, "upload_time": "2018-09-19T12:57:32", "url": "https://files.pythonhosted.org/packages/02/07/dab6f0f27593c85bf5944dbe70b8cc08ec5c35b6b7947f2f5489aa5140d6/colin-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "8a6e3b809520b4853e8fac77c8b75442", "sha256": "43e8912856f93478c881e8d979b2533881786ec24de844d5bf65a8408acfa4d6" }, "downloads": -1, "filename": "colin-0.2.1-py2-none-any.whl", "has_sig": false, "md5_digest": "8a6e3b809520b4853e8fac77c8b75442", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 74517, "upload_time": "2018-10-22T09:24:43", "url": "https://files.pythonhosted.org/packages/08/8b/1ede074302d0e2f60acba8b0cd353b72293b5705ba6eadda19e1a5ab6bb1/colin-0.2.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e08a7705d5bb69f9d9009604523d7a0f", "sha256": "8ab8ac52be224875429e58a1da55800159bdeee89d7ce7265c096eaadec74895" }, "downloads": -1, "filename": "colin-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e08a7705d5bb69f9d9009604523d7a0f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 74517, "upload_time": "2018-10-22T09:24:41", "url": "https://files.pythonhosted.org/packages/36/48/1a2db6fc8815941c8059465000af16366ed714b32c9c5486547e72597c95/colin-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "24b7f1be0d6265e17fd1c37de4bc33f6", "sha256": "1fac5b13c2b6a6623467f7f073afbb2fa033aca96ca7020e07ebeff6ad879200" }, "downloads": -1, "filename": "colin-0.2.1.tar.gz", "has_sig": false, "md5_digest": "24b7f1be0d6265e17fd1c37de4bc33f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3330533, "upload_time": "2018-10-22T09:24:45", "url": "https://files.pythonhosted.org/packages/13/7e/3c8fa52c157130ac9fd961d00e8b6abdc9eb10cac9c6f9204cbf868bc85f/colin-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "5a19390d10cc3a64d069990a8ff74fd3", "sha256": "2e3a2a1b748638b534f0b4a39056140460bbb16cd57b42fae7729a2afe3e648c" }, "downloads": -1, "filename": "colin-0.3.0-py2-none-any.whl", "has_sig": false, "md5_digest": "5a19390d10cc3a64d069990a8ff74fd3", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 77518, "upload_time": "2018-11-15T09:03:32", "url": "https://files.pythonhosted.org/packages/70/27/4b2d64ba4d2c5beb827db05932c1ee3dfe0d5b0043184e78595b00f04bc0/colin-0.3.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dd0d7f29cc3eaf1167c6c5ff14c9b50b", "sha256": "7df9b2f924a47d86fcf751e5672687ba2be74a507b997ff46e026b2c74435655" }, "downloads": -1, "filename": "colin-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "dd0d7f29cc3eaf1167c6c5ff14c9b50b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 77519, "upload_time": "2018-11-15T09:03:30", "url": "https://files.pythonhosted.org/packages/76/50/b81e8e4decf017893a8575ba06ead49be0b141f4adb8261dd60f5ac86238/colin-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fd86e2c0afa10d203f7ba9dd8dc10893", "sha256": "7bf7d91bf0a8a40f5bf3fb83482169ee525cc0836a0386109235734ed51e0b21" }, "downloads": -1, "filename": "colin-0.3.0.tar.gz", "has_sig": false, "md5_digest": "fd86e2c0afa10d203f7ba9dd8dc10893", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3332490, "upload_time": "2018-11-15T09:03:35", "url": "https://files.pythonhosted.org/packages/dc/c0/6abbc8d7367535f1bf64382f36b45e548d6e8f07dcc342e96e880b5abcfb/colin-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "34f43bf7085518576cee3b09cecad443", "sha256": "4ce4019199cd6a056944e66708951049fb1053661f999c18f4a340628207e596" }, "downloads": -1, "filename": "colin-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "34f43bf7085518576cee3b09cecad443", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 77562, "upload_time": "2019-01-21T15:36:34", "url": "https://files.pythonhosted.org/packages/ea/67/dd82ee56f3175d8937da84e9d492096f7d306e15e53a81045aac3fb9cbf6/colin-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9d6dee87a052e95ff21eb1440fe88b4f", "sha256": "67e915d80f114f79c4fb95564266a46c5a26e8e77a31ab43eb122197d01daa00" }, "downloads": -1, "filename": "colin-0.3.1.tar.gz", "has_sig": false, "md5_digest": "9d6dee87a052e95ff21eb1440fe88b4f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 600427, "upload_time": "2019-01-21T15:36:36", "url": "https://files.pythonhosted.org/packages/71/0f/ba9b0cba313d29edf5abe55b355435848b3602b30b24bcb792e8c9aa0793/colin-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "c87b1ce4385fc17ee225d25afcedfb76", "sha256": "4f1fe13f99b0c64a746c75309ce2af723cd9b1fb0b2c7f05685f7aaf0f5105d8" }, "downloads": -1, "filename": "colin-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c87b1ce4385fc17ee225d25afcedfb76", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 164537, "upload_time": "2019-05-24T08:19:15", "url": "https://files.pythonhosted.org/packages/f1/8f/702b3d7e811659bd80700b532cfe1b97d3ad0cc3f35ffd900fa0578eff26/colin-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "20299be1074d54eba0b289bdf97896c8", "sha256": "23778403ebc9453aad98ac40eebfb820ffbacf84e8ee13f276f5471cb8ab2bc6" }, "downloads": -1, "filename": "colin-0.4.0.tar.gz", "has_sig": false, "md5_digest": "20299be1074d54eba0b289bdf97896c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 659641, "upload_time": "2019-05-24T08:19:18", "url": "https://files.pythonhosted.org/packages/ea/57/ae9af99b0514d6e2dc4cfa96c98f7396c2a863472baf4041968683c386c4/colin-0.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c87b1ce4385fc17ee225d25afcedfb76", "sha256": "4f1fe13f99b0c64a746c75309ce2af723cd9b1fb0b2c7f05685f7aaf0f5105d8" }, "downloads": -1, "filename": "colin-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c87b1ce4385fc17ee225d25afcedfb76", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 164537, "upload_time": "2019-05-24T08:19:15", "url": "https://files.pythonhosted.org/packages/f1/8f/702b3d7e811659bd80700b532cfe1b97d3ad0cc3f35ffd900fa0578eff26/colin-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "20299be1074d54eba0b289bdf97896c8", "sha256": "23778403ebc9453aad98ac40eebfb820ffbacf84e8ee13f276f5471cb8ab2bc6" }, "downloads": -1, "filename": "colin-0.4.0.tar.gz", "has_sig": false, "md5_digest": "20299be1074d54eba0b289bdf97896c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 659641, "upload_time": "2019-05-24T08:19:18", "url": "https://files.pythonhosted.org/packages/ea/57/ae9af99b0514d6e2dc4cfa96c98f7396c2a863472baf4041968683c386c4/colin-0.4.0.tar.gz" } ] }