From 9ddcbdc34a23ef47385bd01d3f242dc2f4795fba Mon Sep 17 00:00:00 2001 From: andreas Date: Mon, 2 Oct 2023 19:09:35 +0200 Subject: [PATCH] allow to set a tag for building in ci --- .circleci/config.yml | 4 ++++ webinstall/cibuild.php | 31 +++++++++++++++++++++---------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6e3f953..41f64aa 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,6 +1,10 @@ # Use the latest 2.1 version of CircleCI pipeline process engine. # See: https://circleci.com/docs/configuration-reference version: 2.1 +# set the filter to allow a build for any sha tag +filters: + tags: + only: /.*/ parameters: run_build: type: boolean diff --git a/webinstall/cibuild.php b/webinstall/cibuild.php index c17cd00..89c4f29 100644 --- a/webinstall/cibuild.php +++ b/webinstall/cibuild.php @@ -12,6 +12,7 @@ const defaultBranch='master'; const defaultUser='wellenvogel'; const defaultRepo='esp32-nmea2000'; const TABLENAME="CIBUILDS"; +const KEEPINTERVAL="30"; //days function getTokenHeaders(){ global $CI_TOKEN; @@ -92,20 +93,25 @@ function getArtifacts($job,$slug){ return getJson($url,getTokenHeaders(),true); } -function insertPipeline($id,$param){ +function insertPipeline($id,$requestParam){ $database=openDb(); if (! isset($database)) return false; + $param=$requestParam['parameters']; try { $status='created'; + $tag=null; + if (isset($requestParam['tag'])) $tag=$requestParam['tag']; $stmt = $database->prepare("INSERT into " . TABLENAME . - "(id,status,config,environment,buildflags) VALUES (?,?,?,?,?)"); - $stmt->bind_param("sssss", + "(id,status,config,environment,buildflags,tag) VALUES (?,?,?,?,?,?)"); + $stmt->bind_param("ssssss", $id, $status, $param['config'], $param['environment'], - $param['build_flags']); + $param['build_flags'], + $tag); $stmt->execute(); + $database->query("DELETE from ". TABLENAME. " where timestamp < NOW() - interval ". KEEPINTERVAL. " DAY"); return true; } catch (Exception $e) { error_log("insert pipeline $id failed: $e"); @@ -142,13 +148,14 @@ function findPipeline($param) return false; try { $stmt = null; + $database->query("DELETE from ". TABLENAME. " where timestamp < NOW() - interval ". KEEPINTERVAL. " DAY"); if (isset($param['tag'])) { $stmt = $database->prepare("SELECT id,UNIX_TIMESTAMP(timestamp) from " . TABLENAME . - " where status='success' and environment=? and buildflags=? and tag=? order by timestamp desc"); + " where status IN('success','running','created') and environment=? and buildflags=? and tag=? order by timestamp desc"); $stmt->bind_param("sss", $param['environment'], $param['buildflags'], $param['tag']); } else { $stmt = $database->prepare("SELECT id,UNIX_TIMESTAMP(timestamp) from " . TABLENAME . - " where status='success' and environment=? and buildflags=? order by timestamp desc"); + " where status IN('success','running','created') and environment=? and buildflags=? order by timestamp desc"); $stmt->bind_param("ss", $param['environment'], $param['buildflags']); } $stmt->execute(); @@ -244,9 +251,8 @@ try { if ($action == 'start'){ addVars( $par, - ['environment','buildflags','config','suffix','branch','user','repo'], + ['environment','buildflags','config','suffix','user','repo'], array('suffix'=>'', - 'branch'=>defaultBranch, 'config'=>'{}', 'user'=>defaultUser, 'repo'=>defaultRepo, @@ -254,7 +260,6 @@ try { ) ); $requestParam=array( - 'branch'=>$par['branch'], 'parameters'=> array( 'run_build'=>true, 'environment'=>$par['environment'], @@ -263,10 +268,16 @@ try { 'build_flags'=>$par['buildflags'] ) ); + if (isset($_REQUEST['tag'])){ + $requestParam['tag']=safeName($_REQUEST['tag']); + } + else{ + $requestParam['branch']=defaultBranch; + } $userRepo=fillUserAndRepo(null,$par); $url=apiBase."/".replaceVars(apiRepo,$userRepo)."/pipeline"; $rt=getJson($url,getTokenHeaders(),true,$requestParam); - insertPipeline($rt['id'],$requestParam['parameters']); + insertPipeline($rt['id'],$requestParam); echo (json_encode($rt)); exit(0); }