Merge branch 'devops_liyuchun_47233' into devops19

This commit is contained in:
王怡栋
2022-01-14 10:58:25 +08:00
6 changed files with 44 additions and 14 deletions
+1 -1
View File
@@ -56,4 +56,4 @@ $config->action->majorList['execution'] = array('opened', 'edited');
$config->action->needGetProjectType = 'build,task,bug,case,testcase,caselib,testtask,testsuite,testreport,doc,issue,release,risk,design,opportunity,trainplan,gapanalysis,researchplan,researchreport,';
$config->action->needGetRelateField = ',story,productplan,release,task,build,bug,case,testtask,testreport,doc,doclib,issue,risk,opportunity,trainplan,gapanalysis,team,whitelist,researchplan,researchreport,meeting,kanbanlane,kanbancolumn,';
$config->action->noLinkModules = ',doclib,module,webhook,gitlab,pipeline,jenkins,kanban,kanbanspace,kanbancolumn,kanbanlane,kanbanregion,kanbancard,execution,project,';
$config->action->noLinkModules = ',doclib,module,webhook,gitlab,sonarqube,pipeline,jenkins,kanban,kanbanspace,kanbancolumn,kanbanlane,kanbanregion,kanbancard,execution,project,';
-2
View File
@@ -1389,7 +1389,6 @@ $lang->resource->sonarqube->create = 'create';
$lang->resource->sonarqube->edit = 'edit';
$lang->resource->sonarqube->delete = 'delete';
$lang->resource->sonarqube->browseProject = 'browseProject';
$lang->resource->sonarqube->createProject = 'createProject';
$lang->resource->sonarqube->deleteProject = 'deleteProject';
$lang->resource->sonarqube->execJob = 'execJob';
@@ -1398,7 +1397,6 @@ $lang->sonarqube->methodOrder[10] = 'create';
$lang->sonarqube->methodOrder[15] = 'edit';
$lang->sonarqube->methodOrder[20] = 'delete';
$lang->sonarqube->methodOrder[25] = 'browseProject';
$lang->sonarqube->methodOrder[30] = 'createProject';
$lang->sonarqube->methodOrder[35] = 'deleteProject';
$lang->sonarqube->methodOrder[40] = 'execJob';
+18
View File
@@ -593,4 +593,22 @@ class jobModel extends model
->beginIF($jobID > 0)->andWhere('id')->ne($jobID)->fi()
->fetchAll('repo');
}
/**
* Get job pairs by sonarqube projectkeys.
*
* @param int $sonarqubeID
* @param array $projectKeys
* @access public
* @return array
*/
public function getJobBySonarqubeProject($sonarqubeID, $projectKeys = array())
{
return $this->dao->select('projectKey,id')->from(TABLE_JOB)
->where('deleted')->eq(0)
->andWhere('frame')->eq('sonarqube')
->andWhere('sonarqubeServer')->eq($sonarqubeID)
->andWhere('projectKey')->in($projectKeys)
->fetchPairs();
}
}
+4 -4
View File
@@ -76,7 +76,7 @@ class pipelineModel extends model
->add('private',md5(rand(10,113450)))
->add('createdBy', $this->app->user->account)
->add('createdDate', helper::now())
->trim('token')
->trim('url,token,account,password')
->skipSpecial('url,token,account,password')
->get();
if($type == 'gitlab') $pipeline->url = rtrim($pipeline->url, '/');
@@ -105,7 +105,7 @@ class pipelineModel extends model
$pipeline = fixer::input('post')
->add('editedBy', $this->app->user->account)
->add('editedDate', helper::now())
->trim('token')
->trim('url,token,account,password')
->skipSpecial('url,token,account,password')
->get();
@@ -127,9 +127,9 @@ class pipelineModel extends model
* Delete one record.
*
* @param string $id the id to be deleted
* @param string $object the action object
* @param string $object the action object
* @access public
* @return int
* @return int
*/
public function delete($id, $object = 'gitlab')
{
+14 -5
View File
@@ -100,18 +100,21 @@ class sonarqube extends control
*/
protected function checkToken($sonarqubeID = 0)
{
$sonarqube = fixer::input('post')->get();
$this->dao->update('sonarqube')->data($sonarqube)->batchCheck(empty($sonarqubeID) ? $this->config->sonarqube->create->requiredFields : $this->config->sonarqube->edit->requiredFields, 'notempty');
$sonarqube = fixer::input('post')->trim('url,token,account,password')->get();
$this->dao->update('sonarqube')->data($sonarqube)
->batchCheck(empty($sonarqubeID) ? $this->config->sonarqube->create->requiredFields : $this->config->sonarqube->edit->requiredFields, 'notempty')
->batchCheck("url", 'URL');
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. */
$existSonarQube = $this->dao->select('*')->from(TABLE_PIPELINE)
->where("type='sonarqube' and (name='{$sonarqube->name}' or url='{$sonarqube->url}')")
->andWhere('deleted')->eq('0')
->beginIF(!empty($sonarqubeID))->andWhere('id')->ne($sonarqubeID)->fi()
->fetch();
if(isset($existSonarQube->name) and $existSonarQube->name == $sonarqube->name) return $this->send(array('result' => 'fail', 'message' => $this->lang->sonarqube->nameRepeatError));
if(isset($existSonarQube->url) and $existSonarQube->url== $sonarqube->url) return $this->send(array('result' => 'fail', 'message' => $this->lang->sonarqube->urlRepeatError));
if(isset($existSonarQube->url) and $existSonarQube->url == $sonarqube->url) return $this->send(array('result' => 'fail', 'message' => $this->lang->sonarqube->urlRepeatError));
$token = base64_encode("{$sonarqube->account}:{$sonarqube->password}");
$result = $this->sonarqube->apiValidate($sonarqube->url, $token);
@@ -201,7 +204,12 @@ class sonarqube extends control
$keyword = fixer::input('post')->setDefault('keyword', '')->get('keyword');
$sonarqubeProjectList = $this->sonarqube->apiGetProjects($sonarqubeID, $keyword);
foreach($sonarqubeProjectList as $key => $sonarqubeProject) !isset($sonarqubeProject->lastAnalysisDate) ? $sonarqubeProject->lastAnalysisDate = '' : '';
$projectKeyList = array();
foreach($sonarqubeProjectList as $key => $sonarqubeProject)
{
if(!isset($sonarqubeProject->lastAnalysisDate)) $sonarqubeProject->lastAnalysisDate = '';
$projectKeyList[] = $sonarqubeProject->key;
}
/* Data sort. */
list($order, $sort) = explode('_', $orderBy);
@@ -220,7 +228,8 @@ class sonarqube extends control
$this->view->pager = $pager;
$this->view->title = $this->lang->sonarqube->common . $this->lang->colon . $this->lang->sonarqube->browseProject;
$this->view->sonarqubeID = $sonarqubeID;
$this->view->sonarqubeProjectList = empty($sonarqubeProjectList) ? $sonarqubeProjectList: $sonarqubeProjectList[$pageID - 1];
$this->view->sonarqubeProjectList = (empty($sonarqubeProjectList) or empty($sonarqubeProjectList[$pageID - 1])) ? array() : $sonarqubeProjectList[$pageID - 1];
$this->view->projectJobPairs = $this->loadModel('job')->getJobBySonarqubeProject($sonarqubeID, $projectKeyList);
$this->view->orderBy = $orderBy;
$this->display();
}
+7 -2
View File
@@ -26,7 +26,7 @@
</form>
</div>
</div>
<div class="btn-toolbar pull-right">
<div class="btn-toolbar pull-right hide">
<?php if(common::hasPriv('sonarqube', 'createProject')) common::printLink('sonarqube', 'createProject', "sonarqubeID=$sonarqubeID", "<i class='icon icon-plus'></i> " . $lang->sonarqube->createProject, '', "class='btn btn-primary'");?>
</div>
</div>
@@ -35,7 +35,7 @@
<p>
<span class="text-muted"><?php echo $lang->noData;?></span>
<?php if(empty($keyword) and common::hasPriv('sonarqube', 'createProject')):?>
<?php echo html::a($this->createLink('sonarqube', 'createProject', "sonarqubeID=$sonarqubeID"), "<i class='icon icon-plus'></i> " . $lang->sonarqube->createProject, '', "class='btn btn-info'");?>
<?php //echo html::a($this->createLink('sonarqube', 'createProject', "sonarqubeID=$sonarqubeID"), "<i class='icon icon-plus'></i> " . $lang->sonarqube->createProject, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
@@ -63,6 +63,11 @@
/* Fix error when request type is PATH_INFO and the project key contains '-'.*/
$projectKey = str_replace('-', '*', $sonarqubeProject->key);
common::printLink('sonarqube', 'deleteProject', "sonarqubeID=$sonarqubeID&project=$projectKey", "<i class='icon icon-trash'></i> ", 'hiddenwin', "title='{$lang->sonarqube->deleteProject}' class='btn btn-primary'");
if(isset($projectJobPairs[$sonarqubeProject->key]))
{
$jobID = $projectJobPairs[$sonarqubeProject->key];
common::printIcon('sonarqube', 'execJob', "jobID=$jobID", '', 'list', 'sonarqube', 'hiddenwin');
}
?>
</td>
</tr>