From a0669db9beeb063112c80f714eb7e5282ad249cf Mon Sep 17 00:00:00 2001 From: liyuchun Date: Tue, 11 Jan 2022 15:55:32 +0800 Subject: [PATCH 01/11] * Fix error when pre merge. --- module/repo/model.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/module/repo/model.php b/module/repo/model.php index d1302ee9a2..4a3245d85c 100644 --- a/module/repo/model.php +++ b/module/repo/model.php @@ -424,7 +424,7 @@ class repoModel extends model /* Convert to id by url. */ $this->loadModel('gitlab'); - $url = strtolower($url); + $url = str_replace('https://', 'http://', strtolower($url)); $matches = array(); foreach($gitlabs as $gitlabID => $gitlab) { @@ -435,7 +435,8 @@ class repoModel extends model $projects = $this->gitlab->apiGetProjects($gitlabID); foreach($projects as $project) { - if((!$isSSH and strtolower($project->http_url_to_repo) == $url) or ($isSSH and strtolower($project->ssh_url_to_repo) == $url)) + $urlToRepo = str_replace('https://', 'http://', strtolower($project->http_url_to_repo)); + if((!$isSSH and $urlToRepo == $url) or ($isSSH and strtolower($project->ssh_url_to_repo) == $url)) { $matched->gitlab = $gitlabID; $matched->project = $project->id; From 322dcddfabfda1c7bc2fd4bd6ff91426446ede9a Mon Sep 17 00:00:00 2001 From: zenggang Date: Tue, 11 Jan 2022 09:44:13 +0000 Subject: [PATCH 02/11] * Finish task#47226 --- module/sonarqube/control.php | 52 +++++++++++++++++++++++++++ module/sonarqube/css/create.css | 1 + module/sonarqube/lang/en.php | 21 +++++++++++ module/sonarqube/lang/zh-cn.php | 21 +++++++++++ module/sonarqube/model.php | 15 ++++++++ module/sonarqube/view/create.html.php | 52 +++++++++++++++++++++++++++ 6 files changed, 162 insertions(+) create mode 100644 module/sonarqube/css/create.css create mode 100644 module/sonarqube/view/create.html.php diff --git a/module/sonarqube/control.php b/module/sonarqube/control.php index 079a5212ec..1bce8757e9 100644 --- a/module/sonarqube/control.php +++ b/module/sonarqube/control.php @@ -48,4 +48,56 @@ class sonarqube extends control $this->display(); } + + /** + * create a sonarqube. + * + * @access public + * @return void + */ + public function create() + { + if($_POST) + { + $this->checkToken(); + $sonarqubeID = $this->loadModel('pipeline')->create('sonarqube'); + + if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); + $this->loadModel('action'); + $actionID = $this->action->create('sonarqube', $sonarqubeID, 'created'); + return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('browse'))); + } + + $this->view->title = $this->lang->sonarqube->common . $this->lang->colon . $this->lang->sonarqube->lblCreate; + + $this->display(); + } + + /** + * Check post info. + * + * @access protected + * @return void + */ + protected function checkToken() + { + $sonarqube = fixer::input('post')->get(); + $this->dao->update('sonarqube')->data($sonarqube) + ->check('name', 'notempty') + ->check('url', 'notempty') + ->check('account', 'notempty') + ->check('password', 'notempty'); + if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); + if(strpos($sonarqube->url, 'http') !== 0) return $this->send(array('result' => 'fail', 'message' => array('url' => array($this->lang->sonarqube->hostError)))); + + /* Check name and url unique. */ + $isExist = $this->dao->select('*')->from(TABLE_PIPELINE)->where("name='{$sonarqube->name}' or url='{$sonarqube->url}'")->fetch(); + if($isExist) return $this->send(array('result' => 'fail', 'message' => $this->lang->sonarqube->repeatError)); + + $token = base64_encode("{$sonarqube->account}:{$sonarqube->password}"); + $result = $this->sonarqube->apiValidate($sonarqube->url, $token); + + if(!isset($result->valid) or !$result->valid) return $this->send(array('result' => 'fail', 'message' => array('token' => array($this->lang->sonarqube->validError)))); + $this->post->set('token', $token); + } } diff --git a/module/sonarqube/css/create.css b/module/sonarqube/css/create.css new file mode 100644 index 0000000000..f30cf17aeb --- /dev/null +++ b/module/sonarqube/css/create.css @@ -0,0 +1 @@ +.table-form .c-name {width: 130px;} diff --git a/module/sonarqube/lang/en.php b/module/sonarqube/lang/en.php index 5ac24fa38a..825fb03bac 100644 --- a/module/sonarqube/lang/en.php +++ b/module/sonarqube/lang/en.php @@ -8,3 +8,24 @@ $lang->sonarqube->edit = 'Edit SonarQube'; $lang->sonarqube->delete = 'Delete SonarQube'; $lang->sonarqube->confirmDelete = 'Do you want to delete this SonarQube server?'; $lang->sonarqube->serverFail = 'Connect to SonarQube server failed, please check the SonarQube server.'; + +$lang->sonarqube->id = 'ID'; +$lang->sonarqube->name = "{$lang->sonarqube->common} Name"; +$lang->sonarqube->url = 'URL'; +$lang->sonarqube->account = 'Username'; +$lang->sonarqube->password = 'Password'; +$lang->sonarqube->token = 'Token'; +$lang->sonarqube->defaultProject = 'Default Project'; +$lang->sonarqube->private = 'MD5 Verify'; + +$lang->sonarqube->lblCreate = 'Create SonarQube Server'; +$lang->sonarqube->desc = 'Description'; +$lang->sonarqube->createSuccess = 'Create success'; + +$lang->sonarqube->placeholder = new stdclass; +$lang->sonarqube->placeholder->name = ''; +$lang->sonarqube->placeholder->url = "Please fill in the access address of the SonarQube Server homepage, as: https://sonarqube.zentao.net."; + +$lang->sonarqube->repeatError = 'Server name or server address already exists!'; +$lang->sonarqube->validError = 'Sonarqube user authority authentication failed!'; +$lang->sonarqube->hostError = "Invalid SonarQube service address."; diff --git a/module/sonarqube/lang/zh-cn.php b/module/sonarqube/lang/zh-cn.php index 215e9b4502..417e23b466 100644 --- a/module/sonarqube/lang/zh-cn.php +++ b/module/sonarqube/lang/zh-cn.php @@ -8,3 +8,24 @@ $lang->sonarqube->edit = '编辑SonarQube'; $lang->sonarqube->delete = '删除SonarQube'; $lang->sonarqube->confirmDelete = '确认删除该SonarQube吗?'; $lang->sonarqube->serverFail = '连接SonarQube服务器异常,请检查SonarQube服务器。'; + +$lang->sonarqube->id = 'ID'; +$lang->sonarqube->name = "{$lang->sonarqube->common}名称"; +$lang->sonarqube->url = '服务地址'; +$lang->sonarqube->account = '用户名'; +$lang->sonarqube->password = '密码'; +$lang->sonarqube->token = 'Token'; +$lang->sonarqube->defaultProject = '默认项目'; +$lang->sonarqube->private = 'MD5验证'; + +$lang->sonarqube->lblCreate = '添加SonarQube服务器'; +$lang->sonarqube->desc = '描述'; +$lang->sonarqube->createSuccess = "创建成功"; + +$lang->sonarqube->placeholder = new stdclass; +$lang->sonarqube->placeholder->name = ''; +$lang->sonarqube->placeholder->url = "请填写SonarQube Server首页的访问地址,如:https://sonarqube.zentao.net。"; + +$lang->sonarqube->repeatError = "服务器名称或服务器地址已存在!"; +$lang->sonarqube->validError = "SonarQube 用户权限认证失败!"; +$lang->sonarqube->hostError = "无效的SonarQube服务地址。"; diff --git a/module/sonarqube/model.php b/module/sonarqube/model.php index 79f3f144dd..5f3765586a 100644 --- a/module/sonarqube/model.php +++ b/module/sonarqube/model.php @@ -27,4 +27,19 @@ class sonarqubeModel extends model return $sonarqubeList; } + + /** + * check sonarqube valid + * + * @param string $host + * @param string $token + * @access public + * @return array + */ + public function apiValidate($host, $token) + { + $url = rtrim($host, '/') . "/api/authentication/validate"; + $header = 'Authorization: Basic ' . $token; + return json_decode(commonModel::http($url, null, array(), $header)); + } } diff --git a/module/sonarqube/view/create.html.php b/module/sonarqube/view/create.html.php new file mode 100644 index 0000000000..8def4808da --- /dev/null +++ b/module/sonarqube/view/create.html.php @@ -0,0 +1,52 @@ + + * @package sonarqube + * @version $Id$ + * @link http://www.zentao.net + */ +?> + + +
+
+
+
+

sonarqube->lblCreate;?>

+
+
+ + + + + + + + + + + + + + + + + + + + + + +
sonarqube->name;?>sonarqube->placeholder->name}'");?>
sonarqube->url;?>sonarqube->placeholder->url}'");?>
sonarqube->account;?>
sonarqube->password;?>
+ + goback, '', 'class="btn btn-wide"');?> +
+
+
+
+
+ From e2988a12120a007346f93165b8939211ba527ee7 Mon Sep 17 00:00:00 2001 From: zenggang Date: Tue, 11 Jan 2022 09:48:18 +0000 Subject: [PATCH 03/11] * Adjust code --- module/sonarqube/view/create.html.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/module/sonarqube/view/create.html.php b/module/sonarqube/view/create.html.php index 8def4808da..5daf0da4d8 100644 --- a/module/sonarqube/view/create.html.php +++ b/module/sonarqube/view/create.html.php @@ -2,16 +2,15 @@ /** * The create view file of sonarqube module of ZenTaoPMS. * - * @copyright Copyright 2009-2017 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com) + * @copyright Copyright 2009-2022 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com) * @license ZPL (http://zpl.pub/page/zplv12.html) - * @author Gang Liu + * @author Gang Zeng * @package sonarqube * @version $Id$ * @link http://www.zentao.net */ ?> -
From ca95618c5c773c11976f9c55e57e1f8a2d60fe4d Mon Sep 17 00:00:00 2001 From: zenggang Date: Tue, 11 Jan 2022 10:10:52 +0000 Subject: [PATCH 04/11] * Adjust code --- module/sonarqube/model.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/module/sonarqube/model.php b/module/sonarqube/model.php index 5f3765586a..91b529ba19 100644 --- a/module/sonarqube/model.php +++ b/module/sonarqube/model.php @@ -28,6 +28,24 @@ class sonarqubeModel extends model return $sonarqubeList; } + /** + * Get sonarqube api base url and header by id. + * + * @param int $id + * @access public + * @return array + */ + public function getApiBase($id) + { + $sonarqube = $this->loadModel('pipeline')->getByID($id); + if(!$sonarqube) return ''; + + $url = rtrim($sonarqube->url, '/') . '/api/%s'; + $header[] = 'Authorization: Basic ' . $sonarqube->token; + + return array($url, $header); + } + /** * check sonarqube valid * From 8285477ef15a8ddbd1dd8f80a7eee41ec5c87e30 Mon Sep 17 00:00:00 2001 From: zenggang Date: Wed, 12 Jan 2022 01:11:35 +0000 Subject: [PATCH 05/11] * Adjust language --- module/sonarqube/control.php | 2 +- module/sonarqube/lang/en.php | 2 +- module/sonarqube/lang/zh-cn.php | 2 +- module/sonarqube/view/create.html.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/module/sonarqube/control.php b/module/sonarqube/control.php index 1bce8757e9..84897e9fb5 100644 --- a/module/sonarqube/control.php +++ b/module/sonarqube/control.php @@ -68,7 +68,7 @@ class sonarqube extends control return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('browse'))); } - $this->view->title = $this->lang->sonarqube->common . $this->lang->colon . $this->lang->sonarqube->lblCreate; + $this->view->title = $this->lang->sonarqube->common . $this->lang->colon . $this->lang->sonarqube->createServer; $this->display(); } diff --git a/module/sonarqube/lang/en.php b/module/sonarqube/lang/en.php index 825fb03bac..5ebc459551 100644 --- a/module/sonarqube/lang/en.php +++ b/module/sonarqube/lang/en.php @@ -18,7 +18,7 @@ $lang->sonarqube->token = 'Token'; $lang->sonarqube->defaultProject = 'Default Project'; $lang->sonarqube->private = 'MD5 Verify'; -$lang->sonarqube->lblCreate = 'Create SonarQube Server'; +$lang->sonarqube->createServer = 'Create SonarQube Server'; $lang->sonarqube->desc = 'Description'; $lang->sonarqube->createSuccess = 'Create success'; diff --git a/module/sonarqube/lang/zh-cn.php b/module/sonarqube/lang/zh-cn.php index 417e23b466..392d69840b 100644 --- a/module/sonarqube/lang/zh-cn.php +++ b/module/sonarqube/lang/zh-cn.php @@ -18,7 +18,7 @@ $lang->sonarqube->token = 'Token'; $lang->sonarqube->defaultProject = '默认项目'; $lang->sonarqube->private = 'MD5验证'; -$lang->sonarqube->lblCreate = '添加SonarQube服务器'; +$lang->sonarqube->createServer = '添加SonarQube服务器'; $lang->sonarqube->desc = '描述'; $lang->sonarqube->createSuccess = "创建成功"; diff --git a/module/sonarqube/view/create.html.php b/module/sonarqube/view/create.html.php index 5daf0da4d8..21b72b46e9 100644 --- a/module/sonarqube/view/create.html.php +++ b/module/sonarqube/view/create.html.php @@ -15,7 +15,7 @@
-

sonarqube->lblCreate;?>

+

sonarqube->createServer;?>

From e69be078a35765f5ef6bcf8d39aa3274dfd80f78 Mon Sep 17 00:00:00 2001 From: zenggang Date: Wed, 12 Jan 2022 01:46:35 +0000 Subject: [PATCH 06/11] * Adjust code --- module/sonarqube/config.php | 5 +++++ module/sonarqube/control.php | 6 +----- module/sonarqube/view/create.html.php | 8 ++++---- 3 files changed, 10 insertions(+), 9 deletions(-) create mode 100644 module/sonarqube/config.php diff --git a/module/sonarqube/config.php b/module/sonarqube/config.php new file mode 100644 index 0000000000..32f0451daf --- /dev/null +++ b/module/sonarqube/config.php @@ -0,0 +1,5 @@ +sonarqube = new stdclass(); + +$config->sonarqube->create = new stdclass(); +$config->sonarqube->create->requiredFields = 'name,url,account,password'; diff --git a/module/sonarqube/control.php b/module/sonarqube/control.php index 84897e9fb5..f6dd4434cc 100644 --- a/module/sonarqube/control.php +++ b/module/sonarqube/control.php @@ -82,11 +82,7 @@ class sonarqube extends control protected function checkToken() { $sonarqube = fixer::input('post')->get(); - $this->dao->update('sonarqube')->data($sonarqube) - ->check('name', 'notempty') - ->check('url', 'notempty') - ->check('account', 'notempty') - ->check('password', 'notempty'); + $this->dao->update('sonarqube')->data($sonarqube)->batchCheck($this->config->sonarqube->create->requiredFields, 'notempty'); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); if(strpos($sonarqube->url, 'http') !== 0) return $this->send(array('result' => 'fail', 'message' => array('url' => array($this->lang->sonarqube->hostError)))); diff --git a/module/sonarqube/view/create.html.php b/module/sonarqube/view/create.html.php index 21b72b46e9..15253bb19e 100644 --- a/module/sonarqube/view/create.html.php +++ b/module/sonarqube/view/create.html.php @@ -21,20 +21,20 @@
- + - + - + - + From 8f5032d898e461240b58e573b9783af763d01a81 Mon Sep 17 00:00:00 2001 From: zenggang Date: Wed, 12 Jan 2022 02:41:27 +0000 Subject: [PATCH 07/11] * Finish task#47228 --- module/group/lang/resource.php | 10 ++++++---- module/sonarqube/lang/en.php | 2 ++ module/sonarqube/lang/zh-cn.php | 2 ++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index fe60b7c8c3..7949388c3c 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -1384,15 +1384,17 @@ $lang->gitlab->methodOrder[145] = 'deleteTagPriv'; /* SonarQube. */ $lang->resource->sonarqube = new stdclass(); -$lang->resource->sonarqube->browse = 'browse'; -$lang->resource->sonarqube->create = 'create'; -$lang->resource->sonarqube->edit = 'edit'; -$lang->resource->sonarqube->delete = 'delete'; +$lang->resource->sonarqube->browse = 'browse'; +$lang->resource->sonarqube->create = 'create'; +$lang->resource->sonarqube->edit = 'edit'; +$lang->resource->sonarqube->delete = 'delete'; +$lang->resource->sonarqube->browseProject = 'browseProject'; $lang->sonarqube->methodOrder[5] = 'browse'; $lang->sonarqube->methodOrder[10] = 'create'; $lang->sonarqube->methodOrder[15] = 'edit'; $lang->sonarqube->methodOrder[20] = 'delete'; +$lang->sonarqube->methodOrder[25] = 'browseProject'; /* merge request. */ $lang->resource->mr = new stdclass(); diff --git a/module/sonarqube/lang/en.php b/module/sonarqube/lang/en.php index 5ebc459551..6e776c323d 100644 --- a/module/sonarqube/lang/en.php +++ b/module/sonarqube/lang/en.php @@ -9,6 +9,8 @@ $lang->sonarqube->delete = 'Delete SonarQube'; $lang->sonarqube->confirmDelete = 'Do you want to delete this SonarQube server?'; $lang->sonarqube->serverFail = 'Connect to SonarQube server failed, please check the SonarQube server.'; +$lang->sonarqube->browseProject = "SonarQube Project List"; + $lang->sonarqube->id = 'ID'; $lang->sonarqube->name = "{$lang->sonarqube->common} Name"; $lang->sonarqube->url = 'URL'; diff --git a/module/sonarqube/lang/zh-cn.php b/module/sonarqube/lang/zh-cn.php index 392d69840b..693e4fd547 100644 --- a/module/sonarqube/lang/zh-cn.php +++ b/module/sonarqube/lang/zh-cn.php @@ -9,6 +9,8 @@ $lang->sonarqube->delete = '删除SonarQube'; $lang->sonarqube->confirmDelete = '确认删除该SonarQube吗?'; $lang->sonarqube->serverFail = '连接SonarQube服务器异常,请检查SonarQube服务器。'; +$lang->sonarqube->browseProject = "SonarQube项目列表"; + $lang->sonarqube->id = 'ID'; $lang->sonarqube->name = "{$lang->sonarqube->common}名称"; $lang->sonarqube->url = '服务地址'; From b80539559522ad94a6b19193be9614823fefff0f Mon Sep 17 00:00:00 2001 From: zenggang Date: Wed, 12 Jan 2022 03:11:22 +0000 Subject: [PATCH 08/11] * Adjust code --- module/sonarqube/lang/en.php | 1 - module/sonarqube/lang/zh-cn.php | 1 - 2 files changed, 2 deletions(-) diff --git a/module/sonarqube/lang/en.php b/module/sonarqube/lang/en.php index 6e776c323d..f1dd3b27a2 100644 --- a/module/sonarqube/lang/en.php +++ b/module/sonarqube/lang/en.php @@ -8,7 +8,6 @@ $lang->sonarqube->edit = 'Edit SonarQube'; $lang->sonarqube->delete = 'Delete SonarQube'; $lang->sonarqube->confirmDelete = 'Do you want to delete this SonarQube server?'; $lang->sonarqube->serverFail = 'Connect to SonarQube server failed, please check the SonarQube server.'; - $lang->sonarqube->browseProject = "SonarQube Project List"; $lang->sonarqube->id = 'ID'; diff --git a/module/sonarqube/lang/zh-cn.php b/module/sonarqube/lang/zh-cn.php index 693e4fd547..f43239afb6 100644 --- a/module/sonarqube/lang/zh-cn.php +++ b/module/sonarqube/lang/zh-cn.php @@ -8,7 +8,6 @@ $lang->sonarqube->edit = '编辑SonarQube'; $lang->sonarqube->delete = '删除SonarQube'; $lang->sonarqube->confirmDelete = '确认删除该SonarQube吗?'; $lang->sonarqube->serverFail = '连接SonarQube服务器异常,请检查SonarQube服务器。'; - $lang->sonarqube->browseProject = "SonarQube项目列表"; $lang->sonarqube->id = 'ID'; From 5359525b4ccbd49384fc33ac7f36679a030c8dfb Mon Sep 17 00:00:00 2001 From: zenggang Date: Wed, 12 Jan 2022 03:12:38 +0000 Subject: [PATCH 09/11] * Adjust code --- module/sonarqube/lang/zh-cn.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/sonarqube/lang/zh-cn.php b/module/sonarqube/lang/zh-cn.php index f43239afb6..dea6c84c2d 100644 --- a/module/sonarqube/lang/zh-cn.php +++ b/module/sonarqube/lang/zh-cn.php @@ -8,7 +8,7 @@ $lang->sonarqube->edit = '编辑SonarQube'; $lang->sonarqube->delete = '删除SonarQube'; $lang->sonarqube->confirmDelete = '确认删除该SonarQube吗?'; $lang->sonarqube->serverFail = '连接SonarQube服务器异常,请检查SonarQube服务器。'; -$lang->sonarqube->browseProject = "SonarQube项目列表"; +$lang->sonarqube->browseProject = "SonarQube项目列表"; $lang->sonarqube->id = 'ID'; $lang->sonarqube->name = "{$lang->sonarqube->common}名称"; From c5aaae3eb8235f3c145cca120408ce087f66c858 Mon Sep 17 00:00:00 2001 From: liyuchun Date: Wed, 12 Jan 2022 14:16:34 +0800 Subject: [PATCH 10/11] * Finish task #47233. --- db/update16.1.sql | 2 ++ module/action/lang/en.php | 1 + module/action/lang/zh-cn.php | 1 + module/group/lang/resource.php | 24 +++++++++++++----------- module/job/control.php | 1 + module/repo/control.php | 14 ++++++++------ module/repo/view/maintain.html.php | 7 ++++++- module/sonarqube/control.php | 15 +++++++++++++-- module/sonarqube/lang/en.php | 1 + module/sonarqube/lang/zh-cn.php | 1 + 10 files changed, 47 insertions(+), 20 deletions(-) create mode 100644 db/update16.1.sql diff --git a/db/update16.1.sql b/db/update16.1.sql new file mode 100644 index 0000000000..6644596c3b --- /dev/null +++ b/db/update16.1.sql @@ -0,0 +1,2 @@ +ALTER TABLE `zt_job` ADD `sonarqubeServer` mediumint(8) unsigned NOT NULL AFTER `triggerType`; +ALTER TABLE `zt_job` ADD `projectKey` varchar(255) NOT NULL AFTER `sonarqubeServer`; diff --git a/module/action/lang/en.php b/module/action/lang/en.php index 93f9ddca4d..b739065286 100755 --- a/module/action/lang/en.php +++ b/module/action/lang/en.php @@ -329,6 +329,7 @@ $lang->action->label->finishedbychild = 'finished'; $lang->action->label->closedbychild = 'closed'; $lang->action->label->activatedbychild = 'activated'; $lang->action->label->createchild = 'activated'; +$lang->action->label->executed = 'executed'; /* Dynamic information is grouped by object. */ $lang->action->dynamicAction = new stdclass; diff --git a/module/action/lang/zh-cn.php b/module/action/lang/zh-cn.php index 13e034b34c..851e8f58f4 100755 --- a/module/action/lang/zh-cn.php +++ b/module/action/lang/zh-cn.php @@ -329,6 +329,7 @@ $lang->action->label->finishedbychild = '完成了'; $lang->action->label->closedbychild = '关闭了'; $lang->action->label->activatedbychild = '激活了'; $lang->action->label->createchild = '激活了'; +$lang->action->label->executed = '执行了'; /* 动态信息按照对象分组 */ $lang->action->dynamicAction = new stdclass(); diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index 7949388c3c..4918fb2d72 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -1389,12 +1389,14 @@ $lang->resource->sonarqube->create = 'create'; $lang->resource->sonarqube->edit = 'edit'; $lang->resource->sonarqube->delete = 'delete'; $lang->resource->sonarqube->browseProject = 'browseProject'; +$lang->resource->sonarqube->execJob = 'execJob'; -$lang->sonarqube->methodOrder[5] = 'browse'; -$lang->sonarqube->methodOrder[10] = 'create'; -$lang->sonarqube->methodOrder[15] = 'edit'; -$lang->sonarqube->methodOrder[20] = 'delete'; -$lang->sonarqube->methodOrder[25] = 'browseProject'; +$lang->sonarqube->methodOrder[5] = 'browse'; +$lang->sonarqube->methodOrder[10] = 'create'; +$lang->sonarqube->methodOrder[15] = 'edit'; +$lang->sonarqube->methodOrder[20] = 'delete'; +$lang->sonarqube->methodOrder[25] = 'browseProject'; +$lang->sonarqube->methodOrder[30] = 'execJob'; /* merge request. */ $lang->resource->mr = new stdclass(); @@ -1740,12 +1742,12 @@ $lang->backup->methodOrder[25] = 'setting'; $lang->backup->methodOrder[30] = 'rmPHPHeader'; $lang->resource->cron = new stdclass(); -$lang->resource->cron->index = 'index'; -$lang->resource->cron->turnon = 'turnon'; -$lang->resource->cron->create = 'createAction'; -$lang->resource->cron->edit = 'edit'; -$lang->resource->cron->toggle = 'toggle'; -$lang->resource->cron->delete = 'delete'; +$lang->resource->cron->index = 'index'; +$lang->resource->cron->turnon = 'turnon'; +$lang->resource->cron->create = 'createAction'; +$lang->resource->cron->edit = 'edit'; +$lang->resource->cron->toggle = 'toggle'; +$lang->resource->cron->delete = 'delete'; $lang->resource->cron->openProcess = 'restart'; $lang->cron->methodOrder[5] = 'index'; diff --git a/module/job/control.php b/module/job/control.php index 961f71c525..efeccd4376 100644 --- a/module/job/control.php +++ b/module/job/control.php @@ -323,6 +323,7 @@ class job extends control if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); $this->app->loadLang('compile'); + $this->loadModel('action')->create('job', $id, 'executed'); return $this->send(array('result' => 'success', 'message' => sprintf($this->lang->job->sendExec, zget($this->lang->compile->statusList, $compile->status)))); } diff --git a/module/repo/control.php b/module/repo/control.php index e1d3e0c407..b11b87ba8b 100644 --- a/module/repo/control.php +++ b/module/repo/control.php @@ -83,7 +83,8 @@ class repo extends control $repoID = $this->repo->saveState(0, $objectID); if($this->viewType !== 'json') $this->commonAction($repoID, $objectID); - $repoList = $this->repo->getList(0, '', $orderBy); + $repoList = $this->repo->getList(0, '', $orderBy); + //$sonarRepoList = $this->loadModel('sonarqube')->getSonarqubeByRepo(array_keys($repoList)); /* Pager. */ $this->app->loadClass('pager', $static = true); @@ -95,11 +96,12 @@ class repo extends control $this->view->position[] = $this->lang->repo->common; $this->view->position[] = $this->lang->repo->browse; - $this->view->orderBy = $orderBy; - $this->view->objectID = $objectID; - $this->view->pager = $pager; - $this->view->repoList = empty($repoList) ? $repoList: $repoList[$pageID - 1];; - $this->view->products = $this->loadModel('product')->getPairs(); + $this->view->orderBy = $orderBy; + $this->view->objectID = $objectID; + $this->view->pager = $pager; + $this->view->repoList = empty($repoList) ? $repoList: $repoList[$pageID - 1];; + $this->view->products = $this->loadModel('product')->getPairs(); + //$this->view->sonarRepoList = $sonarRepoList; $this->display(); } diff --git a/module/repo/view/maintain.html.php b/module/repo/view/maintain.html.php index f4f083953d..33ea5cdc56 100644 --- a/module/repo/view/maintain.html.php +++ b/module/repo/view/maintain.html.php @@ -27,7 +27,7 @@ - + @@ -59,6 +59,11 @@ common::printIcon('gitlab', 'createWebhook', "repoID=$repo->id", '', 'list', 'change', 'hiddenwin'); common::printIcon('gitlab', 'importIssue', "repo={$repo->id}", '', 'list', 'link'); } + if(isset($sonarRepoList[$repo->id])) + { + $jobID = $sonarRepoList[$repo->id]->id; + common::printIcon('sonarqube', 'execJob', "jobID=$jobID", '', 'list', 'sonarqube', 'hiddenwin'); + } common::printIcon('repo', 'delete', "repoID=$repo->id&objectID=$objectID", '', 'list', 'trash', 'hiddenwin'); ?> diff --git a/module/sonarqube/control.php b/module/sonarqube/control.php index f6dd4434cc..18c887290e 100644 --- a/module/sonarqube/control.php +++ b/module/sonarqube/control.php @@ -63,8 +63,7 @@ class sonarqube extends control $sonarqubeID = $this->loadModel('pipeline')->create('sonarqube'); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); - $this->loadModel('action'); - $actionID = $this->action->create('sonarqube', $sonarqubeID, 'created'); + $actionID = $this->loadModel('action')->create('sonarqube', $sonarqubeID, 'created'); return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('browse'))); } @@ -96,4 +95,16 @@ class sonarqube extends control if(!isset($result->valid) or !$result->valid) return $this->send(array('result' => 'fail', 'message' => array('token' => array($this->lang->sonarqube->validError)))); $this->post->set('token', $token); } + + /** + * Exec job. + * + * @param int $jobID + * @access public + * @return void + */ + public function execJob($jobID) + { + echo $this->fetch('job', 'exec', "jobID=$jobID"); + } } diff --git a/module/sonarqube/lang/en.php b/module/sonarqube/lang/en.php index f1dd3b27a2..c562bdbdb1 100644 --- a/module/sonarqube/lang/en.php +++ b/module/sonarqube/lang/en.php @@ -9,6 +9,7 @@ $lang->sonarqube->delete = 'Delete SonarQube'; $lang->sonarqube->confirmDelete = 'Do you want to delete this SonarQube server?'; $lang->sonarqube->serverFail = 'Connect to SonarQube server failed, please check the SonarQube server.'; $lang->sonarqube->browseProject = "SonarQube Project List"; +$lang->sonarqube->execJob = "Exec SonarQube Job"; $lang->sonarqube->id = 'ID'; $lang->sonarqube->name = "{$lang->sonarqube->common} Name"; diff --git a/module/sonarqube/lang/zh-cn.php b/module/sonarqube/lang/zh-cn.php index dea6c84c2d..306938acfc 100644 --- a/module/sonarqube/lang/zh-cn.php +++ b/module/sonarqube/lang/zh-cn.php @@ -9,6 +9,7 @@ $lang->sonarqube->delete = '删除SonarQube'; $lang->sonarqube->confirmDelete = '确认删除该SonarQube吗?'; $lang->sonarqube->serverFail = '连接SonarQube服务器异常,请检查SonarQube服务器。'; $lang->sonarqube->browseProject = "SonarQube项目列表"; +$lang->sonarqube->execJob = "执行SonarQube任务"; $lang->sonarqube->id = 'ID'; $lang->sonarqube->name = "{$lang->sonarqube->common}名称"; From b3ff9202a22e65c2a18f46c3afa812afd3f51f58 Mon Sep 17 00:00:00 2001 From: liyuchun Date: Wed, 12 Jan 2022 14:38:06 +0800 Subject: [PATCH 11/11] * Finish task #47233. --- module/repo/control.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/repo/control.php b/module/repo/control.php index b11b87ba8b..5d7cdff573 100644 --- a/module/repo/control.php +++ b/module/repo/control.php @@ -84,7 +84,7 @@ class repo extends control if($this->viewType !== 'json') $this->commonAction($repoID, $objectID); $repoList = $this->repo->getList(0, '', $orderBy); - //$sonarRepoList = $this->loadModel('sonarqube')->getSonarqubeByRepo(array_keys($repoList)); + $sonarRepoList = $this->loadModel('sonarqube')->getSonarqubeByRepo(array_keys($repoList)); /* Pager. */ $this->app->loadClass('pager', $static = true); @@ -101,7 +101,7 @@ class repo extends control $this->view->pager = $pager; $this->view->repoList = empty($repoList) ? $repoList: $repoList[$pageID - 1];; $this->view->products = $this->loadModel('product')->getPairs(); - //$this->view->sonarRepoList = $sonarRepoList; + $this->view->sonarRepoList = $sonarRepoList; $this->display(); }
sonarqube->name;?>sonarqube->placeholder->name}'");?>sonarqube->placeholder->name}'");?>
sonarqube->url;?>sonarqube->placeholder->url}'");?>sonarqube->placeholder->url}'");?>
sonarqube->account;?>
sonarqube->password;?>
repo->name); ?> repo->product); ?> repo->path; ?>actions; ?>actions; ?>