コード例 #1
0
 /**
  * Verify and fill number revision from jenkins server
  * for JenkinsRun which doesn't have revision number
  *
  * @static
  *
  * @param Jenkins       $jenkins
  * @param int           $userId
  * @param Criteria|null $criteria
  * 
  * @return void
  */
 public static function fillEmptyJobBuildNumber(Jenkins $jenkins, $userId, Criteria $criteria = null)
 {
     if (null === $criteria) {
         $criteria = new Criteria();
     }
     $criteria->addJoin(JenkinsRunPeer::JENKINS_GROUP_RUN_ID, JenkinsGroupRunPeer::ID, Criteria::JOIN);
     $criteria->add(JenkinsRunPeer::JOB_BUILD_NUMBER, null, Criteria::ISNULL);
     $criteria->add(JenkinsRunPeer::LAUNCHED, 1, Criteria::EQUAL);
     $criteria->add(JenkinsGroupRunPeer::SF_GUARD_USER_ID, $userId, Criteria::EQUAL);
     $emptyRunsByJobName = array();
     foreach (JenkinsRunPeer::doSelect($criteria) as $run) {
         /** @var JenkinsRun $run */
         if ($run->isInJenkinsQueue($jenkins)) {
             continue;
         }
         $emptyRunsByJobName[$run->getJobName()][$run->getId()] = $run;
     }
     foreach ($emptyRunsByJobName as $jobName => $runs) {
         /** @var Jenkins_Job $jenkinsJob  */
         $jenkinsJob = $jenkins->getJob($jobName);
         foreach ($runs as $run) {
             /** @var JenkinsRun $run  */
             /** @var Jenkins_Build $build  */
             foreach ($jenkinsJob->getBuilds() as $build) {
                 if ($run->isRelatedToJenkinsBuild($build)) {
                     $run->setJobBuildNumber($build->getNumber());
                     $run->save();
                     break;
                 }
             }
         }
     }
 }