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