From 55731a6c5038bdaab855bb9fcd231d7dfcb2526c Mon Sep 17 00:00:00 2001 From: Guan Xiying Date: Tue, 27 Jul 2021 11:05:54 +0800 Subject: [PATCH] * Add sync gitlab pipeline job status function. --- module/ci/model.php | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/module/ci/model.php b/module/ci/model.php index 45e9cee5ad..19b2a7dce1 100644 --- a/module/ci/model.php +++ b/module/ci/model.php @@ -28,15 +28,15 @@ class ciModel extends model */ public function checkCompileStatus() { - $compiles = $this->dao->select('t1.*, t2.pipeline, t3.name as jenkinsName,t3.url,t3.account,t3.token,t3.password') - ->from(TABLE_COMPILE)->alias('t1') - ->leftJoin(TABLE_JOB)->alias('t2')->on('t1.job=t2.id') - ->leftJoin(TABLE_PIPELINE)->alias('t3')->on('t2.server=t3.id') - ->where('t1.status')->ne('success') - ->andWhere('t1.status')->ne('failure') - ->andWhere('t1.status')->ne('create_fail') - ->andWhere('t1.status')->ne('timeout') - ->andWhere('t1.createdDate')->gt(date(DT_DATETIME1, strtotime("-1 day"))) + $compiles = $this->dao->select('compile.*, job.engine,job.pipeline, pipeline.name as jenkinsName,job.server,pipeline.url,pipeline.account,pipeline.token,pipeline.password') + ->from(TABLE_COMPILE)->alias('compile') + ->leftJoin(TABLE_JOB)->alias('job')->on('compile.job=job.id') + ->leftJoin(TABLE_PIPELINE)->alias('pipeline')->on('job.server=pipeline.id') + ->where('compile.status')->ne('success') + ->andWhere('compile.status')->ne('failure') + ->andWhere('compile.status')->ne('create_fail') + ->andWhere('compile.status')->ne('timeout') + ->andWhere('compile.createdDate')->gt(date(DT_DATETIME1, strtotime("-1 day"))) ->fetchAll(); foreach($compiles as $compile) $this->syncCompileStatus($compile); @@ -57,6 +57,7 @@ class ciModel extends model return false; } + if($compile->engine == 'gitlab') return $this->syncGitlabTaskStatus($compile); $jenkinsServer = $compile->url; $jenkinsUser = $compile->account; $jenkinsPassword = $compile->token ? $compile->token : base64_decode($compile->password); @@ -112,6 +113,22 @@ class ciModel extends model } } + /** + * Sync gitlab task status. + * + * @param int $compile + * @access public + * @return bool + */ + public function syncGitlabTaskStatus($compile) + { + $now = helper::now(); + $pipeline = $this->loadModel('gitlab')->apiGetSinglePipeline($compile->server, $compile->pipeline, $compile->queue); + $this->dao->update(TABLE_COMPILE)->set('status')->eq($pipeline->status)->set('updateDate')->eq($now)->where('id')->eq($compile->id)->exec(); + $this->dao->update(TABLE_JOB)->set('lastExec')->eq($now)->set('lastStatus')->eq($pipeline->status)->where('id')->eq($compile->job)->exec(); + return !dao::isError(); + } + /** * Update ci build status. *