One-click build/deploy
Problem to solve
Deploying a project is hard if you don't have ample CI/CD experience. From configuring your gitlab-ci.yml
to creating compute space to deploy to, this can be daunting for beginners.
Further details
We should have an easy way (or ways) to deploy a project on GitLab. There are at least two situations to consider:
- Open source (or team-private) project on GitLab
- Open source project on GitHub(/Bitbucket)
Which leads to considering options in both the GitLab interface, and a button that can be placed in a Readme, similar to Heroku Buttons.
Since we have Auto DevOps, we could imagine just forking the project as enough to trigger Auto DevOps to run, which would result in a deployment (https://gitlab.com/gitlab-org/gitlab-ce/issues/35674). But we could also consider making it more explicit, with a Deploy
button. That button could even work external to an existing CI/CD pipeline, maybe just focus on the deployment part and skip the CI part. I mean, it's an open source project you just want to deploy, do you really need to run tests and code quality on it first? You just want it deployed. So it's not the same scope as Auto DevOps.
To start, it might have to be a fairly laborious process as you'll have to bring your own cluster or set up a new GKE cluster. But we could have a goal of reducing the total number of steps over time, down to zero steps where everything is available .
WIP Proposal
Once we've identified the user's project is deploy-able (ie, dockerfile or supported buildpack) offer the option to get started (ie "click here to get started" kinda deal).
Example flow:
- GitLab identifies the presence of a dockerfile or matching buildpack
- If a cluster is configured, offer "deploy now" option
- must take care of necessary settings that are absent, such as domain, etc
- If cluster is NOT configured, offer to set one up via GKE credit
- if declines, end wizard
- When deploying, offer a youtube-style "you app will be available here: https://myapp.com momentarily"
We do not need to mention "Auto DevOps", "CI/CD", "pipelines", "gitlab-ci.yml
" as part of this wizard.