{"id":20447748,"url":"https://github.com/aissa-laribi/jklint","last_synced_at":"2026-05-09T16:32:54.984Z","repository":{"id":63059916,"uuid":"564975787","full_name":"aissa-laribi/jklint","owner":"aissa-laribi","description":"A Jenkinsfile linter CLI saving time linting Jenkinsfiles by only typing 1 argument in the command line.","archived":false,"fork":false,"pushed_at":"2022-11-15T09:57:56.000Z","size":7,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-06-08T00:36:22.096Z","etag":null,"topics":["jenkins","jenkinsfile","linter","maskedinput"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/jklint/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aissa-laribi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-11-12T00:40:33.000Z","updated_at":"2022-11-14T13:02:45.000Z","dependencies_parsed_at":"2023-01-22T03:00:12.471Z","dependency_job_id":null,"html_url":"https://github.com/aissa-laribi/jklint","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aissa-laribi%2Fjklint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aissa-laribi%2Fjklint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aissa-laribi%2Fjklint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aissa-laribi%2Fjklint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aissa-laribi","download_url":"https://codeload.github.com/aissa-laribi/jklint/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241997290,"owners_count":20055113,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jenkins","jenkinsfile","linter","maskedinput"],"created_at":"2024-11-15T10:29:13.637Z","updated_at":"2025-10-12T23:16:23.535Z","avatar_url":"https://github.com/aissa-laribi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Jklint\n\nA Jenkinsfile linter CLI saving time linting Jenkinsfiles by only typing 1 argument in the command line.\n\n![](https://media.giphy.com/media/bxSegGXznypndd2lfB/giphy.gif)\n\n## Features ⭐\n\n1.Credentials entered one time only\n\n2.Short commands to type\n\n3.Validate Jenkinsfiles through the Jenkins Client of your server\n\n4.Masked credentials\n\n## Setup 🛠\n\nJklint can be installed through Pypi or a clone of the repository. \n\n## From Pypi\n\nThe easiest option to setup Jklint is to install the pip package and run it into a virtual environment.\n\n### 1.Create a virtual environment\n```\npython3 -m venv \u003cvirtual-environment-name\u003e\n```\n\n### 2.Activate the virtual environment\n\n\u003ctable class=\"docutils align-default\"\u003e\n\u003ccolgroup\u003e\n\u003ccol style=\"width: 17%\"\u003e\n\u003ccol style=\"width: 16%\"\u003e\n\u003ccol style=\"width: 67%\"\u003e\n\u003c/colgroup\u003e\n\u003cthead\u003e\n\u003ctr class=\"row-odd\"\u003e\u003cth class=\"head\"\u003e\u003cp\u003ePlatform\u003c/p\u003e\u003c/th\u003e\n\u003cth class=\"head\"\u003e\u003cp\u003eShell\u003c/p\u003e\u003c/th\u003e\n\u003cth class=\"head\"\u003e\u003cp\u003eCommand to activate virtual environment\u003c/p\u003e\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr class=\"row-even\"\u003e\u003ctd rowspan=\"4\"\u003e\u003cp\u003ePOSIX\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003ebash/zsh\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"samp docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003e$\u003c/span\u003e \u003cspan class=\"pre\"\u003esource\u003c/span\u003e \u003cem\u003e\u003cspan class=\"pre\"\u003e\u0026lt;venv\u0026gt;\u003c/span\u003e\u003c/em\u003e\u003cspan class=\"pre\"\u003e/bin/activate\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"row-odd\"\u003e\u003ctd\u003e\u003cp\u003efish\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"samp docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003e$\u003c/span\u003e \u003cspan class=\"pre\"\u003esource\u003c/span\u003e \u003cem\u003e\u003cspan class=\"pre\"\u003e\u0026lt;venv\u0026gt;\u003c/span\u003e\u003c/em\u003e\u003cspan class=\"pre\"\u003e/bin/activate.fish\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"row-even\"\u003e\u003ctd\u003e\u003cp\u003ecsh/tcsh\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"samp docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003e$\u003c/span\u003e \u003cspan class=\"pre\"\u003esource\u003c/span\u003e \u003cem\u003e\u003cspan class=\"pre\"\u003e\u0026lt;venv\u0026gt;\u003c/span\u003e\u003c/em\u003e\u003cspan class=\"pre\"\u003e/bin/activate.csh\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"row-odd\"\u003e\u003ctd\u003e\u003cp\u003ePowerShell\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"samp docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003e$\u003c/span\u003e \u003cem\u003e\u003cspan class=\"pre\"\u003e\u0026lt;venv\u0026gt;\u003c/span\u003e\u003c/em\u003e\u003cspan class=\"pre\"\u003e/bin/Activate.ps1\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"row-even\"\u003e\u003ctd rowspan=\"2\"\u003e\u003cp\u003eWindows\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003ecmd.exe\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"samp docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eC:\\\u0026gt;\u003c/span\u003e \u003cem\u003e\u003cspan class=\"pre\"\u003e\u0026lt;venv\u0026gt;\u003c/span\u003e\u003c/em\u003e\u003cspan class=\"pre\"\u003e\\Scripts\\activate.bat\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"row-odd\"\u003e\u003ctd\u003e\u003cp\u003ePowerShell\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"samp docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003ePS\u003c/span\u003e \u003cspan class=\"pre\"\u003eC:\\\u0026gt;\u003c/span\u003e \u003cem\u003e\u003cspan class=\"pre\"\u003e\u0026lt;venv\u0026gt;\u003c/span\u003e\u003c/em\u003e\u003cspan class=\"pre\"\u003e\\Scripts\\Activate.ps1\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n### 3.Install the package\n\n```\npython3 pip install jklint\n```\n\n## Through clone\n\n### 1.Clone the repository\n```\ngit clone https://github.com/aissa-laribi/jklint\n```\n\n### 2.Create a virtual environment\n```\npython3 -m venv \u003cvirtual-environment-name\u003e\n```\n### 3.Activate the virtual environment\n\n\u003ctable class=\"docutils align-default\"\u003e\n\u003ccolgroup\u003e\n\u003ccol style=\"width: 17%\"\u003e\n\u003ccol style=\"width: 16%\"\u003e\n\u003ccol style=\"width: 67%\"\u003e\n\u003c/colgroup\u003e\n\u003cthead\u003e\n\u003ctr class=\"row-odd\"\u003e\u003cth class=\"head\"\u003e\u003cp\u003ePlatform\u003c/p\u003e\u003c/th\u003e\n\u003cth class=\"head\"\u003e\u003cp\u003eShell\u003c/p\u003e\u003c/th\u003e\n\u003cth class=\"head\"\u003e\u003cp\u003eCommand to activate virtual environment\u003c/p\u003e\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr class=\"row-even\"\u003e\u003ctd rowspan=\"4\"\u003e\u003cp\u003ePOSIX\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003ebash/zsh\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"samp docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003e$\u003c/span\u003e \u003cspan class=\"pre\"\u003esource\u003c/span\u003e \u003cem\u003e\u003cspan class=\"pre\"\u003e\u0026lt;venv\u0026gt;\u003c/span\u003e\u003c/em\u003e\u003cspan class=\"pre\"\u003e/bin/activate\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"row-odd\"\u003e\u003ctd\u003e\u003cp\u003efish\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"samp docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003e$\u003c/span\u003e \u003cspan class=\"pre\"\u003esource\u003c/span\u003e \u003cem\u003e\u003cspan class=\"pre\"\u003e\u0026lt;venv\u0026gt;\u003c/span\u003e\u003c/em\u003e\u003cspan class=\"pre\"\u003e/bin/activate.fish\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"row-even\"\u003e\u003ctd\u003e\u003cp\u003ecsh/tcsh\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"samp docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003e$\u003c/span\u003e \u003cspan class=\"pre\"\u003esource\u003c/span\u003e \u003cem\u003e\u003cspan class=\"pre\"\u003e\u0026lt;venv\u0026gt;\u003c/span\u003e\u003c/em\u003e\u003cspan class=\"pre\"\u003e/bin/activate.csh\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"row-odd\"\u003e\u003ctd\u003e\u003cp\u003ePowerShell\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"samp docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003e$\u003c/span\u003e \u003cem\u003e\u003cspan class=\"pre\"\u003e\u0026lt;venv\u0026gt;\u003c/span\u003e\u003c/em\u003e\u003cspan class=\"pre\"\u003e/bin/Activate.ps1\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"row-even\"\u003e\u003ctd rowspan=\"2\"\u003e\u003cp\u003eWindows\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003ecmd.exe\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"samp docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eC:\\\u0026gt;\u003c/span\u003e \u003cem\u003e\u003cspan class=\"pre\"\u003e\u0026lt;venv\u0026gt;\u003c/span\u003e\u003c/em\u003e\u003cspan class=\"pre\"\u003e\\Scripts\\activate.bat\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"row-odd\"\u003e\u003ctd\u003e\u003cp\u003ePowerShell\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"samp docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003ePS\u003c/span\u003e \u003cspan class=\"pre\"\u003eC:\\\u0026gt;\u003c/span\u003e \u003cem\u003e\u003cspan class=\"pre\"\u003e\u0026lt;venv\u0026gt;\u003c/span\u003e\u003c/em\u003e\u003cspan class=\"pre\"\u003e\\Scripts\\Activate.ps1\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n### 4.Install dependancies and package locally\n\n```\npip install -e .\n```\n\n## Usage\n\nIt's recommended to run jklint from a virtual environment, this way the credentials and the Jenkins client will not be found in the repository. Only the Jenkinsfile should be in the repository.\n\n1.Configure jklint\n\n```\njklint config\n```\n\nIf you work with VS Code and your OS is a POSIX OS, an .env file should open. Otherwise, find the .env file in your current directory(that should your virtual environment directory)\n\nReplace the values with yours and save the file.\n\n2.Validate the file\n\n```\njklint go\n```\nIt will download the Jenkins client from your Jenkins url. Then, it will proceed to the validation of the Jenkinsfile\n\nIf the credentials and the syntax of the Jenkinsfile are correct it should return:\n\n```\nJenkins-client found\nCompletedProcess(args=['java', '-jar', 'jenkins-cli.jar', '-s', 'jenkins-url', '-webSocket', '-auth', 'user', 'declarative-linter'], returncode=0, stdout='Jenkinsfile successfully validated.\\n', stderr='')\n```\n\nAnd your 'user' and 'jenkins-url' details will stay hidden.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faissa-laribi%2Fjklint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faissa-laribi%2Fjklint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faissa-laribi%2Fjklint/lists"}