deis / workflow-cli

The CLI for Deis Workflow
http://deis.com
MIT License
31 stars 43 forks source link

deis create in a non-git directory should run with --no-remote #298

Open bacongobbler opened 7 years ago

bacongobbler commented 7 years ago

As reported in https://github.com/deis/builder/issues/499, the Heroku client will run heroku create with --no-remote if the directory we are running in is not a git directory:

[~:dom] ⚡  heroku create
Creating app... done, ⬢ thawing-forest-56676
https://thawing-forest-56676.herokuapp.com/ | https://git.heroku.com/thawing-forest-56676.git
[~:dom] ⚡

Whereas with the deis CLI, this does not happen:

[~:dom] ⚡  deis create
Creating Application... done, created haptic-farmland
Error: Error when running 'git remote add deis ssh://git@deis-builder.cluster.fluid.ly:2222/haptic-farmland.git'
fatal: Not a git repository (or any of the parent directories): .git

I'm not sure if this was "fixed" in later Heroku versions, but this wasn't the case a few years ago. We should try to mimic Heroku's workflow here, seeing how we are an "open source Heroku".

Dakuan commented 7 years ago

Part of why I found this confusing wasn't just the difference with Heroku's behaviour, it was also conceptual. I'm creating a deis app on a remote box - It didn't seem obvious to me that my location in a local shell would affect that.

I though that deis create would have created a remote repo that I could then point to locally in a separate step if I so wished.

Example work flow

# create deis app for my service
$ deis create 
$ cd my-service
$ git remote add production PATH_TO_DEIS_REPO

Many thanks to all the team @deis, I've been delighted with it all!

bacongobbler commented 7 years ago

Ah I can understand that point of view. While there is a remote git repository stored at the builder, I wouldn't rely on it as a persistent git repo store for your application source code. Leave that for GitHub/BitBucket/your own git server etc.

If the builder is rebooted, the repositories are gone because we don't have them backed by persistent disk or anything. The database WAL logs, registry images, built Heroku tarballs, and build caches are, though. The git repos in the builder are created on-the-fly when you push the local contents of the repository to the builder via git push deis, so they aren't created on builder's end when you do a deis create, either.

Again, this is similar to Heroku... However they DO store it persistently, but nobody in reality uses Heroku as their backing store for their git repos because it requires deploying your app to Heroku on EVERY push, even if you want to push in-progress branches.

Does that help clarify some things?

Dakuan commented 7 years ago

Absolutely, though I never intended to use the git repo for a source control, just as a deployment pathway.

bacongobbler commented 7 years ago

I thought that deis create would have created a remote repo that I could then point to locally in a separate step if I so wished.

For what it's worth, this is do-able, but it requires flipping on a few extra option flags (again, tooting the "Heroku compatibility" horn again):

$ deis create myappname --no-remote
$ deis git:remote --app myappname

This missing functionality in the ticket is the one gap in the matrix we've probably missed in future Heroku updates.

Cryptophobia commented 6 years ago

This issue was moved to teamhephy/workflow-cli#9