Commit a9376e19 authored by 晓彤's avatar 晓彤

添加pipelinepipeline

parent 5822efde
......@@ -7,9 +7,9 @@ module.exports = merge(prodEnv, {
ENV_CONFIG: '"dev"',
// QA_PLATFORM: '"//localhost:8082"',
TESTDATA_API: '"//testdata.liangkebang.com"',
HOLMES: '"//localhost:8084"',
// HOLMES: '"//localhost:8084"',
QA_PLATFORM: '"//qa-platform-fe.liangkebang.net/"',
// HOLMES: '"//holmes-fe.liangkebang.net/"',
QA_API: "//qaapi.liangkebang.com/"
HOLMES: '"//holmes-fe.liangkebang.net/"',
QA_API: "//qaapi.liangkebang.com/",
})
......@@ -54,3 +54,43 @@ export function sendSmokingResult(data) {
data
})
}
// 获取pipeline列表接口
export function getPipelineList(queryInfo) {
return request({
url: '/pipeline/list',
method: 'get',
params: queryInfo
})
}
// 获取所有服务列表
export function getGitProjectList(queryInfo) {
return request({
url: '/gitlab/projects',
method: 'get',
params: queryInfo
})
}
// 获取分支列表
export function getGitBranchList(queryInfo) {
return request({
url: '/gitlab/branches',
method: 'get',
params: queryInfo
})
}
// 添加pipeline接口
export function addPipeline(data) {
return request({
url: '/pipeline/add',
method: 'post',
data
})
}
// 添加pipeline接口
export function editPipeline(data) {
return request({
url: '/pipelist/modify',
method: 'post',
data
})
}
......@@ -9,11 +9,19 @@
<el-table :data="dingRobotList" border style="width: 100%">
<!-- <el-table-column prop="id" label="编号" width="80px"></el-table-column> -->
<el-table-column type="index" label="序号" width="50px"></el-table-column>
<el-table-column prop="projectName" label="项目名" width="220px"></el-table-column>
<el-table-column prop="dingUrl" label="钉钉url"></el-table-column>
<el-table-column prop="creator" label="创建人" width="80px">
<el-table-column prop="dingRobot.projectName" label="项目名" width="220px"></el-table-column>
<!-- <el-table-column prop="dingUrl" label="钉钉url"></el-table-column> -->
<el-table-column label="服务->分支" width="300px">
<template slot-scope="scope">
<div v-for="item in scope.row.pipelineList" :key="item.id"><b>{{ item.serviceName }}</b> -> {{ item.serviceBranch }}</div>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间" width="180px"></el-table-column>
<el-table-column prop="dingRobot.namespace" label="环 境" width="100px"></el-table-column>
<el-table-column prop="dingRobot.creator" label="创建人" width="100px">
</el-table-column>
<el-table-column prop="dingRobot.createTime" label="创建时间" width="180px"></el-table-column>
<el-table-column label="操作" width="400px">
<slot slot-scope="scope">
<el-button type="primary" size="small" @click="openEditDialog(scope.row)">编辑</el-button>
......@@ -31,21 +39,79 @@
<!-- 新增对话框 -->
<el-dialog title="新增robot" :visible.sync="addDialogVisible" width="60%" @close="closeAddDialog">
<el-form ref="addRobotFormRef" :rules="formRules" :model="robotForm" label-width="150px">
<el-form-item label="jira项目" prop="jiraProjectKey">
<el-select v-model="robotForm.jiraProjectKey" placeholder="请选择Jira项目">
<el-form ref="addRobotFormRef" :rules="formRules" :model="pipelineFrom" label-width="150px">
<el-form-item label="jira项目" prop="pipelineFrom.dingRobot.jiraProjectKey">
<el-select v-model="pipelineFrom.dingRobot.jiraProjectKey" placeholder="请选择Jira项目">
<el-option v-for="item in jiraProjectList" :key="item.key" :label="item.name" :value="item.key">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="项目名称" prop="projectName">
<el-input v-model="robotForm.projectName" placeholder="请输入项目名称"></el-input>
<el-form-item label="项目名称" prop="pipelineFrom.dingRobot.projectName">
<el-input v-model="pipelineFrom.dingRobot.projectName" placeholder="请输入项目名称"></el-input>
</el-form-item>
<el-form-item label="钉钉通知地址" prop="dingUrl">
<el-input v-model="robotForm.dingUrl" placeholder="请输入钉钉通知地址" type="textarea"></el-input>
<el-form-item label="钉钉通知地址" prop="pipelineFrom.dingRobot.dingUrl">
<el-input v-model="pipelineFrom.dingRobot.dingUrl" placeholder="请输入钉钉通知地址" type="textarea"></el-input>
</el-form-item>
<el-form-item label="创建人" prop="creator">
<el-input v-model="robotForm.creator"></el-input>
<el-form-item label="创建人" prop="pipelineFrom.dingRobot.creator">
<el-input v-model="pipelineFrom.dingRobot.creator" placeholder="请输入创建人"></el-input>
</el-form-item>
<el-form-item label="环 境" prop="pipelineFrom.dingRobot.namespace">
<el-select v-model="pipelineFrom.dingRobot.namespace" placeholder="请选择环境">
<el-option v-for="item in namespaceList" :key="item.key" :label="item.desc" :value="item.key">
</el-option>
</el-select>
</el-form-item>
<!-- 添加 Pipeline -->
<el-form-item label="Pipeline">
<el-row>
<el-col :span="6">
<div style="text-align: center">
服务
</div>
</el-col>
<el-col :span="6">
<div style="text-align: center">
分支
</div>
</el-col>
<el-col :span="6">
<div style="text-align: center">
自动部署
</div>
</el-col>
<el-col :span="6">
<div>
操作
</div>
</el-col>
</el-row>
<el-row v-for="(item, index) in pipelineFrom.pipelineList" :key="index">
<el-col :span="6">
<div style="text-align: center;margin-top:5px">
<el-select v-model="item.serviceModel" placeholder="请选择服务" @change="selectServiceModel(item.serviceModel)" clearable>
<el-option v-for="item in serviceList" :key="item.index" :label="item.name" :value="item"></el-option>
</el-select>
</div>
</el-col>
<el-col :span="6">
<div style="text-align: center;margin-top:5px">
<el-select v-model="item.serviceBranch" placeholder="请选择分支" clearable>
<el-option v-for="item in serviceBranchList" :key="item" :label="item.name" :value="item.name"></el-option>
</el-select>
</div>
</el-col>
<el-col :span="6">
<div style="text-align: center;margin-top:5px">
<el-switch v-model="item.enable" active-color="#13ce66" inactive-color="#A9A9A9" active-text="是" inactive-text="否" @change="changeState($event, '3')"></el-switch>
</div>
</el-col>
<el-col :span="6">
<div style="margin-left: -15px;margin-top:5px">
<el-button size="mini" icon="el-icon-delete" @click="pipelineDelete(index)">删除</el-button>
</div>
</el-col>
</el-row>
<el-button size="mini" plain @click="AddPipelineListRow()" style="mragin-top: 10px" class="el-icon-circle-plus">添加</el-button>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
......@@ -72,6 +138,66 @@
<el-form-item label="创建人" prop="creator">
<el-input v-model="editRobotForm.creator"></el-input>
</el-form-item>
<el-form-item label="环 境" prop="namespace">
<el-select v-model="editRobotForm.env" placeholder="请选择环境">
<el-option v-for="item in namespaceList" :key="item.key" :label="item.desc" :value="item.key">
</el-option>
</el-select>
</el-form-item>
<!-- 编辑pipeline -->
<el-form-item label="Pipeline">
<el-row>
<el-col :span="6">
<div style="text-align: center">
服务
</div>
</el-col>
<el-col :span="6">
<div style="text-align: center">
分支
</div>
</el-col>
<el-col :span="6">
<div style="text-align: center">
自动部署
</div>
</el-col>
<el-col :span="6">
<div>
操作
</div>
</el-col>
</el-row>
<el-row v-for="(item, index) in editPipelineList" :key="index">
<el-col :span="6">
<div style="text-align: center;margin-top:5px">
<el-select v-model="item.serviceName" placeholder="请选择服务" @change="selectServiceModel(item.serviceName)" clearable>
<el-option v-for="item in serviceList" :key="item.name" :label="item.name" :value="item.name"></el-option>
</el-select>
</div>
</el-col>
<el-col :span="6">
<div style="text-align: center;margin-top:5px">
<el-select v-model="item.serviceBranch" placeholder="请选择分支" clearable>
<el-option v-for="item in serviceBranchList" :key="item" :label="item" :value="item"></el-option>
</el-select>
</div>
</el-col>
<el-col :span="6">
<div style="text-align: center;margin-top:5px">
<el-switch v-model="item.enable" active-color="#13ce66" inactive-color="#A9A9A9" active-text="是" inactive-text="否" @change="changeState($event, '3')"></el-switch>
</div>
</el-col>
<el-col :span="6">
<div style="margin-left: -15px;margin-top:5px">
<el-button size="mini" icon="el-icon-delete" @click="editPipelineDelete(index)">删除</el-button>
</div>
</el-col>
</el-row>
<el-button size="mini" plain @click="EditPipelineListRow()" style="mragin-top: 10px" class="el-icon-circle-plus">添加</el-button>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="editDialogVisible = false">取 消</el-button>
......@@ -122,13 +248,17 @@
<script>
import {
getJiraProjectList,
getProjectRobotList,
getPipelineList,
addProjectRobot,
modifyProjectRobot,
delProjectRobot,
sendScheduleReport,
sendSmokingResult
sendSmokingResult,
getGitProjectList,
getGitBranchList
} from '@/api/jira'
import { getNamespaceList } from '@/api/getXyqbData'
// import { getGitlabProject } from '@/api/qaApi'
export default {
data() {
return {
......@@ -143,12 +273,25 @@ export default {
editDialogVisible: false,
sendScheduleDialogVisible: false,
smokingDialogVisible: false,
robotForm: {
projectName: '',
dingUrl: '',
creator: '',
jiraProjectKey: ''
pipelineFrom: {
dingRobot: {
projectName: '',
dingUrl: '',
creator: '',
jiraProjectKey: '',
namespace: ''
},
pipelineList: [
{
serviceName: '',
serviceBranch: '',
serviceType: '',
namespace: '',
enable: 1
}
]
},
editRobotForm: {},
sendProjectRobot: {},
// 发送进度报告参数
......@@ -171,15 +314,30 @@ export default {
],
formRules: {
projectName: [
{ required: true, message: '请输入项目名称', trigger: 'blur' }
{
required: true,
message: '请输入项目名称',
trigger: 'blur'
}
],
dingUrl: [
{ required: true, message: '请输入钉钉机器人url', trigger: 'blur' }
{
required: true,
message: '请输入钉钉机器人url',
trigger: 'blur'
}
],
jiraProjectKey: [
{ required: true, message: '请选择对应的Jira项目', trigger: 'blur' }
{
required: true,
message: '请选择对应的Jira项目',
trigger: 'blur'
}
],
creator: [{ required: true, message: '请输入创建人', trigger: 'blur' }]
creator: [{ required: true, message: '请输入创建人', trigger: 'blur' }],
namespace: [
{ required: true, message: '请输入创建人', trigger: 'blur' }
]
},
sendFormRules: {
progress: [
......@@ -199,13 +357,45 @@ export default {
trigger: 'blur'
}
]
}
},
// 添加pipeline
newPipelineList: [
{
serviceName: '',
serviceBranch: '',
serviceType: '',
namespace: '',
enable: 1,
serviceModel: ''
}
],
serviceName: '',
serviceType: '',
serviceList: [],
serviceBranchList: [],
serviceMode: {
is_active: true,
deploy_to_testenv: true
},
namespaceList: [],
projectName: '',
// 编辑pipeline
editPipelineList: [
{
serviceName: '',
serviceBranch: '',
enable: true
}
]
}
},
methods: {
// 获取ding_robot列表
getProjectRobotList() {
getProjectRobotList(this.queryInfo).then((resp) => {
getPipelineList(this.queryInfo).then((resp) => {
this.dingRobotList = resp.data.data.list
this.totalNum = resp.data.data.total
})
......@@ -222,7 +412,15 @@ export default {
if (!valid) {
return false
} else {
addProjectRobot(this.robotForm).then((resp) => {
// 循环数组
for (var i = 0; i < this.pipelineFrom.pipelineList.length; i++) {
this.pipelineFrom.pipelineList[i].serviceName = this.serviceName
this.pipelineFrom.pipelineList[i].serviceType = this.serviceType
this.pipelineFrom.pipelineList[i].namespace =
this.pipelineFrom.dingRobot.namespace
}
addProjectRobot(this.pipelineFrom).then((resp) => {
console.log('新增信息', this.pipelineFrom)
if (resp.data.data === true) {
this.addDialogVisible = false
this.getProjectRobotList()
......@@ -280,7 +478,8 @@ export default {
},
// 发送进度报告
sendSchedule() {
this.sendScheduleData.jiraProjectKey = this.sendProjectRobot.jiraProjectKey
this.sendScheduleData.jiraProjectKey =
this.sendProjectRobot.jiraProjectKey
this.sendScheduleData.testProjectName = this.sendProjectRobot.projectName
this.sendScheduleData.progress = this.sendScheduleForm.progress + '%'
this.sendScheduleData.risk = this.sendScheduleForm.risk
......@@ -356,11 +555,72 @@ export default {
},
closeSmokingDialog() {
this.$refs.smokingFormRef.resetFields()
},
// 获取服务名称
// getServiceList() {
// getGitlabProject({
// is_active: true,
// deploy_to_testenv: true
// }).then((resp) => {
// console.log('22', resp)
// this.serviceList = resp.data
// })
// },
changeState() {},
// 选择服务下拉框触发事件
selectServiceModel(item) {
this.serviceName = item.name
this.serviceType = item.type
console.log('3333', item)
getGitBranchList({ projectName: item.name }).then((resp) => {
this.serviceBranchList = resp.data.data
console.log('55', this.serviceBranchList)
})
},
// 添加行方法
AddPipelineListRow() {
this.pipelineFrom.pipelineList.push({
serviceName: '',
serviceBranch: '',
enable: true
})
},
// 删除行
pipelineDelete(index) {
this.pipelineFrom.pipelineList.splice(index, 1)
},
// 编辑pipeline添加按钮
EditPipelineListRow() {
this.editPipelineList.push({
serviceName: '',
serviceBranch: '',
enable: true
})
},
// 编辑删除pipeline按钮
editPipelineDelete(index) {
this.editPipelineList.splice(index, 1)
},
// 环境列表
getNamespaceList() {
getNamespaceList().then((resp) => {
this.namespaceList = resp.data.data
})
},
// 获取服务列表
getServiceList() {
getGitProjectList().then((resp) => {
this.serviceList = resp.data.data
})
}
},
created() {
this.getJiraProjectList()
this.getProjectRobotList()
// 获取服务列表
this.getServiceList()
this.getNamespaceList()
}
}
</script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment