ui/lib/pipeline/addon/new-pipeline/route.js

73 lines
2.3 KiB
JavaScript

import { inject as service } from '@ember/service';
import Route from '@ember/routing/route';
import { hash } from 'rsvp';
let precanStages = ()=> [{
name: 'clone',
steps: []
},{
name: 'build',
steps: []
},{
name: 'publish',
steps: [{
type:"build",
"publishImageConfig": {
"dockerfilePath": "./Dockerfile",
"buildContext": ".",
"tag": "pipeline/build:${CICD_PIPELINE_ID}"
}
}]
}];
export default Route.extend({
globalStore: service(),
projectStore: service('store'),
precanStages: precanStages(),
model: function() {
var globalStore = this.get('globalStore');
var projectStore = this.get('projectStore');
let projectModel = window.l('route:application').modelFor('authenticated.project');
let projectId = projectModel.project.id;
let clusterId = projectModel.project.clusterId;
let accounts = globalStore.findAll('sourceCodeCredential');
let clusterPipeline = globalStore.find('clusterPipeline', `${clusterId}:${clusterId}`, {forceReload: true});
let projectDockerCredentials = projectStore.all('dockerCredential');
return clusterPipeline.then((pipeline)=>{
clusterPipeline = pipeline;
return clusterPipeline.followLink('envvars')
}).then((envvars)=>{
return hash({accounts, clusterPipeline, projectDockerCredentials,envvars})
})
.then(({accounts, clusterPipeline, projectDockerCredentials, envvars})=>{
let pipeline = globalStore.createRecord({type:'pipeline', projectId , stages: this.get('precanStages')});
if(!accounts.content.length){
return {
pipeline,
accounts,
clusterPipeline,
projectDockerCredentials,
envvars,
repositories: [],
language: 'Custom'
};
}else{
return accounts.content[0].followLink('sourceCodeRepositories').then(res=>{
return {
pipeline,
accounts,
clusterPipeline,
projectDockerCredentials,
envvars,
repositories: res,
language: 'Custom'
}
})
}
})
},
resetController(controller){
controller.set('errors', '');
controller.set('saved', false);
this.set('precanStages',precanStages())
},
});