Skip to content

Commit

Permalink
feat(be): create demo project
Browse files Browse the repository at this point in the history
  • Loading branch information
fiftin committed Sep 17, 2023
1 parent 1fc842c commit cb2bcd8
Show file tree
Hide file tree
Showing 7 changed files with 86 additions and 35 deletions.
79 changes: 64 additions & 15 deletions api/projects/projects.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,30 @@ func createDemoProject(projectID int, store db.Store) (err error) {
var prodInv db.Inventory

noneKey, err = store.CreateAccessKey(db.AccessKey{
Name: "None",
Name: "None",
Type: db.AccessKeyNone,
ProjectID: &projectID,
})

if err != nil {
return
}

noneKey, err = store.CreateAccessKey(db.AccessKey{
Name: "Vault Password",
Type: db.AccessKeyLoginPassword,
ProjectID: &projectID,
LoginPassword: db.LoginPassword{
Password: "RAX6yKN7sBn2qDagRPls",
},
})

if err != nil {
return
}

demoRepo, err = store.CreateRepository(db.Repository{
Name: "Demo Project",
Name: "Demo",
ProjectID: projectID,
GitURL: "https://github.com/semaphoreui/demo-project.git",
GitBranch: "main",
Expand All @@ -72,63 +87,97 @@ func createDemoProject(projectID int, store db.Store) (err error) {
buildInv, err = store.CreateInventory(db.Inventory{
Name: "Build",
ProjectID: projectID,
Inventory: "[builder]\nlocalhost",
Inventory: "[builder]\nlocalhost ansible_connection=local",
Type: "static",
SSHKeyID: &noneKey.ID,
})

if err != nil {
return
}

devInv, err = store.CreateInventory(db.Inventory{
Name: "Dev",
ProjectID: projectID,
Inventory: "/invs/dev/hosts",
Type: "file",
})

if err != nil {
return
}

prodInv, err = store.CreateInventory(db.Inventory{
Name: "Prod",
ProjectID: projectID,
Inventory: "/invs/prod/hosts",
Type: "file",
})

var desc string

if err != nil {
return
}

desc = "This task pings the website to provide real word example of using Semaphore."
_, err = store.CreateTemplate(db.Template{
Name: "Ping Site",
Playbook: "ping.yml",
Description: &desc,
ProjectID: projectID,
InventoryID: prodInv.ID,
EnvironmentID: &emptyEnv.ID,
RepositoryID: demoRepo.ID,
})

if err != nil {
return
}

desc = "Creates artifact and store it in the cache."

var startVersion = "1.0.0"
buildTpl, err := store.CreateTemplate(db.Template{
Name: "Build",
Playbook: "build.yml",
Type: db.TemplateBuild,
ProjectID: projectID,
InventoryID: buildInv.ID,
EnvironmentID: &emptyEnv.ID,
RepositoryID: demoRepo.ID,
StartVersion: &startVersion,
})

if err != nil {
return
}

_, err = store.CreateTemplate(db.Template{
Name: "Deploy to Dev",
Playbook: "deploy.yml",
ProjectID: projectID,
InventoryID: devInv.ID,
EnvironmentID: &emptyEnv.ID,
RepositoryID: demoRepo.ID,
Name: "Deploy to Dev",
Type: db.TemplateDeploy,
Playbook: "deploy.yml",
ProjectID: projectID,
InventoryID: devInv.ID,
EnvironmentID: &emptyEnv.ID,
RepositoryID: demoRepo.ID,
BuildTemplateID: &buildTpl.ID,
Autorun: true,
})

if err != nil {
return
}

_, err = store.CreateTemplate(db.Template{
Name: "Deploy to Production",
Playbook: "deploy.yml",
ProjectID: projectID,
InventoryID: prodInv.ID,
EnvironmentID: &emptyEnv.ID,
RepositoryID: demoRepo.ID,
Name: "Deploy to Production",
Type: db.TemplateDeploy,
Playbook: "deploy.yml",
ProjectID: projectID,
InventoryID: prodInv.ID,
EnvironmentID: &emptyEnv.ID,
RepositoryID: demoRepo.ID,
BuildTemplateID: &buildTpl.ID,
})

return
Expand Down
10 changes: 9 additions & 1 deletion db/sql/project.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,14 @@ func (d *SqlDb) GetProject(projectID int) (project db.Project, err error) {
}

func (d *SqlDb) DeleteProject(projectID int) error {

//tpls, err := d.GetTemplates(projectID, db.TemplateFilter{}, db.RetrieveQueryParams{})
//
//if err != nil {
// return err
//}
// TODO: sort projects

tx, err := d.sql.Begin()

if err != nil {
Expand All @@ -90,7 +98,7 @@ func (d *SqlDb) DeleteProject(projectID int) error {
_, err = tx.Exec(d.PrepareQuery(statement), projectID)

if err != nil {
err = tx.Rollback()
_ = tx.Rollback()
return err
}
}
Expand Down
3 changes: 2 additions & 1 deletion web/src/components/ItemFormBase.js
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ export default {
* Saves or creates item via API.
* @returns {Promise<null>} null if validation didn't pass or user data if user saved.
*/
async save() {
async save(data = {}) {
this.formError = null;

if (!this.$refs.form.validate()) {
Expand All @@ -155,6 +155,7 @@ export default {
data: {
...this.item,
project_id: this.projectId,
...data,
},
...(this.getRequestOptions()),
})).data;
Expand Down
6 changes: 0 additions & 6 deletions web/src/components/ProjectForm.vue
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,6 @@
import ItemFormBase from '@/components/ItemFormBase';
export default {
props: {
demoProject: Boolean,
},
mixins: [ItemFormBase],
methods: {
getItemsUrl() {
Expand All @@ -59,9 +56,6 @@ export default {
getSingleItemUrl() {
return `/api/project/${this.itemId}`;
},
beforeSave() {
this.item.demo = this.demoProject;
},
},
};
</script>
12 changes: 6 additions & 6 deletions web/src/lang/ru.js
Original file line number Diff line number Diff line change
Expand Up @@ -200,9 +200,9 @@ export default {
gitUrl: 'Git URL',
sshKey: 'SSH ключ',
lastTask: 'Последняя задача',
task2: 'Задача',
build: 'Сборка',
deploy: 'Развертывать',
// task2: 'Задача',
// build: 'Сборка',
// deploy: 'Развертывать',
run: 'Запуск',
add: 'Добавить',
password_required: 'Требуется пароль',
Expand All @@ -227,9 +227,9 @@ export default {
environment_required: 'Требуется окружение',
email_required: 'Требуется почта',
build_template_required: 'Требуется шаблон сборки',
Task: 'Задача',
Build: 'Сборка',
Deploy: 'Развертывать',
// Task: 'Задача',
// Build: 'Сборка',
// Deploy: 'Развертывать',
Run: 'Запуск',

};
9 changes: 4 additions & 5 deletions web/src/views/project/New.vue
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<div class="project-settings-form">
<div style="height: 300px;">
<ProjectForm item-id="new" ref="editForm" @save="onSave" :demo-project="demoProject" />
<ProjectForm item-id="new" ref="editForm" @save="onSave" />
</div>

<div class="text-right">
Expand All @@ -33,7 +33,6 @@ export default {
components: { ProjectForm },
data() {
return {
demoProject: false,
};
},
Expand All @@ -50,13 +49,13 @@ export default {
},
async createProject() {
this.demoProject = false;
await this.$refs.editForm.save();
},
async createDemoProject() {
this.demoProject = true;
await this.$refs.editForm.save();
await this.$refs.editForm.save({
demo: true,
});
},
},
};
Expand Down
2 changes: 1 addition & 1 deletion web/src/views/project/TemplateView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@

<YesNoDialog
:title="$t('deleteTemplate')"
text="$t('askDeleteTemp')"
:text="$t('askDeleteTemp')"
v-model="deleteDialog"
@yes="remove()"
/>
Expand Down

0 comments on commit cb2bcd8

Please sign in to comment.