diff --git a/.gitbook.yaml b/.gitbook.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0bb54cf1efabf848a795fd16b946381b1f4dab70 --- /dev/null +++ b/.gitbook.yaml @@ -0,0 +1,5 @@ +root: ./docs/book + +structure: + readme: README.md + summary: SUMMARY.md diff --git a/README-zh.md b/README-zh.md index f40962f3ff00728c9a081da24bf4d27d8af27781..c55e03d6c4993ca6fe8925cbb1537130610778ca 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,23 +1,14 @@ +# 快速开始 + [English](https://github.com/jenkins-zh/jenkins-cli/blob/master/README.md) -# Jenkins CLI - -[![Go Report Card][go-report-card-badge]][go-report-card-url] -[![Quality Gate Status][sonar-badge]][sonar-link] -[![GoDoc][godoc-badge]][godoc-url] -![Sonar Coverage](https://img.shields.io/sonar/coverage/jenkins-zh_jenkins-cli?server=https%3A%2F%2Fsonarcloud.io) -[![Travis](https://img.shields.io/travis/jenkins-zh/jenkins-cli.svg?logo=travis&label=build&logoColor=white)](https://travis-ci.org/jenkins-zh/jenkins-cli) -[![Contributors](https://img.shields.io/github/contributors/jenkins-zh/jenkins-cli.svg)](https://github.com/jenkins-zh/jenkins-cli/graphs/contributors) -[![GitHub release](https://img.shields.io/github/release/jenkins-zh/jenkins-cli.svg?label=release)](https://github.com/jenkins-zh/jenkins-cli/releases/latest) -![GitHub All Releases](https://img.shields.io/github/downloads/jenkins-zh/jenkins-cli/total) -[![Docker Pulls](https://img.shields.io/docker/pulls/jenkinszh/jcli.svg)](https://hub.docker.com/r/jenkinszh/jcli/tags) -![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/jenkins-zh/jenkins-cli) -[![Gitter](https://badges.gitter.im/jenkinsci/jenkins-cli.svg)](https://gitter.im/jenkinsci/jenkins-cli?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -[![HitCount](http://hits.dwyl.com/jenkins-zh/jenkins-cli.svg)](http://hits.dwyl.com/jenkins-zh/jenkins-cli) +## Jenkins CLI + +[![](https://goreportcard.com/badge/jenkins-zh/jenkins-cli)](https://goreportcard.com/report/jenkins-zh/jenkins-cli) [![](https://sonarcloud.io/api/project_badges/measure?project=jenkins-zh_jenkins-cli&metric=alert_status)](https://sonarcloud.io/dashboard?id=jenkins-zh_jenkins-cli) [![](http://img.shields.io/badge/godoc-reference-5272B4.svg?style=flat-square)](https://godoc.org/github.com/jenkins-zh/jenkins-cli) ![Sonar Coverage](https://img.shields.io/sonar/coverage/jenkins-zh_jenkins-cli?server=https%3A%2F%2Fsonarcloud.io) [![Travis](https://img.shields.io/travis/jenkins-zh/jenkins-cli.svg?logo=travis&label=build&logoColor=white)](https://travis-ci.org/jenkins-zh/jenkins-cli) [![Contributors](https://img.shields.io/github/contributors/jenkins-zh/jenkins-cli.svg)](https://github.com/jenkins-zh/jenkins-cli/graphs/contributors) [![GitHub release](https://img.shields.io/github/release/jenkins-zh/jenkins-cli.svg?label=release)](https://github.com/jenkins-zh/jenkins-cli/releases/latest) ![GitHub All Releases](https://img.shields.io/github/downloads/jenkins-zh/jenkins-cli/total) [![Docker Pulls](https://img.shields.io/docker/pulls/jenkinszh/jcli.svg)](https://hub.docker.com/r/jenkinszh/jcli/tags) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/jenkins-zh/jenkins-cli) [![Gitter](https://badges.gitter.im/jenkinsci/jenkins-cli.svg)](https://gitter.im/jenkinsci/jenkins-cli?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![HitCount](http://hits.dwyl.com/jenkins-zh/jenkins-cli.svg)](http://hits.dwyl.com/jenkins-zh/jenkins-cli) Jenkins CLI 可以帮忙你轻松地管理 Jenkins。不管你是一名插件开发者、管理员或者只是一个普通的 Jenkins 用户,它都是为你而生的! -# 特性 +## 特性 * 支持多 Jenkins 实例管理 * 插件管理(查看列表、搜索、安装、上传) @@ -27,74 +18,71 @@ Jenkins CLI 可以帮忙你轻松地管理 Jenkins。不管你是一名插件开 * 重启你的 Jenkins * 支持通过代理连接 -# 安装 +## 安装 我们目前支持的操作系统包括:MacOS、Linux 以及 Windows。 -## mac +### mac 你可以通过 `brew` 来安装 jcli。 -``` + +```text brew tap jenkins-zh/jcli brew install jcli ``` -## Linux +### Linux 要在 Linux 操作系统上安装 `jcli` 的话,非常简单。只需要执行下面的命令即可: -``` + +```text curl -L https://github.com/jenkins-zh/jenkins-cli/releases/latest/download/jcli-linux-amd64.tar.gz|tar xzv sudo mv jcli /usr/local/bin/ ``` -## Windows +### Windows 你只要[点击这里](https://github.com/jenkins-zh/jenkins-cli/releases/latest/download/jcli-windows-amd64.zip)就可以下载到最新版本的压缩包。之后,把解压后的文件 `jcli` 拷贝到你的系统目录下即可。 -## 其他包管理器 +### 其他包管理器 这里还有一些其他的包管理器: * [Scoop](https://scoop.sh/) 的用户可以使用命令 `scoop install jcli` 来安装 -了解更多[如何下载 jcli](doc/download-zh.md). -你可以从[这里](http://somsubhra.com/github-release-stats/?username=jenkins-zh&repository=jenkins-cli)获取下载的统计信息。 +了解更多[如何下载 jcli](https://github.com/jenkins-zh/jenkins-cli/tree/e83af606f648040665b8b2955c1c2414bb68c1db/docs/book/zh/download-zh.md). 你可以从[这里](http://somsubhra.com/github-release-stats/?username=jenkins-zh&repository=jenkins-cli)获取下载的统计信息。 -# 入门 +## 入门 查阅[官方文档](http://jcli.jenkins-zh.cn/)可以了解到更多有关如何使用 `jcli` 的信息。 或者,你可以选择 Jenkins CLI 的[一个在线的交互式教程](https://www.katacoda.com/jenkins-zh/scenarios/course-jcli)。 -# 插件 +## 插件 通过安装插件可以增强 Jenkins CLI 的功能。按照下面的命令就可以安装一个插件: -``` +```text jcli config plugin fetch jcli config plugin install account ``` 所有官方的插件,都可以在[这里](https://github.com/jenkins-zh/jcli-plugins)找到。 -# 贡献 +## 贡献 -如果你对该项目感兴趣,请首先仔细阅读我们的[贡献指南](CONTRIBUTING.md)。我们欢迎任何形式的贡献。 +如果你对该项目感兴趣,请首先仔细阅读我们的[贡献指南](https://github.com/jenkins-zh/jenkins-cli/tree/e83af606f648040665b8b2955c1c2414bb68c1db/CONTRIBUTING.md)。我们欢迎任何形式的贡献。 感谢 JetBrains 为我们提供了开源许可证。 -[![goland.svg](./goland.svg)](https://www.jetbrains.com/?from=jenkins-cli) +[![goland.svg](docs/book/.gitbook/assets/goland.svg)](https://www.jetbrains.com/?from=jenkins-cli) + +## 相关的项目 -# 相关的项目 有一些相关的项目你可能会比较感兴趣: + * [jenni](https://github.com/m-sureshraj/jenni) 是一个 Jenkins 个人助手 -# 点赞数趋势图 +## 点赞数趋势图 [![Stargazers over time](https://starchart.cc/jenkins-zh/jenkins-cli.svg)](https://starchart.cc/jenkins-zh/jenkins-cli) -[go-report-card-url]: https://goreportcard.com/report/jenkins-zh/jenkins-cli -[go-report-card-badge]: https://goreportcard.com/badge/jenkins-zh/jenkins-cli -[sonar-badge]: https://sonarcloud.io/api/project_badges/measure?project=jenkins-zh_jenkins-cli&metric=alert_status -[sonar-link]: https://sonarcloud.io/dashboard?id=jenkins-zh_jenkins-cli -[godoc-url]: https://godoc.org/github.com/jenkins-zh/jenkins-cli -[godoc-badge]: http://img.shields.io/badge/godoc-reference-5272B4.svg?style=flat-square diff --git a/README.md b/README.md index 7e8f8131224c88d8a42e891e0ca8e987562858ae..f4f4ceb5ca1efdd18ab35d8f98e11a66e6dac7c3 100644 --- a/README.md +++ b/README.md @@ -1,103 +1,88 @@ +# Quick start + [简体中文](https://github.com/jenkins-zh/jenkins-cli/blob/master/README-zh.md) -# Jenkins CLI +## Jenkins CLI -[![Go Report Card][go-report-card-badge]][go-report-card-url] -[![Quality Gate Status][sonar-badge]][sonar-link] -[![GoDoc][godoc-badge]][godoc-url] -![Sonar Coverage](https://img.shields.io/sonar/coverage/jenkins-zh_jenkins-cli?server=https%3A%2F%2Fsonarcloud.io) -[![Travis](https://img.shields.io/travis/jenkins-zh/jenkins-cli.svg?logo=travis&label=build&logoColor=white)](https://travis-ci.org/jenkins-zh/jenkins-cli) -[![Contributors](https://img.shields.io/github/contributors/jenkins-zh/jenkins-cli.svg)](https://github.com/jenkins-zh/jenkins-cli/graphs/contributors) -[![GitHub release](https://img.shields.io/github/release/jenkins-zh/jenkins-cli.svg?label=release)](https://github.com/jenkins-zh/jenkins-cli/releases/latest) -![GitHub All Releases](https://img.shields.io/github/downloads/jenkins-zh/jenkins-cli/total) -[![Docker Pulls](https://img.shields.io/docker/pulls/jenkinszh/jcli.svg)](https://hub.docker.com/r/jenkinszh/jcli/tags) -![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/jenkins-zh/jenkins-cli) -[![Gitter](https://badges.gitter.im/jenkinsci/jenkins-cli.svg)](https://gitter.im/jenkinsci/jenkins-cli?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -[![HitCount](http://hits.dwyl.com/jenkins-zh/jenkins-cli.svg)](http://hits.dwyl.com/jenkins-zh/jenkins-cli) +[![](https://goreportcard.com/badge/jenkins-zh/jenkins-cli)](https://goreportcard.com/report/jenkins-zh/jenkins-cli) [![](https://sonarcloud.io/api/project_badges/measure?project=jenkins-zh_jenkins-cli&metric=alert_status)](https://sonarcloud.io/dashboard?id=jenkins-zh_jenkins-cli) [![](http://img.shields.io/badge/godoc-reference-5272B4.svg?style=flat-square)](https://godoc.org/github.com/jenkins-zh/jenkins-cli) ![Sonar Coverage](https://img.shields.io/sonar/coverage/jenkins-zh_jenkins-cli?server=https%3A%2F%2Fsonarcloud.io) [![Travis](https://img.shields.io/travis/jenkins-zh/jenkins-cli.svg?logo=travis&label=build&logoColor=white)](https://travis-ci.org/jenkins-zh/jenkins-cli) [![Contributors](https://img.shields.io/github/contributors/jenkins-zh/jenkins-cli.svg)](https://github.com/jenkins-zh/jenkins-cli/graphs/contributors) [![GitHub release](https://img.shields.io/github/release/jenkins-zh/jenkins-cli.svg?label=release)](https://github.com/jenkins-zh/jenkins-cli/releases/latest) ![GitHub All Releases](https://img.shields.io/github/downloads/jenkins-zh/jenkins-cli/total) [![Docker Pulls](https://img.shields.io/docker/pulls/jenkinszh/jcli.svg)](https://hub.docker.com/r/jenkinszh/jcli/tags) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/jenkins-zh/jenkins-cli) [![Gitter](https://badges.gitter.im/jenkinsci/jenkins-cli.svg)](https://gitter.im/jenkinsci/jenkins-cli?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![HitCount](http://hits.dwyl.com/jenkins-zh/jenkins-cli.svg)](http://hits.dwyl.com/jenkins-zh/jenkins-cli) -Jenkins CLI allows you manage your Jenkins in an easy way. No matter if you're a plugin -developer, administrator or just a regular user, it is made for you! +Jenkins CLI allows you manage your Jenkins in an easy way. No matter if you're a plugin developer, administrator or just a regular user, it is made for you! -# Features +## Features * Multiple Jenkins support -* Plugins management (list, search, install, upload) -* Job management (search, build, log) +* Plugins management \(list, search, install, upload\) +* Job management \(search, build, log\) * Configuration as Code support * Open your Jenkins with a browser * Restart your Jenkins * Connection with proxy support -# Get it +## Get it We support Mac, Linux and Windows for now. -## Mac +### Mac You can use `brew` to install jcli. -``` + +```text brew tap jenkins-zh/jcli brew install jcli ``` -## Linux +### Linux To install `jcli` on your Linux OS, execute the following command: -``` + +```text curl -L https://github.com/jenkins-zh/jenkins-cli/releases/latest/download/jcli-linux-amd64.tar.gz|tar xzv sudo mv jcli /usr/local/bin/ ``` -## Windows +### Windows -You can find the latest version [here](https://github.com/jenkins-zh/jenkins-cli/releases/latest/download/jcli-windows-amd64.zip). -Download the tar file and copy the uncompressed `jcli` directory into your system path. +You can find the latest version [here](https://github.com/jenkins-zh/jenkins-cli/releases/latest/download/jcli-windows-amd64.zip). Download the tar file and copy the uncompressed `jcli` directory into your system path. -## Other package managers +### Other package managers Here are other package managers: * [Scoop](https://scoop.sh/) users can use `scoop install jcli` -See more about [how to download jcli](doc/download.md). -You can find the download details [from here](http://somsubhra.com/github-release-stats/?username=jenkins-zh&repository=jenkins-cli). +See more about [how to download jcli](docs/book/en/download.md). You can find the download details [from here](http://somsubhra.com/github-release-stats/?username=jenkins-zh&repository=jenkins-cli). -# Get started +## Get started Read the [official document](http://jcli.jenkins-zh.cn/) for more details on how to use `jcli`. Or, you can take [a live interactive course](https://www.katacoda.com/jenkins-zh/scenarios/course-jcli) of Jenkins CLI. -# Plugins +## Plugins Jenkins CLI could have more features by installing a plugin for it. You can install a plugin by the following command: -``` +```text jcli config plugin fetch jcli config plugin install account ``` All official plugins could be found at [here](https://github.com/jenkins-zh/jcli-plugins). -# Contribution +## Contribution -If you're interested in this project. Please go through the -[contribution guide](CONTRIBUTING.md). Any contributions are welcome. +If you're interested in this project. Please go through the [contribution guide](https://github.com/jenkins-zh/jenkins-cli/tree/cb3d358df4699db11b681eb0ab9adffbfb8a7bd4/CONTRIBUTING.md). Any contributions are welcome. Thanks to JetBrains for giving us the open source licence. -[![goland.svg](./goland.svg)](https://www.jetbrains.com/?from=jenkins-cli) +[![goland.svg](docs/book/.gitbook/assets/goland.svg)](https://www.jetbrains.com/?from=jenkins-cli) + +## Similar Projects -# Similar Projects There're a few similar projects that you might be interested in: + * [jenni](https://github.com/m-sureshraj/jenni) is a Jenkins Personal Assistant -# Stargazers over time +## Stargazers over time [![Stargazers over time](https://starchart.cc/jenkins-zh/jenkins-cli.svg)](https://starchart.cc/jenkins-zh/jenkins-cli) -[go-report-card-url]: https://goreportcard.com/report/jenkins-zh/jenkins-cli -[go-report-card-badge]: https://goreportcard.com/badge/jenkins-zh/jenkins-cli -[sonar-badge]: https://sonarcloud.io/api/project_badges/measure?project=jenkins-zh_jenkins-cli&metric=alert_status -[sonar-link]: https://sonarcloud.io/dashboard?id=jenkins-zh_jenkins-cli -[godoc-url]: https://godoc.org/github.com/jenkins-zh/jenkins-cli -[godoc-badge]: http://img.shields.io/badge/godoc-reference-5272B4.svg?style=flat-square diff --git a/app/cmd/runner.go b/app/cmd/runner.go index 66ca4314b418f60f6daee13268faa21535647ec5..d59f945c3dcfc3c311faacbd9d016af3e79f2713 100644 --- a/app/cmd/runner.go +++ b/app/cmd/runner.go @@ -8,10 +8,8 @@ import ( "github.com/mitchellh/go-homedir" "github.com/spf13/cobra" "go.uber.org/zap" - "log" "net/http" "os" - "os/exec" "path/filepath" "strings" ) @@ -66,16 +64,18 @@ Get more about jenkinsfile runner from https://github.com/jenkinsci/jenkinsfile- //Start by downloading the mirror for the jenkinsfileRunner jenkinsfileRunnerVersion := fmt.Sprintf("jenkinsfile-runner-%s.jar", runnerOption.JfrVersion) jenkinsfileRunnerTargetPath := fmt.Sprintf("%s/.jenkins-cli/cache/%s/%s", userHome, runnerOption.WarVersion, jenkinsfileRunnerVersion) - jenkinsfileRunnerURL := fmt.Sprintf("https://repo.jenkins-ci.org/list/releases/io/jenkins/jenkinsfile-runner/jenkinsfile-runner/1.0-beta-11/%s", jenkinsfileRunnerVersion) + jenkinsfileRunnerURL := fmt.Sprintf("https://repo.jenkins-ci.org/list/releases/io/jenkins/jenkinsfile-runner/jenkinsfile-runner/%s/%s", runnerOption.JfrVersion, jenkinsfileRunnerVersion) logger.Info("Prepare to start Downloading jenkinfileRunner", zap.String("URL", jenkinsfileRunnerURL)) - downloader := util.HTTPDownloader{ - URL: jenkinsfileRunnerURL, - ShowProgress: true, - TargetFilePath: jenkinsfileRunnerTargetPath, - } - if err := downloader.DownloadFile(); err != nil { - //Fatal error has occured while downloading the file. - log.Fatal(err) + + if _, fErr := os.Stat(jenkinsfileRunnerTargetPath); fErr != nil && os.IsNotExist(fErr) { + downloader := util.HTTPDownloader{ + URL: jenkinsfileRunnerURL, + ShowProgress: true, + TargetFilePath: jenkinsfileRunnerTargetPath, + } + if err = downloader.DownloadFile(); err != nil { + return + } } if runnerOption.WarPath == "" { @@ -121,13 +121,14 @@ Get more about jenkinsfile runner from https://github.com/jenkinsci/jenkinsfile- return fmt.Errorf("invalid file type. kindly provide a jenkinsfile") } - fmt.Println("We are Definitely reaching here") - command := exec.Command("java", "-jar", jenkinsfileRunnerVersion, "-w", runnerOption.WarPath, "-p", runnerOption.PluginPath, "-f", runnerOption.JenkinsfilePath) - command.Dir = fmt.Sprintf("%s/.jenkins-cli/cache/%s", userHome, runnerOption.WarVersion) - out, err := command.Output() - fmt.Println("Reaching her", string(out)) - logger.Info(string(out)) + var binary string + binary, err = util.LookPath("java", centerStartOption.LookPathContext) + if err == nil { + jenkinsWarArgs := []string{"java", "-jar", jenkinsfileRunnerTargetPath, "-w", runnerOption.WarPath, "-p", runnerOption.PluginPath, "-f", runnerOption.JenkinsfilePath} + env := os.Environ() + err = util.Exec(binary, jenkinsWarArgs, env, centerStartOption.SystemCallExec) + } - return nil + return }, } diff --git a/doc/README.md b/doc/README.md deleted file mode 100644 index ee9dffdc1b20ff07cd9b34ff213eaa8b97fa6b2e..0000000000000000000000000000000000000000 --- a/doc/README.md +++ /dev/null @@ -1,54 +0,0 @@ -# jcli Document - -`jcli` was written by [golang](https://github.com/golang) which could provide you a easy way to manage your Jenkins. Unlike the [build-in cli](https://jenkins.io/doc/book/managing/cli/), `jcli` allows you manage multiple servers. - -## How to get it - -Read [here](../README.md) to get know about how to install `jcli`. - -## Configuration - -Once you'v installed `jcli`. You should provide a config file for it. Please execute cmd `jcli config generate`, this will help you to edit the config file `~/.jenkins-cli.yaml`. According to your Jenkins configuration to modify this file. - -If you want to modify your config file of `jcli`. You just need to execute `jcli config edit`. - -It's simple to add another Jenkins config item. Here's a sample cmd: `jcli config add -n yourJenkinsName --url http://localhost:8080/jenkins --token replacethesampletoken`. - -## Plugin Management - -`jcli` allows you to search, download, install, uninstall or upload a plugin. - -First, please search a plugin by a keyword if you want to install it. You can get a plugin list by execute `jcli plugin search zh-cn`. You can install it with the plugin name. - -For example, you can install the Simplified Chinese Localization plugin by `jcli plugin install localization-zh-cn`. - -### Download Plugins - -Some times, Jenkins just cannot connect with the offical Update Center. We can use the `download` sub-cmd to download all the plugins which're you need, then upload them. This command will take care of the dependencies of the plugin. - -You can try it: - -`jcli plugin download localization-zh-cn` - -## Job Management - -You can search a job list using a keyword, like this: `jcli job search input`. - -It's very simple to trigger a job. We have the batch mode and interactive mode. This command will finish immediately. - -`jcli job build "folderName jobName" -b` - -Once you triggered a job, then you can watch the log output by `jcli job log "zjproject zjproject-inputstep55" -w`. This command will always output the log of the last build. - -## Proxy Support - -Jenkins might be stay in behind a firewall. So we cannot connect it directly. You can give `jcli` a proxy setting. It's also very simple to support a proxy setting. You just need to execute: `jcli config edit`. Then find the item which you want to add a proxy. Like the below demo: - -``` -- name: dev - url: http://192.168.1.10 - username: admin - token: 11132c9ae4b20edbe56ac3e09cb5a3c8c2 - proxy: http://192.168.10.10:47586 - proxyAuth: username:password -``` diff --git a/goland.svg b/docs/book/.gitbook/assets/goland.svg similarity index 100% rename from goland.svg rename to docs/book/.gitbook/assets/goland.svg diff --git a/docs/book/README.md b/docs/book/README.md new file mode 100644 index 0000000000000000000000000000000000000000..f4f4ceb5ca1efdd18ab35d8f98e11a66e6dac7c3 --- /dev/null +++ b/docs/book/README.md @@ -0,0 +1,88 @@ +# Quick start + +[简体中文](https://github.com/jenkins-zh/jenkins-cli/blob/master/README-zh.md) + +## Jenkins CLI + +[![](https://goreportcard.com/badge/jenkins-zh/jenkins-cli)](https://goreportcard.com/report/jenkins-zh/jenkins-cli) [![](https://sonarcloud.io/api/project_badges/measure?project=jenkins-zh_jenkins-cli&metric=alert_status)](https://sonarcloud.io/dashboard?id=jenkins-zh_jenkins-cli) [![](http://img.shields.io/badge/godoc-reference-5272B4.svg?style=flat-square)](https://godoc.org/github.com/jenkins-zh/jenkins-cli) ![Sonar Coverage](https://img.shields.io/sonar/coverage/jenkins-zh_jenkins-cli?server=https%3A%2F%2Fsonarcloud.io) [![Travis](https://img.shields.io/travis/jenkins-zh/jenkins-cli.svg?logo=travis&label=build&logoColor=white)](https://travis-ci.org/jenkins-zh/jenkins-cli) [![Contributors](https://img.shields.io/github/contributors/jenkins-zh/jenkins-cli.svg)](https://github.com/jenkins-zh/jenkins-cli/graphs/contributors) [![GitHub release](https://img.shields.io/github/release/jenkins-zh/jenkins-cli.svg?label=release)](https://github.com/jenkins-zh/jenkins-cli/releases/latest) ![GitHub All Releases](https://img.shields.io/github/downloads/jenkins-zh/jenkins-cli/total) [![Docker Pulls](https://img.shields.io/docker/pulls/jenkinszh/jcli.svg)](https://hub.docker.com/r/jenkinszh/jcli/tags) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/jenkins-zh/jenkins-cli) [![Gitter](https://badges.gitter.im/jenkinsci/jenkins-cli.svg)](https://gitter.im/jenkinsci/jenkins-cli?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![HitCount](http://hits.dwyl.com/jenkins-zh/jenkins-cli.svg)](http://hits.dwyl.com/jenkins-zh/jenkins-cli) + +Jenkins CLI allows you manage your Jenkins in an easy way. No matter if you're a plugin developer, administrator or just a regular user, it is made for you! + +## Features + +* Multiple Jenkins support +* Plugins management \(list, search, install, upload\) +* Job management \(search, build, log\) +* Configuration as Code support +* Open your Jenkins with a browser +* Restart your Jenkins +* Connection with proxy support + +## Get it + +We support Mac, Linux and Windows for now. + +### Mac + +You can use `brew` to install jcli. + +```text +brew tap jenkins-zh/jcli +brew install jcli +``` + +### Linux + +To install `jcli` on your Linux OS, execute the following command: + +```text +curl -L https://github.com/jenkins-zh/jenkins-cli/releases/latest/download/jcli-linux-amd64.tar.gz|tar xzv +sudo mv jcli /usr/local/bin/ +``` + +### Windows + +You can find the latest version [here](https://github.com/jenkins-zh/jenkins-cli/releases/latest/download/jcli-windows-amd64.zip). Download the tar file and copy the uncompressed `jcli` directory into your system path. + +### Other package managers + +Here are other package managers: + +* [Scoop](https://scoop.sh/) users can use `scoop install jcli` + +See more about [how to download jcli](docs/book/en/download.md). You can find the download details [from here](http://somsubhra.com/github-release-stats/?username=jenkins-zh&repository=jenkins-cli). + +## Get started + +Read the [official document](http://jcli.jenkins-zh.cn/) for more details on how to use `jcli`. + +Or, you can take [a live interactive course](https://www.katacoda.com/jenkins-zh/scenarios/course-jcli) of Jenkins CLI. + +## Plugins + +Jenkins CLI could have more features by installing a plugin for it. You can install a plugin by the following command: + +```text +jcli config plugin fetch +jcli config plugin install account +``` + +All official plugins could be found at [here](https://github.com/jenkins-zh/jcli-plugins). + +## Contribution + +If you're interested in this project. Please go through the [contribution guide](https://github.com/jenkins-zh/jenkins-cli/tree/cb3d358df4699db11b681eb0ab9adffbfb8a7bd4/CONTRIBUTING.md). Any contributions are welcome. + +Thanks to JetBrains for giving us the open source licence. +[![goland.svg](docs/book/.gitbook/assets/goland.svg)](https://www.jetbrains.com/?from=jenkins-cli) + +## Similar Projects + +There're a few similar projects that you might be interested in: + +* [jenni](https://github.com/m-sureshraj/jenni) is a Jenkins Personal Assistant + +## Stargazers over time + +[![Stargazers over time](https://starchart.cc/jenkins-zh/jenkins-cli.svg)](https://starchart.cc/jenkins-zh/jenkins-cli) + diff --git a/docs/book/SUMMARY.md b/docs/book/SUMMARY.md new file mode 100644 index 0000000000000000000000000000000000000000..162574f3913766349bf3403593002cd3df932867 --- /dev/null +++ b/docs/book/SUMMARY.md @@ -0,0 +1,34 @@ +# Table of contents + +* [Introduction](README.md) + +## English + +* [Job](en/job.md) +* [Plugin](en/plugin.md) +* [Download](en/download.md) +* [Credential](en/credential.md) +* [Completion](en/completion.md) +* [User](en/user.md) +* [Diganose](en/doctor.md) +* [Proxy setting](en/proxy.md) + +## 中文 + +* [介绍](zh/README.md) +* [任务](zh/job.md) +* [插件](zh/plugin.md) +* [节点](zh/agent.md) +* [打开浏览器](zh/open.md) +* [下载](zh/download.md) +* [凭据](zh/credential.md) +* [自动补全](zh/completion.md) +* [用户](zh/user.md) +* [诊断](zh/doctor.md) +* [代理设置](zh/proxy.md) +* [命令钩子](zh/hooks.md) +* [Shell](zh/shell.md) + +## advanced + +* [Setup config file](advanced/setup-config-path.md) diff --git a/docs/book/advanced/setup-config-path.md b/docs/book/advanced/setup-config-path.md new file mode 100644 index 0000000000000000000000000000000000000000..e3fcfe5b455ece197bad4bbb334f32e23ca051e1 --- /dev/null +++ b/docs/book/advanced/setup-config-path.md @@ -0,0 +1,10 @@ +# Setup config file + +In some cases, you might want to give it a specific configuration path instead of the default one. You can do it by add an environment variable `JCLI_CONFIG`. + +For example, put the following config into your shell profile: + +```text +JCLI_CONFIG=/var/yourPath/jenkins-cli.yaml +``` + diff --git a/docs/book/en/completion.md b/docs/book/en/completion.md new file mode 100644 index 0000000000000000000000000000000000000000..e9f1a96f7510d088f10e706529f6bd2398fe92c8 --- /dev/null +++ b/docs/book/en/completion.md @@ -0,0 +1,23 @@ +--- +title: "completion" +weight: 102 +--- + +## install auto-completion for zsh + +if you install iterm2 on your macOS or linux,and you use `oh-my-zsh`,you can follow the steps: + +``` +# cd ~/.oh-my-zsh/plugins +// create incr folder +# mkdir incr +// download incr plugin +# wget https://mimosa-pudica.net/src/incr-0.2.zsh +// authorize incr +# chmod 777 ~/.oh-my-zsh/plugins/incr/incr-0.2.zsh +# vim ~/.zshrc, and insert "source ~/.oh-my-zsh/plugins/incr/incr-0.2.zsh" in the "~/.zshrc",save and quit +// flush configuration +# source ~/.zshrc +``` + +Then you can use auto-completion for jcli, maybe you will find other commands can also use it diff --git a/doc/download.md b/docs/book/en/download.md similarity index 69% rename from doc/download.md rename to docs/book/en/download.md index 150d9e2ecd70ae1a8077595a14c2f97b1df57ff8..1271fa6e9cb8b9a055a1a95f53933809bde2c1c3 100644 --- a/doc/download.md +++ b/docs/book/en/download.md @@ -1,4 +1,7 @@ +# download + ## JFrog Bintray + You can download `jcli` from [bintray.com/jenkins-zh](https://bintray.com/beta/#/jenkins-zh/generic/jenkins-cli/). `curl -L "https://bintray.com/jenkins-zh/jenkins-cli/download_file?file_path=v0.0.24%2Fjcli-darwin-amd64.tar.gz"|tar xzv` @@ -9,10 +12,9 @@ Get all versions from [here](https://dl.bintray.com/jenkins-zh/generic/jenkins-c Add YUM source repo by the following command: -```shell script -wget https://bintray.com/jenkins-zh/rpm/rpm -O /etc/yum.repos.d/bintray-jcli.repo -``` +\`\`\`shell script wget [https://bintray.com/jenkins-zh/rpm/rpm](https://bintray.com/jenkins-zh/rpm/rpm) -O /etc/yum.repos.d/bintray-jcli.repo +```text then you can install it by: `yum install jcli` ## Debian @@ -26,24 +28,25 @@ echo "deb https://dl.bintray.com/jenkins-zh/deb wheezy main" | sudo tee -a /etc/ then you can install it by: `sudo apt-get install jcli` ## Image + Also you can try the following ways: `jcli_id=$(docker create jenkinszh/jcli) && sudo docker cp $jcli_id:/usr/local/bin/jcli /usr/local/bin/jcli && docker rm -v $jcli_id` Download different version of OS? Just need to change the docker image tag: -|image|description| -|---|---| -|`jenkinszh/jcli`|Linux| -|`jenkinszh/jcli:darwin`|Mac| -|`jenkinszh/jcli:win`|Windows, you can find it from `/usr/local/bin/jcli.exe`| -|`jenkinszh/jcli:dev`|Developing version, find can find them from `/bin/linux/jcli` or `/bin/darwin/jcli` or `/bin/windows/jcli.exe`| +| image | description | +| :--- | :--- | +| `jenkinszh/jcli` | Linux | +| `jenkinszh/jcli:darwin` | Mac | +| `jenkinszh/jcli:win` | Windows, you can find it from `/usr/local/bin/jcli.exe` | +| `jenkinszh/jcli:dev` | Developing version, find can find them from `/bin/linux/jcli` or `/bin/darwin/jcli` or `/bin/windows/jcli.exe` | Want to try the latest features? Download the developing version of different platform: -- `jcli_id=$(docker create jenkinszh/jcli:dev) && sudo docker cp $jcli_id:/bin/linux/jcli . && docker rm -v $jcli_id` -- `jcli_id=$(docker create jenkinszh/jcli:dev) && sudo docker cp $jcli_id:/bin/darwin/jcli . && docker rm -v $jcli_id` -- `jcli_id=$(docker create jenkinszh/jcli:dev) && sudo docker cp $jcli_id:/bin/windows/jcli.exe . && docker rm -v $jcli_id` +* `jcli_id=$(docker create jenkinszh/jcli:dev) && sudo docker cp $jcli_id:/bin/linux/jcli . && docker rm -v $jcli_id` +* `jcli_id=$(docker create jenkinszh/jcli:dev) && sudo docker cp $jcli_id:/bin/darwin/jcli . && docker rm -v $jcli_id` +* `jcli_id=$(docker create jenkinszh/jcli:dev) && sudo docker cp $jcli_id:/bin/windows/jcli.exe . && docker rm -v $jcli_id` ## Out-of-date @@ -52,3 +55,4 @@ Below distributions are out-of-date. If you want to maintain them, please let us * [GoFish](https://gofi.sh/) users can use `gofish install jcli` * [Chocolatey](https://chocolatey.org/packages/jcli) users can use `choco install jcli` * [Snapcraft](https://snapcraft.io/jcli) users can use `sudo snap install jcli` + diff --git a/docs/book/en/job.md b/docs/book/en/job.md new file mode 100644 index 0000000000000000000000000000000000000000..f48ca54a1abf9e085b0c09de155de6000254c8f7 --- /dev/null +++ b/docs/book/en/job.md @@ -0,0 +1,28 @@ +--- +title: "Job" +weight: 80 +--- + +## Job Management + +You can search a job list using a keyword, like this: `jcli job search input`. + +It's very simple to trigger a job. We have the batch mode and interactive mode. This command will finish immediately. + +`jcli job build "folderName jobName" -b` + +Once you triggered a job, then you can watch the log output by `jcli job log "zjproject zjproject-inputstep55" -w`. This command will always output the log of the last build. + +## Proxy Support + +Jenkins might be stay in behind a firewall. So we cannot connect it directly. You can give `jcli` a proxy setting. It's also very simple to support a proxy setting. You just need to execute: `jcli config edit`. Then find the item which you want to add a proxy. Like the below demo: + +``` +jenkins_servers: +- name: dev + url: http://192.168.1.10 + username: admin + token: 11132c9ae4b20edbe56ac3e09cb5a3c8c2 + proxy: http://192.168.10.10:47586 + proxyAuth: username:password +``` diff --git a/docs/book/en/plugin.md b/docs/book/en/plugin.md new file mode 100644 index 0000000000000000000000000000000000000000..82c18508a5bce2688438af62f16ae58b0daa8798 --- /dev/null +++ b/docs/book/en/plugin.md @@ -0,0 +1,21 @@ +--- +title: "Plugin" +anchor: "plugin" +weight: 70 +--- + +## Plugin Management + +`jcli` allows you to search, download, install, uninstall or upload a plugin. + +First, please search a plugin by a keyword if you want to install it. You can get a plugin list by execute `jcli plugin search zh-cn`. You can install it with the plugin name. + +For example, you can install the Simplified Chinese Localization plugin by `jcli plugin install localization-zh-cn`. + +### Download Plugins + +Some times, Jenkins just cannot connect with the offical Update Center. We can use the `download` sub-cmd to download all the plugins which're you need, then upload them. This command will take care of the dependencies of the plugin. + +You can try it: + +`jcli plugin download localization-zh-cn` diff --git a/docs/book/en/proxy.md b/docs/book/en/proxy.md new file mode 100644 index 0000000000000000000000000000000000000000..5975029b754cbb83cdd44d49e3bf3171dee22d4e --- /dev/null +++ b/docs/book/en/proxy.md @@ -0,0 +1,16 @@ +--- +title: "Proxy" +weight: 90 +--- + +Jenkins might be stay in behind a firewall. So we cannot connect it directly. You can give `jcli` a proxy setting. It's also very simple to support a proxy setting. You just need to execute: `jcli config edit`. Then find the item which you want to add a proxy. Like the below demo: + +``` +jenkins_servers: +- name: dev + url: http://192.168.1.10 + username: admin + token: 11132c9ae4b20edbe56ac3e09cb5a3c8c2 + proxy: http://192.168.10.10:47586 + proxyAuth: username:password +``` diff --git a/docs/book/zh/README.md b/docs/book/zh/README.md new file mode 100644 index 0000000000000000000000000000000000000000..c55e03d6c4993ca6fe8925cbb1537130610778ca --- /dev/null +++ b/docs/book/zh/README.md @@ -0,0 +1,88 @@ +# 快速开始 + +[English](https://github.com/jenkins-zh/jenkins-cli/blob/master/README.md) + +## Jenkins CLI + +[![](https://goreportcard.com/badge/jenkins-zh/jenkins-cli)](https://goreportcard.com/report/jenkins-zh/jenkins-cli) [![](https://sonarcloud.io/api/project_badges/measure?project=jenkins-zh_jenkins-cli&metric=alert_status)](https://sonarcloud.io/dashboard?id=jenkins-zh_jenkins-cli) [![](http://img.shields.io/badge/godoc-reference-5272B4.svg?style=flat-square)](https://godoc.org/github.com/jenkins-zh/jenkins-cli) ![Sonar Coverage](https://img.shields.io/sonar/coverage/jenkins-zh_jenkins-cli?server=https%3A%2F%2Fsonarcloud.io) [![Travis](https://img.shields.io/travis/jenkins-zh/jenkins-cli.svg?logo=travis&label=build&logoColor=white)](https://travis-ci.org/jenkins-zh/jenkins-cli) [![Contributors](https://img.shields.io/github/contributors/jenkins-zh/jenkins-cli.svg)](https://github.com/jenkins-zh/jenkins-cli/graphs/contributors) [![GitHub release](https://img.shields.io/github/release/jenkins-zh/jenkins-cli.svg?label=release)](https://github.com/jenkins-zh/jenkins-cli/releases/latest) ![GitHub All Releases](https://img.shields.io/github/downloads/jenkins-zh/jenkins-cli/total) [![Docker Pulls](https://img.shields.io/docker/pulls/jenkinszh/jcli.svg)](https://hub.docker.com/r/jenkinszh/jcli/tags) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/jenkins-zh/jenkins-cli) [![Gitter](https://badges.gitter.im/jenkinsci/jenkins-cli.svg)](https://gitter.im/jenkinsci/jenkins-cli?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![HitCount](http://hits.dwyl.com/jenkins-zh/jenkins-cli.svg)](http://hits.dwyl.com/jenkins-zh/jenkins-cli) + +Jenkins CLI 可以帮忙你轻松地管理 Jenkins。不管你是一名插件开发者、管理员或者只是一个普通的 Jenkins 用户,它都是为你而生的! + +## 特性 + +* 支持多 Jenkins 实例管理 +* 插件管理(查看列表、搜索、安装、上传) +* 任务管理(搜索、构建触发、日志查看) +* 支持配置即管理 +* 在浏览器中打开你的 Jenkins +* 重启你的 Jenkins +* 支持通过代理连接 + +## 安装 + +我们目前支持的操作系统包括:MacOS、Linux 以及 Windows。 + +### mac + +你可以通过 `brew` 来安装 jcli。 + +```text +brew tap jenkins-zh/jcli +brew install jcli +``` + +### Linux + +要在 Linux 操作系统上安装 `jcli` 的话,非常简单。只需要执行下面的命令即可: + +```text +curl -L https://github.com/jenkins-zh/jenkins-cli/releases/latest/download/jcli-linux-amd64.tar.gz|tar xzv +sudo mv jcli /usr/local/bin/ +``` + +### Windows + +你只要[点击这里](https://github.com/jenkins-zh/jenkins-cli/releases/latest/download/jcli-windows-amd64.zip)就可以下载到最新版本的压缩包。之后,把解压后的文件 `jcli` 拷贝到你的系统目录下即可。 + +### 其他包管理器 + +这里还有一些其他的包管理器: + +* [Scoop](https://scoop.sh/) 的用户可以使用命令 `scoop install jcli` 来安装 + +了解更多[如何下载 jcli](https://github.com/jenkins-zh/jenkins-cli/tree/e83af606f648040665b8b2955c1c2414bb68c1db/docs/book/zh/download-zh.md). 你可以从[这里](http://somsubhra.com/github-release-stats/?username=jenkins-zh&repository=jenkins-cli)获取下载的统计信息。 + +## 入门 + +查阅[官方文档](http://jcli.jenkins-zh.cn/)可以了解到更多有关如何使用 `jcli` 的信息。 + +或者,你可以选择 Jenkins CLI 的[一个在线的交互式教程](https://www.katacoda.com/jenkins-zh/scenarios/course-jcli)。 + +## 插件 + +通过安装插件可以增强 Jenkins CLI 的功能。按照下面的命令就可以安装一个插件: + +```text +jcli config plugin fetch +jcli config plugin install account +``` + +所有官方的插件,都可以在[这里](https://github.com/jenkins-zh/jcli-plugins)找到。 + +## 贡献 + +如果你对该项目感兴趣,请首先仔细阅读我们的[贡献指南](https://github.com/jenkins-zh/jenkins-cli/tree/e83af606f648040665b8b2955c1c2414bb68c1db/CONTRIBUTING.md)。我们欢迎任何形式的贡献。 + +感谢 JetBrains 为我们提供了开源许可证。 +[![goland.svg](docs/book/.gitbook/assets/goland.svg)](https://www.jetbrains.com/?from=jenkins-cli) + +## 相关的项目 + +有一些相关的项目你可能会比较感兴趣: + +* [jenni](https://github.com/m-sureshraj/jenni) 是一个 Jenkins 个人助手 + +## 点赞数趋势图 + +[![Stargazers over time](https://starchart.cc/jenkins-zh/jenkins-cli.svg)](https://starchart.cc/jenkins-zh/jenkins-cli) + diff --git a/docs/book/zh/agent.md b/docs/book/zh/agent.md new file mode 100644 index 0000000000000000000000000000000000000000..82efc6348145a5cb0a9408dcb98e865df6ffe1d7 --- /dev/null +++ b/docs/book/zh/agent.md @@ -0,0 +1,29 @@ +# 计算节点 + +Jenkins 的最佳实践是让 master 只做调度任务,其他的构建等任务的执行都放在 agent(计算节点)上运行。 +在安装不同插件后,使得 Jenkins 可以支持静态、动态类型的节点。所谓静态,指的是需要我们人工来维护,例如: +创建、上线、下线对应的节点。所谓动态,则可以根据既定的规则,自动地创建、销毁节点; +以 [Kubernetes 插件](https://github.com/jenkinsci/kubernetes-plugin/) 为例,它通过动态地创建 +和销毁 [Pod](https://kubernetes.io/docs/concepts/workloads/pods/pod/) 来提供节点的运行。 + +## 协议 + +不管是动态还是静态的节点,都需要特定的协议来链接 agent 和 master。Jenkins 可以通过以下协议建立链接: +* SSH +* [JNLP](https://docs.oracle.com/javase/tutorial/deployment/deploymentInDepth/jnlp.html) +* [WMI](https://en.wikipedia.org/wiki/Windows_Management_Instrumentation) + +查看节点列表:`jcli agent list` + +## 静态节点 + +``` +jcli agent create macos +jcli agent launch macos +``` + +当前,只支持 JNLP 类型的节点创建。另外,对于需要通过 HTTP 代理才能链接到 Jenkins 的话,暂时不支持。 + +## 删除节点 + +给定节点的名称即可删除:`jcli agent delete macos` diff --git a/docs/book/zh/completion.md b/docs/book/zh/completion.md new file mode 100644 index 0000000000000000000000000000000000000000..5536827e54a978968ea2050cad060247ca91afbe --- /dev/null +++ b/docs/book/zh/completion.md @@ -0,0 +1,24 @@ +--- +title: 自动补全 +weight: 102 +--- + +# 自动补全 + +如果你已经在 mac 或 linux 上使用的是 `oh-my-zsh`,你可以尝试以下步骤: + +```text +# cd ~/.oh-my-zsh/plugins +// 创建 incr 文件夹 +# mkdir incr +// 下载 incr 插件 +# wget https://mimosa-pudica.net/src/incr-0.2.zsh +// 对 incr 进行授权 +# chmod 777 ~/.oh-my-zsh/plugins/incr/incr-0.2.zsh +# vim ~/.zshrc,然后在 “~/.zshrc” 文件中加入 “source ~/.oh-my-zsh/plugins/incr/incr-0.2.zsh”,保存退出 +// 更新配置 +# source ~/.zshrc +``` + +接下来,就可以使用 jcli 的自动补全功能了,而且你可能发现不仅仅只有 jcli 可以自动补全,很多命令都可以自动补全了 + diff --git a/docs/book/zh/credential.md b/docs/book/zh/credential.md new file mode 100644 index 0000000000000000000000000000000000000000..39a6389ef9d52927d771aee69edbda344acbf335 --- /dev/null +++ b/docs/book/zh/credential.md @@ -0,0 +1,33 @@ +--- +title: 凭据 +weight: 101 +since: v0.0.24 +--- + +# 凭据 + +通过 `jcli` 可以在 Jenkins 上创建凭据(Credentials),下面介绍使用方法。 + +## 创建 + +Jenkins 中的凭据有多种类型,下面的命令会创建一个用户名和密码类型的凭据: + +```text +jcli credential create --credential-username your-username \ +--credential-password your-password --desc your-credential-remark +``` + +下面的命令创建一个只包含单一加密文本的凭据: + +`jcli credential create --secret my-secret --type secret` + +## 列表 + +`jcli credential list` + +## 删除 + +我们可以根据 Jenkins 凭据的唯一标示来删除: + +`jcli credential delete --id b0b0f865-f0c0-477c-a5ba-9fae88477f9e` + diff --git a/docs/book/zh/doctor.md b/docs/book/zh/doctor.md new file mode 100644 index 0000000000000000000000000000000000000000..45a42c54ed4a81142158687b8d540b9ea15e1325 --- /dev/null +++ b/docs/book/zh/doctor.md @@ -0,0 +1,20 @@ +--- +title: 诊断 +weight: 900 +since: v0.0.24 +--- + +# 诊断 + +由于错误配置或者是缺少相应插件,可能会导致 `jcli` 无法正常工作。然而,有时候想要快速地找到问题所在, 是一件不容易而且费时的事情。这里要介绍的`诊断`功能,就是为了解决这样的问题而存在的。 + +## 插件依赖 + +例如,命令 `jcli job search` 要依赖插件 [pipeline-restful-api](https://plugins.jenkins.io/pipeline-restful-api)。其他部分插件也有类似的依赖。有的情况下,还对插件的版本有要求。 + +在执行命令时,如果发现无法使用,可以尝试使用诊断参数来检查是否缺少依赖: + +`jcli job search --doctor` + +其中 `--doctor` 是一个全局参数。当有依赖不满足等情况发生时,会有相应的错误提示信息输出。例如: `Error: lack of plugin pipeline-restful-api`。 + diff --git a/doc/download-zh.md b/docs/book/zh/download.md similarity index 70% rename from doc/download-zh.md rename to docs/book/zh/download.md index c614a68252ba434a3e97f882a5bb96463226d00c..b95fac4a4a9a9f6acf8a860df9d9f2d739cc0d71 100644 --- a/doc/download-zh.md +++ b/docs/book/zh/download.md @@ -1,4 +1,7 @@ +# 下载 + ## JFrog Bintray + 你可以从 [bintray.com/jenkins-zh](https://bintray.com/beta/#/jenkins-zh/generic/jenkins-cli/) 下载 `jcli`. `curl -L "https://bintray.com/jenkins-zh/jenkins-cli/download_file?file_path=v0.0.24%2Fjcli-darwin-amd64.tar.gz"|tar xzv` @@ -9,10 +12,9 @@ 通过下面的命令添加 YUM 源: -```shell script -wget https://bintray.com/jenkins-zh/rpm/rpm -O /etc/yum.repos.d/bintray-jcli.repo -``` +\`\`\`shell script wget [https://bintray.com/jenkins-zh/rpm/rpm](https://bintray.com/jenkins-zh/rpm/rpm) -O /etc/yum.repos.d/bintray-jcli.repo +```text 然后,你就可以安装了:`yum install jcli` ## Debian @@ -26,24 +28,25 @@ echo "deb https://dl.bintray.com/jenkins-zh/deb wheezy main" | sudo tee -a /etc/ 然后,你就可以安装了:`sudo apt-get install jcli` ## 镜像 + 你也可以尝试下面的方法: `jcli_id=$(docker create jenkinszh/jcli) && sudo docker cp $jcli_id:/usr/local/bin/jcli /usr/local/bin/jcli && docker rm -v $jcli_id` 要下载不同操作系统下的二进制文件?只需要修改 docker 容器的标签: -|镜像|描述| -|---|---| -|`jenkinszh/jcli`|Linux| -|`jenkinszh/jcli:darwin`|Mac| -|`jenkinszh/jcli:win`|Windows,你可以从 `/usr/local/bin/jcli.exe` 这里找到可执行程序| -|`jenkinszh/jcli:dev`|你可以从这里找到开发版本 `/bin/linux/jcli` 、`/bin/darwin/jcli` 或 `/bin/windows/jcli.exe`| +| 镜像 | 描述 | +| :--- | :--- | +| `jenkinszh/jcli` | Linux | +| `jenkinszh/jcli:darwin` | Mac | +| `jenkinszh/jcli:win` | Windows,你可以从 `/usr/local/bin/jcli.exe` 这里找到可执行程序 | +| `jenkinszh/jcli:dev` | 你可以从这里找到开发版本 `/bin/linux/jcli` 、`/bin/darwin/jcli` 或 `/bin/windows/jcli.exe` | 想要体验最新的特性?您可以下载不同平台下的开发版本: -- `jcli_id=$(docker create jenkinszh/jcli:dev) && sudo docker cp $jcli_id:/bin/linux/jcli . && docker rm -v $jcli_id` -- `jcli_id=$(docker create jenkinszh/jcli:dev) && sudo docker cp $jcli_id:/bin/darwin/jcli . && docker rm -v $jcli_id` -- `jcli_id=$(docker create jenkinszh/jcli:dev) && sudo docker cp $jcli_id:/bin/windows/jcli.exe . && docker rm -v $jcli_id` +* `jcli_id=$(docker create jenkinszh/jcli:dev) && sudo docker cp $jcli_id:/bin/linux/jcli . && docker rm -v $jcli_id` +* `jcli_id=$(docker create jenkinszh/jcli:dev) && sudo docker cp $jcli_id:/bin/darwin/jcli . && docker rm -v $jcli_id` +* `jcli_id=$(docker create jenkinszh/jcli:dev) && sudo docker cp $jcli_id:/bin/windows/jcli.exe . && docker rm -v $jcli_id` ## 过时的 @@ -52,3 +55,4 @@ echo "deb https://dl.bintray.com/jenkins-zh/deb wheezy main" | sudo tee -a /etc/ * [GoFish](https://gofi.sh/) 的用户可以使用命令 `gofish install jcli` 来安装 * [Chocolatey](https://chocolatey.org/packages/jcli) 的用户可以使用命令 `choco install jcli` 来安装 * [Snapcraft](https://snapcraft.io/jcli) 的用户可以使用命令 `sudo snap install jcli` 来安装 + diff --git a/docs/book/zh/hooks.md b/docs/book/zh/hooks.md new file mode 100644 index 0000000000000000000000000000000000000000..a339862c5f1a921f510d3e42e542e12ecfd9bfd2 --- /dev/null +++ b/docs/book/zh/hooks.md @@ -0,0 +1,19 @@ +命令钩子,允许你在执行命令前后,执行特定的命令;钩子包括有前置和后置命令。 + +例如:我们可以给执行上传插件的命令添加钩子,上传前构建插件项目,上传完成后重启 Jenkins + +``` +preHooks: +- path: plugin.upload + cmd: mvn clean package -DskipTests -Dmaven.test.skip +postHooks: +- path: plugin.upload + cmd: jcli center watch --util-install-complete +- path: plugin.upload + cmd: jcli restart -b +- path: plugin.upload + cmd: mvn clean +``` + +所谓前置钩子也就是 `preHooks`,后置钩子为 `postHooks`。字段 `path` 为以点(.)链接的命令。 +其中,钩子命令依照所配置的顺序执行。 diff --git a/docs/book/zh/job.md b/docs/book/zh/job.md new file mode 100644 index 0000000000000000000000000000000000000000..58ee49f2357a294ae404aabeec65ffd27db18a89 --- /dev/null +++ b/docs/book/zh/job.md @@ -0,0 +1,88 @@ +--- +title: 任务 +weight: 80 +--- + +## 搜索 + +使用如下的命令可以搜索 Jenkins 任务: + +`jcli job search input` + +要查找特定类型的 Jenkins 任务,可以通过过滤对应字段的值来实现。下面,给出一个查找参数化任务的例子: + +`jcli job search --filter Parameterized=true` + +其中 `--filter` 支持任意字段,它是以是否包含指定字符串进行判断的。 + +## 构建 + +要触发一个任务的话,可以使用下面的命令: + +`jcli job build "jobName" -b` + +## 交互式输入 + +执行到 Jenkins 流水线中的 `input` 指令时,会有交互式输入的提示。下面是一个样例: + +``` +pipeline { + agent { + label 'master' + } + + stages { + stage('sample') { + steps { + input 'test' + } + } + } +} +``` + +运行上面的流水线后,执行到 `input` 位置就会阻塞并等待输入,此时可以通过命令 `jcli job input test 1` 来使得继续执行或者中断。 + +## 编辑 + +目前,只对以脚本的形式保存在 Jenkins 上的流水线有编辑功能的支持。命令非常简单:`jcli job edit test` + +如果希望能快速地给出一个流水线的样例的话,当在流水线脚本为空时,可以执行命令:`jcli job edit test --sample` + +## 禁用 + +禁用任务:`jcli job disable job/test/` + +启用任务:`jcli job enable job/test/` + +## 查看日志 + +通过下面的命令可以参考一个任务的执行日志: + +`jcli job log "jobName" -w` + +## 查看历史 + +`jcli job history job/test/` + +## 归档文件 + +查看归档文件列表 `jcli job artifact job/test/` + +下载归档文件 `job artifact download /job/tsf/job/ddd/` + +## 显示指定列 + +当以表格形式输出,希望能输出指定的字段为列时,我们可以通过下面的方式实现: + +`jcli job search --columns Name,URL,Parameterized` + +请注意,上面的参数 `--columns` 的值是以英文逗号(,)为分割的。 + +如果不希望输出表头,可以增加参数:`--no-headers` + +`jcli job search --columns Name,URL,Parameterized --no-headers` + +## 任务类型 + +列出当前 Jenkins 所支持的任务类型 `jcli job type` diff --git a/docs/book/zh/open.md b/docs/book/zh/open.md new file mode 100644 index 0000000000000000000000000000000000000000..2bba91bfdcfc6095f9aa00dbb8f3cac9c0fef019 --- /dev/null +++ b/docs/book/zh/open.md @@ -0,0 +1,36 @@ +# 打开浏览器 + +我们可以通过下面的命令快速地用浏览器打开 Jenkins: + +`jcli open` + +## 浏览器设置 + +默认,`jcli` 会使用系统的缺省浏览器打开。但是,如果希望能用指定的浏览器打开的话,可以参考下面的命令: + +``` +jcli open --browser "Google-Chrome" +JCLI_BROWSER="Google Chrome" jcli open +``` + +也就是说,可以通过给定参数,或者设置环境变量的方式来指定浏览器。 + +## 其他地址 + +为了方便在浏览器中打开和某个 Jenkins 相关的服务,可以把服务地址添加到配置文件中,例如: + +``` +current: local +jenkins_servers: +- name: local + url: http://localhost:8080 + username: admin + token: '******' + data: + baidu: https://baidu.com + jenkins: https://jenkins.io +``` + +从上面的配置例子中能看到,字段 `data` 下添加了两个 `key-value`。如果要打开其中的一个地址的话,可以执行下面的命令: + +`jcli open .baidu` diff --git a/docs/book/zh/plugin.md b/docs/book/zh/plugin.md new file mode 100644 index 0000000000000000000000000000000000000000..24f8bbdb39a19ab66d878ff445429443367181a8 --- /dev/null +++ b/docs/book/zh/plugin.md @@ -0,0 +1,91 @@ +--- +title: 插件 +weight: 70 +--- + +# 插件 + +`jcli` 可以让你搜索、下载、安装、卸载或者上传插件。 + +## 列表 + +下面的命令可以列出所有已经安装的插件: + +`jcli plugin list` + +如果需要根据字段进行过滤的话,可以利用下面的命令: + +`jcli plugin list --filter ShortName=github` + +## 检索 + +你可以通过关键字来搜索要安装的插件,命令如下: + +`jcli plugin search zh-cn` + +## 安装 + +给定要安装的插件的名称,并用如下的命令来安装: + +`jcli plugin install localization-zh-cn` + +执行完成上面的安装命令后,可以通过下面的命令看到安装过程: + +`jcli center watch` + +## 下载 + +当你的 Jenkins 无法访问外网,或者其他无法直接安装插件的情况下,可以先把需要安装的插件下载到本地,然后再上传。 + +`jcli plugin download localization-zh-cn` + +默认情况下,会下载你需要的插件以及依赖。如果不需要下载依赖的话,可以使用参数: `--skip-dependency` + +## 上传 + +你可以选择上传本地或者远程的插件文件,甚至可以实现编译本地的插件源码后上传。在没有给定任何参数的情况下, +上传命令首先会尝试执行 Maven 的构建命令,然后再上传文件。 + +`jcli plugin upload` + +如果你已经有编译好的插件文件,可以使用下面的命令: + +`jcli plugin upload sample.hpi` + +## 升级 + +如果没有任何参数的话,下面的命令会列出来所有可以升级的插件,利用方向键以及空格可以选择所需要升级的插件,最后回车确认: + +`jcli plugin upgrade` + +另外,也可以通过给定插件名称的方式,直接升级指定的插件: + +`jcli plugin upgrade blueocean-personalization` + +## 卸载 + +`jcli plugin uninstall` + +## 检查更新 + +检查更新,也就是从 Jenkins 的更新中心(Update Center)中获取最新的版本信息,执行下面的命令: + +`jcli plugin check` + +该命令执行的时间长短,和 Jenkins 所在机器的网络状态有关系,默认的超时时间为:30秒。另外,也可以通过设置参数的方式指定: + +`jcli plugin checkout --timeout 60` + +## 创建 + +对于插件的开发者而言,插件的创建、构建、发布也是高频操作,`jcli` 对这些都有支持: + +`jcli plugin create` + +## 构建 + +`jcli plugin build` + +## 发布 + +`jcli plugin release` diff --git a/docs/book/zh/proxy.md b/docs/book/zh/proxy.md new file mode 100644 index 0000000000000000000000000000000000000000..ee8c0ce82a254358f41ca8e9a8b0a1480c4675cc --- /dev/null +++ b/docs/book/zh/proxy.md @@ -0,0 +1,19 @@ +--- +title: 代理 +weight: 90 +--- + +# 代理设置 + +你可能需要设置代理才可以访问到 Jenkins,这时候,可以给 `jcli` 配置代理服务器的信息。 执行命令:`jcli config edit` 就会打开配置文件,参考下面的配置: + +```text +jenkins_servers: +- name: dev + url: http://192.168.1.10 + username: admin + token: 11132c9ae4b20edbe56ac3e09cb5a3c8c2 + proxy: http://192.168.10.10:47586 + proxyAuth: username:password +``` + diff --git a/docs/book/zh/shell.md b/docs/book/zh/shell.md new file mode 100644 index 0000000000000000000000000000000000000000..2015174b6b5f30886fa4ce3f84cd28ae4bfb1a9e --- /dev/null +++ b/docs/book/zh/shell.md @@ -0,0 +1,7 @@ +创建一个子 Shell 并执行 `jcli` 命令。这时候,不管如何修改 `jcli` 的配置文件,退出后都不会影响之前的配置。 + +执行下面的命令,会将所选择的 Jenkins 配置 `local` 作为默认的值: + +`jcli shell local` + +此时,我们执行命令 `jcli config` 的话能看出来。 diff --git a/docs/book/zh/user.md b/docs/book/zh/user.md new file mode 100644 index 0000000000000000000000000000000000000000..f5da7154ae8a315988d4ab4eaea38f8342ee03f3 --- /dev/null +++ b/docs/book/zh/user.md @@ -0,0 +1,32 @@ +--- +title: 用户 +weight: 100 +--- + +# 用户 + +`jcli` 可以完成用户的创建、删除以及生成令牌(Token)的操作, + +## 创建用户 + +```text +jcli user create [password] [flags] +``` + +在创建用户的时候,可以指定一个密码或者随机生成。 + +## 生成令牌 + +Jenkins 的 Web API 必须是通过令牌(Token)来访问,`jcli` 支持给当前用户或者 指定用户生成令牌。给当前用户生成令牌的命令如下: + +`jcli user token -g` + +如果希望通过管理员给其他的 Jenkins 用户生成令牌的话,需要在启动 Jenkins 时给定一些参数, 具体参考下面的命令: + +```text +jcli center start --admin-can-generate-new-tokens +jcli user token -g --target-user target-user-name +``` + +上面的第一条命令会启动 Jenkins 并设置为允许有管理员权限的用户为其他用户生成令牌。 + diff --git a/i18n.md b/i18n.md deleted file mode 100644 index 7378aabff825043a84935ad1c257ba0c78928d8f..0000000000000000000000000000000000000000 --- a/i18n.md +++ /dev/null @@ -1,5 +0,0 @@ -## Tools requirement - -[poedit](https://poedit.net/) - -`make i18n-tools` diff --git a/release.sh b/release.sh deleted file mode 100755 index 3c5d05204bbd15963812982e03f67bda9115990f..0000000000000000000000000000000000000000 --- a/release.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -VERSION=$(hub tag --list | sort -V | tail -n 1) -VERSION_BITS=(${VERSION//./ }) -VNUM1=${VERSION_BITS[0]} -VNUM2=${VERSION_BITS[1]} -VNUM3=${VERSION_BITS[2]} -VNUM3=$((VNUM3+1)) - -NEW_TAG="$VNUM1.$VNUM2.$VNUM3" -echo "Updating $VERSION to $NEW_TAG" - -#get current hash and see if it already has a tag -# GIT_COMMIT=`git rev-parse HEAD` -# NEEDS_TAG=`git describe --contains $GIT_COMMIT` - -if [[ -z "${NEEDS_TAG}" ]]; then - make release VERSION=${NEW_TAG} - hub release create -c -a release/jcli-darwin-amd64.tar.gz \ --a release/jcli-linux-amd64.tar.gz \ --a release/jcli-windows-386.tar.gz \ --a release/jcli-darwin-amd64.txt \ --a release/jcli-linux-amd64.txt \ --a release/jcli-windows-386.txt ${NEW_TAG} -fi