Merge branch 'sugon'
This commit is contained in:
@@ -69,7 +69,7 @@ class job extends control
|
||||
$errors = dao::getError();
|
||||
if($this->post->engine == 'gitlab' and isset($errors['server']))
|
||||
{
|
||||
$errors['gitlabRepo'][] = sprintf($this->lang->error->notempty, $this->lang->job->repo);
|
||||
if(!isset($errors['repo'])) $errors['repo'][] = sprintf($this->lang->error->notempty, $this->lang->job->repoServer);
|
||||
unset($errors['server']);
|
||||
unset($errors['pipeline']);
|
||||
}
|
||||
@@ -105,8 +105,8 @@ class job extends control
|
||||
$repoTypes[$repo->id] = $repo->SCM;
|
||||
if(strtolower($repo->SCM) == 'gitlab')
|
||||
{
|
||||
$gitlab = $this->loadModel('gitlab')->getByID($repo->gitlab);
|
||||
$tokenUser = $this->gitlab->apiGetCurrentUser($gitlab->url, $gitlab->token);
|
||||
if(isset($repo->gitlab)) $gitlab = $this->loadModel('gitlab')->getByID($repo->gitlab);
|
||||
if(!empty($gitlab)) $tokenUser = $this->gitlab->apiGetCurrentUser($gitlab->url, $gitlab->token);
|
||||
if(!isset($tokenUser->is_admin) or !$tokenUser->is_admin) continue;
|
||||
$gitlabRepos[$repo->id] = $repo->name;
|
||||
}
|
||||
@@ -369,8 +369,49 @@ class job extends control
|
||||
public function ajaxGetRefList($repoID)
|
||||
{
|
||||
$repo = $this->loadModel('repo')->getRepoByID($repoID);
|
||||
if($repo->SCM != 'Gitlab') $this->send(array('result' => 'fail'));
|
||||
$refList = $this->loadModel('gitlab')->getReferenceOptions($repo->gitlab, $repo->project);
|
||||
if($repo->SCM == 'Gitlab') $refList = $this->loadModel('gitlab')->getReferenceOptions($repo->gitlab, $repo->project);
|
||||
if($repo->SCM != 'Gitlab') $refList = $this->repo->getBranches($repo, true);
|
||||
$this->send(array('result' => 'success', 'refList' => $refList));
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax get repo list.
|
||||
*
|
||||
* @param int $engine
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ajaxGetRepoList($engine)
|
||||
{
|
||||
$repoList = $this->loadModel('repo')->getList($this->projectID);
|
||||
$repoPairs = array(0 => '');
|
||||
foreach($repoList as $repo)
|
||||
{
|
||||
if(empty($repo->synced)) continue;
|
||||
if($engine == 'gitlab')
|
||||
{
|
||||
if(strtolower($repo->SCM) == 'gitlab') $repoPairs[$repo->id] = $repo->name;
|
||||
}
|
||||
else
|
||||
{
|
||||
$repoPairs[$repo->id] = $repo->name;
|
||||
}
|
||||
}
|
||||
echo html::select('repo', $repoPairs, '', "class='form-control chosen'");
|
||||
die();
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax get an repo type.
|
||||
*
|
||||
* @param int $repoID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ajaxGetRepoType($repoID)
|
||||
{
|
||||
$repo = $this->loadModel('repo')->getRepoByID($repoID);
|
||||
$this->send(array('result' => 'success', 'type' => strtolower($repo->SCM)));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -64,3 +64,17 @@ function setValueInput(obj)
|
||||
$(obj).closest('.input-group').find('select').removeAttr('disabled');
|
||||
}
|
||||
}
|
||||
|
||||
function loadRepoList(engine = '')
|
||||
{
|
||||
var link = createLink('job', 'ajaxGetRepoList', 'engine=' + engine);
|
||||
$.get(link, function(data)
|
||||
{
|
||||
if(data)
|
||||
{
|
||||
$('#repo').replaceWith(data)
|
||||
$('#repo_chosen').remove();
|
||||
$('#repo').chosen();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
$(document).ready(function()
|
||||
{
|
||||
$('#gitlabRepo').change(function()
|
||||
{
|
||||
$('#repo').val($(this).val()).change();
|
||||
})
|
||||
|
||||
$('#repo').change(function()
|
||||
$(document).on('change', '#repo', function()
|
||||
{
|
||||
var repoID = $(this).val();
|
||||
if(repoID <= 0) return;
|
||||
|
||||
var link = createLink('repo', 'ajaxLoadProducts', 'repoID=' + repoID);
|
||||
$.get(link, function(data)
|
||||
{
|
||||
@@ -19,33 +16,54 @@ $(document).ready(function()
|
||||
}
|
||||
});
|
||||
|
||||
var type = 'Git';
|
||||
if(typeof(repoTypes[repoID]) != 'undefined') type = repoTypes[repoID];
|
||||
|
||||
$('.svn-fields').addClass('hidden');
|
||||
if(type == 'Subversion' && $('#triggerType').val() == 'tag') $('.svn-fields').removeClass('hidden');
|
||||
|
||||
$('#repoType').val(type);
|
||||
$('#triggerType option[value=tag]').html(type == 'Subversion' ? dirChange : buildTag).trigger('chosen:updated');
|
||||
if(type == 'Subversion')
|
||||
/* Add new way get repo type. */
|
||||
var link = createLink('job', 'ajaxGetRepoType', 'repoID=' + repoID);
|
||||
$.getJSON(link, function(data)
|
||||
{
|
||||
$('#svnDirBox .input-group').empty();
|
||||
$('#svnDirBox .input-group').append("<div class='load-indicator loading'></div>");
|
||||
$.getJSON(createLink('repo', 'ajaxGetSVNDirs', 'repoID=' + repoID), function(tags)
|
||||
if(data.result == 'success')
|
||||
{
|
||||
html = "<select id='svnDir' name='svnDir[]' class='form-control'>";
|
||||
for(path in tags)
|
||||
if(data.type.indexOf('git') != -1)
|
||||
{
|
||||
var encodePath = tags[path];
|
||||
html += "<option value='" + path + "' data-encodePath='" + encodePath + "'>" + path + "</option>";
|
||||
$('.reference').show();
|
||||
$('.svn-fields').addClass('hidden');
|
||||
$('#reference option').remove();
|
||||
|
||||
$.getJSON(createLink('job', 'ajaxGetRefList', "repoID=" + repoID), function(response)
|
||||
{
|
||||
if(response.result == 'success')
|
||||
{
|
||||
$.each(response.refList, function(reference, name)
|
||||
{
|
||||
$('#reference').append("<option value='" + reference + "'>" + name + "</option>");
|
||||
});
|
||||
}
|
||||
$('#reference').trigger('chosen:updated');
|
||||
});
|
||||
}
|
||||
html += '</select>';
|
||||
$('#svnDirBox .loading').remove();
|
||||
$('#svnDirBox .input-group').append(html);
|
||||
$('#svnDirBox #svnDir').chosen();
|
||||
})
|
||||
}
|
||||
})
|
||||
else
|
||||
{
|
||||
if($('#triggerType').val() == 'tag') $('.svn-fields').removeClass('hidden');
|
||||
|
||||
$('#svnDirBox .input-group').empty();
|
||||
$('#svnDirBox .input-group').append("<div class='load-indicator loading'></div>");
|
||||
$.getJSON(createLink('repo', 'ajaxGetSVNDirs', 'repoID=' + repoID), function(tags)
|
||||
{
|
||||
html = "<select id='svnDir' name='svnDir[]' class='form-control'>";
|
||||
for(path in tags)
|
||||
{
|
||||
var encodePath = tags[path];
|
||||
html += "<option value='" + path + "' data-encodePath='" + encodePath + "'>" + path + "</option>";
|
||||
}
|
||||
html += '</select>';
|
||||
$('#svnDirBox .loading').remove();
|
||||
$('#svnDirBox .input-group').append(html);
|
||||
$('#svnDirBox #svnDir').chosen();
|
||||
})
|
||||
}
|
||||
$('#triggerggerType option[value=tag]').html(data.type == 'gitlab' ? buildTag : dirChange).trigger('chosen:updated');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('change', '[name^=svnDir]', function()
|
||||
{
|
||||
@@ -61,7 +79,8 @@ $(document).ready(function()
|
||||
{
|
||||
html = '';
|
||||
length = $('#svnDirBox .input-group [name^=svnDir]').length;
|
||||
length += 1;
|
||||
length++;
|
||||
|
||||
if(tags.length != 0)
|
||||
{
|
||||
html = "<select id='svnDir" + length + "' name='svnDir[]' class='form-control'>";
|
||||
@@ -75,6 +94,7 @@ $(document).ready(function()
|
||||
}
|
||||
html += '</select>';
|
||||
}
|
||||
|
||||
$('#svnDirBox .loading').remove();
|
||||
$('#svnDirBox .input-group').append(html);
|
||||
$('#svnDirBox #svnDir' + length).chosen();
|
||||
@@ -124,15 +144,19 @@ $(document).ready(function()
|
||||
var scheduleOption = "<option value='schedule'>" + $('#triggerType').find('[value=schedule]').text() + "</option>";
|
||||
$('#engine').change(function()
|
||||
{
|
||||
$('#jenkinsServerTR').toggle($('#engine').val() == 'jenkins');
|
||||
$('#gitlabServerTR').toggle($('#engine').val() == 'gitlab');
|
||||
var engine = $(this).val();
|
||||
$('.reference').hide();
|
||||
loadRepoList(engine);
|
||||
$('#jenkinsServerTR').toggle(engine == 'jenkins');
|
||||
$('#gitlabServerTR').toggle(engine == 'gitlab');
|
||||
|
||||
if($(this).val() == 'gitlab')
|
||||
if(engine == 'gitlab')
|
||||
{
|
||||
$('tr.gitlabRepo').show();
|
||||
$('tr.commonRepo').hide();
|
||||
}
|
||||
else if($('#triggerType').find('[value=schedule]').size() == 0 )
|
||||
//else if($('#triggerType').find('[value=schedule]').size() == 0)
|
||||
else
|
||||
{
|
||||
$('tr.gitlabRepo').hide();
|
||||
$('tr.commonRepo').show();
|
||||
@@ -140,26 +164,6 @@ $(document).ready(function()
|
||||
});
|
||||
|
||||
$('#engine').change();
|
||||
$('#gitlabRepo').change(function()
|
||||
{
|
||||
$('#reference option').remove();
|
||||
|
||||
var repoID = $(this).val();
|
||||
if(repoID > 0)
|
||||
{
|
||||
$.getJSON(createLink('job', 'ajaxGetRefList', "repoID=" + repoID), function(response)
|
||||
{
|
||||
if(response.result == 'success')
|
||||
{
|
||||
$.each(response.refList, function(reference, name)
|
||||
{
|
||||
$('#reference').append("<option value='" + reference + "'>" + name + "</option>");
|
||||
});
|
||||
}
|
||||
$('#reference').trigger('chosen:updated');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('#triggerType').change();
|
||||
});
|
||||
|
||||
@@ -44,6 +44,7 @@ $lang->job->editedBy = 'Edited By';
|
||||
$lang->job->editedDate = 'Edited Date';
|
||||
$lang->job->lastTag = 'Last Tag';
|
||||
$lang->job->deleted = 'Deleted';
|
||||
$lang->job->repoServer = 'Repo Server';
|
||||
|
||||
$lang->job->lblBasic = 'Basic Info';
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ $lang->job->editedBy = '由谁编辑';
|
||||
$lang->job->editedDate = '编辑日期';
|
||||
$lang->job->lastTag = '最后标签';
|
||||
$lang->job->deleted = '已删除';
|
||||
$lang->job->repoServer = '版本库服务器';
|
||||
|
||||
$lang->job->lblBasic = '基本信息';
|
||||
|
||||
|
||||
@@ -50,7 +50,23 @@ class jobModel extends model
|
||||
->fetchAll('id');
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Get job list by RepoID.
|
||||
*
|
||||
* @param int $repoID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getListByRepoID($repoID)
|
||||
{
|
||||
return $this->dao->select('id, name, lastStatus')->from(TABLE_JOB)
|
||||
->where('deleted')->eq('0')
|
||||
->andWhere('repo')->eq($repoID)
|
||||
->orderBy('id_desc')
|
||||
->fetchAll('id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get list by triggerType field.
|
||||
*
|
||||
* @param string $triggerType
|
||||
@@ -136,10 +152,9 @@ class jobModel extends model
|
||||
|
||||
if(strtolower($job->engine) == 'gitlab')
|
||||
{
|
||||
$repo = $this->loadModel('repo')->getRepoByID($job->gitlabRepo);
|
||||
$repo = $this->loadModel('repo')->getRepoByID($job->repo);
|
||||
$project = zget($repo, 'project');
|
||||
|
||||
$job->repo = $job->gitlabRepo;
|
||||
$job->server = (int)zget($repo, 'gitlab', 0);
|
||||
$job->pipeline = json_encode(array('project' => $project, 'reference' => $this->post->reference));
|
||||
}
|
||||
@@ -183,7 +198,6 @@ class jobModel extends model
|
||||
|
||||
$this->dao->insert(TABLE_JOB)->data($job)
|
||||
->batchCheck($this->config->job->create->requiredFields, 'notempty')
|
||||
|
||||
->batchCheckIF($job->triggerType === 'schedule', "atDay,atTime", 'notempty')
|
||||
->batchCheckIF($job->triggerType === 'commit', "comment", 'notempty')
|
||||
->batchCheckIF(($this->post->repoType == 'Subversion' and $job->triggerType == 'tag'), "svnDir", 'notempty')
|
||||
|
||||
@@ -42,14 +42,10 @@
|
||||
<span id="gitlabServerTR"><?php echo $lang->job->engineTips->success;?></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class='commonRepo'>
|
||||
<tr>
|
||||
<th><?php echo $lang->job->repo; ?></th>
|
||||
<td><?php echo html::select('repo', $repoPairs, '', "class='form-control'"); ?></td>
|
||||
</tr>
|
||||
<tr class='gitlabRepo hide'>
|
||||
<th><?php echo $lang->job->repo; ?></th>
|
||||
<td> <?php echo html::select('gitlabRepo', $gitlabRepos, '', "class='chosen form-control'");?> </td>
|
||||
<td> <?php echo html::select('reference', array(), '', "class='chosen form-control'");?> </td>
|
||||
<td><?php echo html::select('repo', $repoPairs, '', "class='form-control chosen'"); ?></td>
|
||||
<td class='reference hide'><?php echo html::select('reference', array(), '', "class='chosen form-control'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->job->product; ?></th>
|
||||
|
||||
Reference in New Issue
Block a user