Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Staged Deployments #1653

Merged
merged 21 commits into from
Feb 14, 2023
Merged

Staged Deployments #1653

merged 21 commits into from
Feb 14, 2023

Conversation

joepavitt
Copy link
Contributor

@joepavitt joepavitt commented Feb 3, 2023

Description

Screen.Recording.2023-02-03.at.12.47.04.mov

This introduces a new section into the Project Settings labelled "DevOps". Similar to how the "Copy/Export" functionality works, a user can select a "Target" project, and push the latest version across. This is slightly less friction than the copy/export functionality as it defaults all of the options about which content to export from a Project (See linked issue for details on which features are exported).

Related Issue(s)

Closes #1580

Checklist

  • I have read the contribution guidelines
  • Suitable unit/system level tests have been added and they pass
  • Documentation has been updated
    • [-] Upgrade instructions
    • Configuration details
    • Concepts
  • [-] Changes flowforge.yml?
    • [-] Issue/PR raised on flowforge/helm to update ConfigMap Template
    • [-] Issue/PR raised on flowforge/CloudProject to update values for Staging/Production

Labels

  • [-] Backport needed? -> add the backport label
  • [-] Includes a DB migration? -> add the area:migration label

frontend/src/data/audit-events.json Show resolved Hide resolved
frontend/src/data/audit-events.json Show resolved Hide resolved
frontend/src/pages/project/Overview.vue Show resolved Hide resolved
frontend/src/pages/project/Settings/Danger.vue Outdated Show resolved Hide resolved
frontend/src/pages/project/Settings/Danger.vue Outdated Show resolved Hide resolved
frontend/src/pages/project/Settings/Stages.vue Outdated Show resolved Hide resolved
frontend/src/pages/project/Settings/Stages.vue Outdated Show resolved Hide resolved
frontend/src/pages/project/Settings/index.vue Outdated Show resolved Hide resolved
frontend/src/pages/project/index.vue Outdated Show resolved Hide resolved
frontend/src/pages/project/index.vue Outdated Show resolved Hide resolved
docs/user/README.md Outdated Show resolved Hide resolved
@knolleary
Copy link
Member

It is quite hard to hold a discussion about the basic naming of these concept when it is split across so many individual comments. We need all of the terms to hang together as a whole.

There is a fundament design choice to be made around the terminology we choose to use.

We have been calling this work 'staged deployments' for a long time now. The concept being you have a pipeline of stages to get from your development stage to the production stage. That is not unusual terminology and has been what we've been discussed in the design work through out. It is consistent with various existing platforms.

We currently say you 'push' things between 'stages'. For the audit logging, we needed a verb for what happens to the target project. We went with import as we couldn't think of a suitable alternative that covered the cases it gets used for.

If we want different terminology, then rather than change the odd word, we need to make sure it all works together.

  • Do we call the steps of a pipeline 'stages' or 'environments' or something else
  • What do we call the action of moving stuff from one to the other? 'push' 'promote'
  • What do we call the action of a target project being updated?

@joepavitt
Copy link
Contributor Author

Do we call the steps of a pipeline 'stages' or 'environments' or something else

Azure, AWS and IBM Cloud all use the term "Stages"

@joepavitt
Copy link
Contributor Author

What do we call the action of moving stuff from one to the other? 'push' 'promote'

Currently, we have "Push", no objections to "Promote"

@knolleary knolleary linked an issue Feb 3, 2023 that may be closed by this pull request
3 tasks
@ZJvandeWeg
Copy link
Member

@joepavitt To practise Disagree and commit, let's move forward with Stages instead of environments.

<FormHeading>Pipeline Stages</FormHeading>
<FormRow>
<template #description>
<p class="mb-3">Here, you can configure a "Stage". This will enable you to deploy the updates to this project, directly onto the next "Stage" in your development Pipeline.</p>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<p class="mb-3">Here, you can configure a "Stage". This will enable you to deploy the updates to this project, directly onto the next "Stage" in your development Pipeline.</p>
<p class="mb-3">Here, you can configure an "Environment". This will enable you to deploy the updates to another project, directly onto the next stage in your development pipeline.</p>

const options = {
sourceProject: parts.sourceProject
}
projectApi.updateProject(parts.target, options)
.then(() => {
alerts.emit(`Project export to '${parts.target}' has successfully started`, 'confirmation')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Help me a sec, what's the difference between export and copy to project?

frontend/src/pages/project/Settings/Stages.vue Outdated Show resolved Hide resolved
frontend/src/data/audit-events.json Show resolved Hide resolved
@joepavitt
Copy link
Contributor Author

Help me a sec, what's the difference between export and copy to project?

Agreed that's not clear in the UI either. "Copy Project" I think should be renamed to "Duplicate Project". As it creates a new project in the process.

"Export to Existing Project" - that allows the user to define a subset of properties/content from your project and export that to another - essentially what we are using in Staged Deployments

@knolleary
Copy link
Member

Agreed that's not clear in the UI either. "Copy Project" I think should be renamed to "Duplicate Project". As it creates a new project in the process.

Agreed.

@joepavitt
Copy link
Contributor Author

joepavitt commented Feb 10, 2023

@ZJvandeWeg just an fyi - I have steered away from the "Stages" terminology, and gone with a more general "DevOps" approach, having come back to it, the "Stages" option in the settings wasn't clear enough, hopefully this makes it better.

Have also made all of the changes requested re: labelling of buttons & feedback alerts

Screenshot 2023-02-10 at 09 46 15

@joepavitt joepavitt requested a review from Pezmc February 13, 2023 09:24
In FlowForge it is possible to configure a DevOps pipeline for your Projects,
these are done by configuring "Stages" in the Settings of a given Project.

1. Navigate to your Project and click on the "Settings" option.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should add a screenshot would be nice, if you can?

frontend/src/index.css Show resolved Hide resolved
Pezmc and others added 3 commits February 14, 2023 15:12
@Pezmc Pezmc merged commit cab74a7 into main Feb 14, 2023
@Pezmc Pezmc deleted the 1580-pseudo-stages branch February 14, 2023 15:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Pseudo-Staged Deployments
4 participants