Commit a9376e19 authored by 晓彤's avatar 晓彤

添加pipelinepipeline

parent 5822efde
...@@ -7,9 +7,9 @@ module.exports = merge(prodEnv, { ...@@ -7,9 +7,9 @@ module.exports = merge(prodEnv, {
ENV_CONFIG: '"dev"', ENV_CONFIG: '"dev"',
// QA_PLATFORM: '"//localhost:8082"', // QA_PLATFORM: '"//localhost:8082"',
TESTDATA_API: '"//testdata.liangkebang.com"', TESTDATA_API: '"//testdata.liangkebang.com"',
HOLMES: '"//localhost:8084"', // HOLMES: '"//localhost:8084"',
QA_PLATFORM: '"//qa-platform-fe.liangkebang.net/"', QA_PLATFORM: '"//qa-platform-fe.liangkebang.net/"',
// HOLMES: '"//holmes-fe.liangkebang.net/"', HOLMES: '"//holmes-fe.liangkebang.net/"',
QA_API: "//qaapi.liangkebang.com/" QA_API: "//qaapi.liangkebang.com/",
}) })
...@@ -54,3 +54,43 @@ export function sendSmokingResult(data) { ...@@ -54,3 +54,43 @@ export function sendSmokingResult(data) {
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 @@ ...@@ -9,11 +9,19 @@
<el-table :data="dingRobotList" border style="width: 100%"> <el-table :data="dingRobotList" border style="width: 100%">
<!-- <el-table-column prop="id" label="编号" width="80px"></el-table-column> --> <!-- <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 type="index" label="序号" width="50px"></el-table-column>
<el-table-column prop="projectName" label="项目名" width="220px"></el-table-column> <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 prop="dingUrl" label="钉钉url"></el-table-column> -->
<el-table-column prop="creator" label="创建人" width="80px"> <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>
<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"> <el-table-column label="操作" width="400px">
<slot slot-scope="scope"> <slot slot-scope="scope">
<el-button type="primary" size="small" @click="openEditDialog(scope.row)">编辑</el-button> <el-button type="primary" size="small" @click="openEditDialog(scope.row)">编辑</el-button>
...@@ -31,21 +39,79 @@ ...@@ -31,21 +39,79 @@
<!-- 新增对话框 --> <!-- 新增对话框 -->
<el-dialog title="新增robot" :visible.sync="addDialogVisible" width="60%" @close="closeAddDialog"> <el-dialog title="新增robot" :visible.sync="addDialogVisible" width="60%" @close="closeAddDialog">
<el-form ref="addRobotFormRef" :rules="formRules" :model="robotForm" label-width="150px"> <el-form ref="addRobotFormRef" :rules="formRules" :model="pipelineFrom" label-width="150px">
<el-form-item label="jira项目" prop="jiraProjectKey"> <el-form-item label="jira项目" prop="pipelineFrom.dingRobot.jiraProjectKey">
<el-select v-model="robotForm.jiraProjectKey" placeholder="请选择Jira项目"> <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 v-for="item in jiraProjectList" :key="item.key" :label="item.name" :value="item.key">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="项目名称" prop="projectName"> <el-form-item label="项目名称" prop="pipelineFrom.dingRobot.projectName">
<el-input v-model="robotForm.projectName" placeholder="请输入项目名称"></el-input> <el-input v-model="pipelineFrom.dingRobot.projectName" placeholder="请输入项目名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="钉钉通知地址" prop="dingUrl"> <el-form-item label="钉钉通知地址" prop="pipelineFrom.dingRobot.dingUrl">
<el-input v-model="robotForm.dingUrl" placeholder="请输入钉钉通知地址" type="textarea"></el-input> <el-input v-model="pipelineFrom.dingRobot.dingUrl" placeholder="请输入钉钉通知地址" type="textarea"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="创建人" prop="creator"> <el-form-item label="创建人" prop="pipelineFrom.dingRobot.creator">
<el-input v-model="robotForm.creator"></el-input> <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-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
...@@ -72,6 +138,66 @@ ...@@ -72,6 +138,66 @@
<el-form-item label="创建人" prop="creator"> <el-form-item label="创建人" prop="creator">
<el-input v-model="editRobotForm.creator"></el-input> <el-input v-model="editRobotForm.creator"></el-input>
</el-form-item> </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> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="editDialogVisible = false">取 消</el-button> <el-button @click="editDialogVisible = false">取 消</el-button>
...@@ -122,13 +248,17 @@ ...@@ -122,13 +248,17 @@
<script> <script>
import { import {
getJiraProjectList, getJiraProjectList,
getProjectRobotList, getPipelineList,
addProjectRobot, addProjectRobot,
modifyProjectRobot, modifyProjectRobot,
delProjectRobot, delProjectRobot,
sendScheduleReport, sendScheduleReport,
sendSmokingResult sendSmokingResult,
getGitProjectList,
getGitBranchList
} from '@/api/jira' } from '@/api/jira'
import { getNamespaceList } from '@/api/getXyqbData'
// import { getGitlabProject } from '@/api/qaApi'
export default { export default {
data() { data() {
return { return {
...@@ -143,12 +273,25 @@ export default { ...@@ -143,12 +273,25 @@ export default {
editDialogVisible: false, editDialogVisible: false,
sendScheduleDialogVisible: false, sendScheduleDialogVisible: false,
smokingDialogVisible: false, smokingDialogVisible: false,
robotForm: { pipelineFrom: {
projectName: '', dingRobot: {
dingUrl: '', projectName: '',
creator: '', dingUrl: '',
jiraProjectKey: '' creator: '',
jiraProjectKey: '',
namespace: ''
},
pipelineList: [
{
serviceName: '',
serviceBranch: '',
serviceType: '',
namespace: '',
enable: 1
}
]
}, },
editRobotForm: {}, editRobotForm: {},
sendProjectRobot: {}, sendProjectRobot: {},
// 发送进度报告参数 // 发送进度报告参数
...@@ -171,15 +314,30 @@ export default { ...@@ -171,15 +314,30 @@ export default {
], ],
formRules: { formRules: {
projectName: [ projectName: [
{ required: true, message: '请输入项目名称', trigger: 'blur' } {
required: true,
message: '请输入项目名称',
trigger: 'blur'
}
], ],
dingUrl: [ dingUrl: [
{ required: true, message: '请输入钉钉机器人url', trigger: 'blur' } {
required: true,
message: '请输入钉钉机器人url',
trigger: 'blur'
}
], ],
jiraProjectKey: [ 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: { sendFormRules: {
progress: [ progress: [
...@@ -199,13 +357,45 @@ export default { ...@@ -199,13 +357,45 @@ export default {
trigger: 'blur' 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: { methods: {
// 获取ding_robot列表 // 获取ding_robot列表
getProjectRobotList() { getProjectRobotList() {
getProjectRobotList(this.queryInfo).then((resp) => { getPipelineList(this.queryInfo).then((resp) => {
this.dingRobotList = resp.data.data.list this.dingRobotList = resp.data.data.list
this.totalNum = resp.data.data.total this.totalNum = resp.data.data.total
}) })
...@@ -222,7 +412,15 @@ export default { ...@@ -222,7 +412,15 @@ export default {
if (!valid) { if (!valid) {
return false return false
} else { } 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) { if (resp.data.data === true) {
this.addDialogVisible = false this.addDialogVisible = false
this.getProjectRobotList() this.getProjectRobotList()
...@@ -280,7 +478,8 @@ export default { ...@@ -280,7 +478,8 @@ export default {
}, },
// 发送进度报告 // 发送进度报告
sendSchedule() { sendSchedule() {
this.sendScheduleData.jiraProjectKey = this.sendProjectRobot.jiraProjectKey this.sendScheduleData.jiraProjectKey =
this.sendProjectRobot.jiraProjectKey
this.sendScheduleData.testProjectName = this.sendProjectRobot.projectName this.sendScheduleData.testProjectName = this.sendProjectRobot.projectName
this.sendScheduleData.progress = this.sendScheduleForm.progress + '%' this.sendScheduleData.progress = this.sendScheduleForm.progress + '%'
this.sendScheduleData.risk = this.sendScheduleForm.risk this.sendScheduleData.risk = this.sendScheduleForm.risk
...@@ -356,11 +555,72 @@ export default { ...@@ -356,11 +555,72 @@ export default {
}, },
closeSmokingDialog() { closeSmokingDialog() {
this.$refs.smokingFormRef.resetFields() 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() { created() {
this.getJiraProjectList() this.getJiraProjectList()
this.getProjectRobotList() this.getProjectRobotList()
// 获取服务列表
this.getServiceList()
this.getNamespaceList()
} }
} }
</script> </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