2020-07-27 18:45:18 +08:00
|
|
|
|
import React , { useState , useEffect } from 'react';
|
2020-08-26 16:09:27 +08:00
|
|
|
|
import { Spin } from 'antd';
|
2020-07-10 15:42:57 +08:00
|
|
|
|
import { Blueback } from '../Component/layout';
|
|
|
|
|
|
import Editor from "react-monaco-editor";
|
|
|
|
|
|
import Modals from './DisposeModal';
|
2020-08-26 16:09:27 +08:00
|
|
|
|
import FileLanguage from '../Component/OpsFileLanguage';
|
2021-01-06 16:03:50 +08:00
|
|
|
|
import List from './Dispose/List';
|
2020-07-27 18:45:18 +08:00
|
|
|
|
import axios from 'axios';
|
2020-07-10 15:42:57 +08:00
|
|
|
|
|
2020-07-27 18:45:18 +08:00
|
|
|
|
function Dispose(props){
|
2020-08-26 16:09:27 +08:00
|
|
|
|
const [ spining , setSpining ] = useState(true);
|
|
|
|
|
|
const [ info , setInfo ] = useState('.trustie-pipeline.yml');
|
2020-07-27 18:45:18 +08:00
|
|
|
|
const [ visible , setVisible ] = useState(false);
|
|
|
|
|
|
const [ ymlValue , setYmlValue ] = useState("");
|
2020-08-26 17:11:42 +08:00
|
|
|
|
const [ sha , setSha ] = useState(undefined);
|
2020-07-27 18:45:18 +08:00
|
|
|
|
const [ fileLanguage , setFileLanguage ] = useState(undefined);
|
|
|
|
|
|
const [ first , setFirst ] = useState(false);
|
2020-07-10 15:42:57 +08:00
|
|
|
|
|
2021-01-06 16:03:50 +08:00
|
|
|
|
const [ list , setList ] = useState(undefined);
|
|
|
|
|
|
|
|
|
|
|
|
useEffect(()=>{
|
|
|
|
|
|
let l = [
|
|
|
|
|
|
{name:"流水线名字",fileName:"filename.jpg",time:"2021-01-06",status:"运行中"}
|
|
|
|
|
|
]
|
|
|
|
|
|
setList(l);
|
|
|
|
|
|
},[])
|
|
|
|
|
|
|
|
|
|
|
|
|
2020-07-27 18:45:18 +08:00
|
|
|
|
let projectsId = props.match.params.projectsId;
|
2020-08-18 17:59:45 +08:00
|
|
|
|
let owner = props.match.params.owner;
|
2020-07-27 18:45:18 +08:00
|
|
|
|
useEffect(()=>{
|
|
|
|
|
|
if(projectsId){
|
2020-08-26 16:09:27 +08:00
|
|
|
|
const url = `/${owner}/${projectsId}/get_trustie_pipeline.json`;
|
2020-07-27 18:45:18 +08:00
|
|
|
|
axios.get(url,{
|
|
|
|
|
|
params:{
|
|
|
|
|
|
project_id:projectsId
|
|
|
|
|
|
}
|
|
|
|
|
|
}).then(result=>{
|
|
|
|
|
|
if(result && result.data.content){
|
2020-08-26 16:09:27 +08:00
|
|
|
|
setInfo(result.data.name);
|
2020-07-27 18:45:18 +08:00
|
|
|
|
setYmlValue(result.data.content);
|
|
|
|
|
|
setFirst(true);
|
2020-08-26 17:11:42 +08:00
|
|
|
|
setSha(result.data.sha);
|
2020-07-27 18:45:18 +08:00
|
|
|
|
}else{
|
|
|
|
|
|
setFirst(false);
|
|
|
|
|
|
}
|
2020-08-26 16:09:27 +08:00
|
|
|
|
setSpining(false);
|
2020-07-27 18:45:18 +08:00
|
|
|
|
}).catch(error=>{
|
|
|
|
|
|
console.log(error);
|
|
|
|
|
|
})
|
2020-07-15 17:17:31 +08:00
|
|
|
|
}
|
2020-08-26 16:09:27 +08:00
|
|
|
|
},[projectsId])
|
2020-07-15 17:17:31 +08:00
|
|
|
|
|
2020-07-27 18:45:18 +08:00
|
|
|
|
// 修改文件内容
|
|
|
|
|
|
function changeEditor(value){
|
|
|
|
|
|
setYmlValue(value);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 切换语言
|
|
|
|
|
|
function select_language(value,array){
|
|
|
|
|
|
setFileLanguage(value);
|
|
|
|
|
|
setYmlValue( array && array.content);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 确定提交
|
|
|
|
|
|
function submit(){
|
|
|
|
|
|
let url = '';
|
2020-11-24 18:00:34 +08:00
|
|
|
|
const { defaultBranch } = props;
|
2020-07-27 18:45:18 +08:00
|
|
|
|
let params = {
|
2020-11-24 18:00:34 +08:00
|
|
|
|
branch: defaultBranch,
|
2020-07-27 18:45:18 +08:00
|
|
|
|
content:ymlValue,
|
2020-08-26 16:09:27 +08:00
|
|
|
|
filepath:info,
|
2020-07-27 18:45:18 +08:00
|
|
|
|
message:''
|
|
|
|
|
|
}
|
|
|
|
|
|
if(first){
|
|
|
|
|
|
// 为true,则是编辑否则是新建
|
2020-08-26 16:09:27 +08:00
|
|
|
|
url = `/${owner}/${projectsId}/update_trustie_pipeline.json`;
|
2020-07-27 18:45:18 +08:00
|
|
|
|
axios.put(url,{
|
|
|
|
|
|
...params,
|
2020-08-26 17:11:42 +08:00
|
|
|
|
sha
|
2020-07-27 18:45:18 +08:00
|
|
|
|
}).then(result=>{
|
|
|
|
|
|
if(result){
|
|
|
|
|
|
setVisible(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
}).catch(error=>{
|
|
|
|
|
|
console.log(error);
|
|
|
|
|
|
})
|
|
|
|
|
|
}else{
|
2020-08-18 17:59:45 +08:00
|
|
|
|
url = `/${owner}/${projectsId}/create_file.json`;
|
2020-07-27 18:45:18 +08:00
|
|
|
|
axios.post(url,params).then(result=>{
|
|
|
|
|
|
if(result){
|
|
|
|
|
|
setVisible(true);
|
2020-07-15 17:17:31 +08:00
|
|
|
|
}
|
2020-07-27 18:45:18 +08:00
|
|
|
|
}).catch(error=>{
|
|
|
|
|
|
console.log(error);
|
2020-07-15 17:17:31 +08:00
|
|
|
|
})
|
|
|
|
|
|
}
|
2020-07-27 18:45:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
function suresubmit(){
|
2020-08-26 17:11:42 +08:00
|
|
|
|
setVisible(false);
|
2020-08-26 16:09:27 +08:00
|
|
|
|
props.history.push(`/projects/${owner}/${projectsId}/devops/list`);
|
2020-07-27 18:45:18 +08:00
|
|
|
|
}
|
2021-01-06 16:03:50 +08:00
|
|
|
|
|
2020-07-27 18:45:18 +08:00
|
|
|
|
|
|
|
|
|
|
return(
|
2020-08-26 16:09:27 +08:00
|
|
|
|
<Spin spinning={spining}>
|
2020-07-27 18:45:18 +08:00
|
|
|
|
<Modals visible={visible} closeFunc={(flag)=>setVisible(flag)} sureFunc={suresubmit}></Modals>
|
|
|
|
|
|
<p>编程语言:</p>
|
2020-08-26 16:09:27 +08:00
|
|
|
|
|
2020-07-27 18:45:18 +08:00
|
|
|
|
<div className="mt20 mb20">
|
|
|
|
|
|
<FileLanguage language={fileLanguage} select_language={select_language}/>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<p>配置脚本:</p>
|
|
|
|
|
|
<div className="editorBody">
|
2020-09-10 09:47:09 +08:00
|
|
|
|
<p className="editorHead">{info}</p>
|
2020-07-27 18:45:18 +08:00
|
|
|
|
<Editor
|
|
|
|
|
|
height="300px"
|
2020-09-28 14:51:24 +08:00
|
|
|
|
language={"yml"}
|
2020-07-27 18:45:18 +08:00
|
|
|
|
theme={"vs-grey"}
|
|
|
|
|
|
defaultValue="请输入内容"
|
|
|
|
|
|
value={ymlValue}
|
|
|
|
|
|
options={"editor_options"}
|
|
|
|
|
|
onChange={changeEditor}
|
|
|
|
|
|
></Editor>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<Blueback onClick={submit}>确定提交</Blueback>
|
2021-01-06 16:03:50 +08:00
|
|
|
|
<List list={list}/>
|
2020-08-26 16:09:27 +08:00
|
|
|
|
</Spin>
|
2020-07-27 18:45:18 +08:00
|
|
|
|
)
|
|
|
|
|
|
}
|
|
|
|
|
|
export default Dispose;
|