# jenkins-cli A powerful and efficient Jenkins CLI tool written in Rust. Simplifies deployment of Jenkins projects through command line. [中文文档](README_zh.md) ## Features - Fast and efficient Jenkins job deployment - Intuitive command-line interface with real-time console output - Support for multiple Jenkins services, project filtering - Common Jenkins operations support (e.g., triggering builds) - High performance and cross-platform compatibility (Mac, Windows, Linux) - Remembers last build parameters for quick re-runs ### Demo ![Demo](./assets/demo.gif) ## Installation To install the Jenkins CLI tool, use one of the following methods: ```bash bash <(curl -fsSL https://raw.githubusercontent.com/kairyou/jenkins-cli/main/scripts/install.sh) ``` Or use ghp.ci mirror (if GitHub is inaccessible) ```bash bash <(curl -fsSL https://ghp.ci/raw.githubusercontent.com/kairyou/jenkins-cli/main/scripts/install.sh) ``` If you have Rust and Cargo installed, you can install Jenkins CLI directly from crates.io: ```bash cargo install jenkins ``` Alternatively, you can download the binary file from the [Releases page](https://github.com/kairyou/jenkins-cli/releases). ## Usage After setting up the configuration file (see [Configuration](#configuration) section), you can simply run: ```bash jenkins ``` This command will: 1. Prompt you to select a Jenkins service (if multiple are configured) 2. Display a list of available projects 3. Select a project and set build parameters 4. Trigger the build and show real-time console output You can also use command line arguments: ```bash # Run with Jenkins project URL - Deploy project directly without selection jenkins -U http://jenkins.example.com:8081/job/My-Job/ -u username -t api_token # Run with Jenkins server URL - Show project list for selection and deploy jenkins -U http://jenkins.example.com:8081 -u username -t api_token ``` Available command line options: - `-U, --url `: Jenkins server URL or project URL - `-u, --user `: Jenkins username - `-t, --token `: Jenkins API token ## Configuration Create a file named `.jenkins.toml` in your home directory with the following content: ```toml # $HOME/.jenkins.toml [config] # locale = "en-US" # (optional), default auto detect, e.g. zh-CN, en-US # enable_history = false # (optional), default true # check_update = false # (optional), default true [[jenkins]] name = "SIT" url = "https://jenkins-sit.your-company.com" user = "your-username" token = "your-api-token" # includes = [] # excludes = [] # [[jenkins]] # name = "PROD" # url = "https://jenkins-prod.your-company.com" # user = "your-username" # token = "your-api-token" # includes = ["frontend", "backend"] # excludes = ["test"] ``` ### Configuration Options - `config`: Global configuration section - `locale`: Set language (optional), default auto detect, e.g. "zh-CN", "en-US" - `enable_history`: Remember last build parameters (optional), default true, set to false to disable - `check_update`: Automatically check for updates (optional), default true, set to false to disable - `jenkins`: Service configuration section (supports multiple services) - `name`: Service name (e.g., "SIT", "UAT", "PROD") - `url`: Jenkins server URL - `user`: Your Jenkins user ID - `token`: Your Jenkins API token - `includes`: List of strings or regex patterns to include projects (optional) - `excludes`: List of strings or regex patterns to exclude projects (optional) - `enable_history`: Remember build parameters (optional), overrides global setting if specified ### Project Filtering You can use `includes` or `excludes` to filter projects: - `includes: ["frontend", "backend", "^api-"]` # Include projects containing [frontend, backend, api-] - `excludes: ["test", "dev", ".*-deprecated$"]` # Exclude projects containing [test, dev, *-deprecated] Note: Regex patterns are case-sensitive unless specified otherwise (e.g., `(?i)` for case-insensitive matching). ### Username and API Token Your Jenkins username is typically the same as your login username for the Jenkins web interface. To generate an API token: 1. Log in to your Jenkins server 2. Click on your name in the top right corner 3. Click on `Configure` in the left sidebar 4. In the `API Token` section, click `Add new Token` 5. Give your token a name and click "Generate" 6. Copy the generated token and paste it into your `.jenkins.toml` file Note: Keep your API token secure. Do not share it or commit it to version control. ## TODOs - [x] Support multiple Jenkins services - [x] Support string and text parameter types - [x] Support choice parameter type - [x] Support boolean parameter type - [x] Support password parameter type - [x] Auto-detect current directory's git branch - [x] Remember last selected project and build parameters - [x] i18n support (fluent) - [x] Automatically check for updates ## License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.