Of course there are tools like Jenkins, but it sure looks complicated, great for large teams, probably over the top for solo-devs and small teams.
Are there other self-hosted tools that you are aware of that enable multiple devs to push code to a deployment hosted on a linux cloud server?
Nothing overly complicated, think rsync, perhaps with a dashboard.
Nanobox for backend
Netlify for frontend
Nanobox looks pretty amazing - great suggestion. It makes containerisation look easy. I like that you can still log straight into the containers. No pricing on their website. Have you any idea how much it costs?
Netlify looks interesting too actually, good that they have a free plan.
I'm wary investing time, energy and money into some of these platforms, that suddenly disappear and you're left with nothing (happened to me before).
Both of them are free. Netlify also have a paid plan that is beneficial if you are a team rather than solo developer.
I understand your concern of "investing time". I'm myself a crafter and I spent about a week doing my own (c) Terrafrom and Ansible deployment including rollbacks, SSL. I gave up because every time I've succeeded with something, I had to implement something else. First it was rollbacks, then SSL, then I asked my self "how I can feed logs from the server?" and etc.
Eventually I looked for PaaS that I can pay for that will do this for me. Both netlify and nanobox does this. They give you hooks to autodeploy on git push, one click SSL setup with LetsEncrypt, log feed from the container (in case of nanobox). All you need to do, is code features for your clients, let them handle infrastructure.
At the end, if netlify disappears one day, you can try surge.sh, if they get blown, just pay 5$ for digital ocean, do one time manual setup of nginx and sftp your react/vue/whatever.js website to the DO droplet.
Same goes for nanobox. Actually, nanobox are not even your hosting provider, you will have to chose where you'd want to deploy your code (aws, gcp, do etc), they just provide all the "container" thing, and if they disappear one day, well you will have to work yourself to setup kubernetes or whatever container orchestration you want. By that time you will hopefully have paying customers and enough money to pay DevOps to do for your a one time deployment script.
And FYI, according to twitter, netlify account exists since June 2014 and nanobox since August 2015.
Its always a risk. Should you invest in using someone else's infrastructure or DYI? I prefer to focus on delivering features to my clients than messing with infrastructure, but its okay to have a backup plan if your infrastructure providers go out of business.
Good luck!
I tried signing up for an account with nanobox.
The main download page link is broken (just leads back to the homepage), the pricing page has no prices (just a phone number to schedule a demo/discussion), from the forum/docs I found a link to another signup page, when I created an account the first thing that happens is they say you have to download either for bundled virtualbox version or docker native version, if you already have virtual box installed (pretty common I'd say - and my case) you have to install the docker native version, which has a notice for degraded performance if you are on a mac. Way too many red flags for my liking.
Product sure looks nice, but really feels like that way be dragons.
Everything works for me. Try to contact their support if you care enough. If not you can try tools like Heroku and Dokku.
I spent some time reading through Dokku. I really like the approach it takes. My concern with Dokku is that it is docker based. I don't have anything against docker, I mean it's probably the future of web development and all that, but it adds a pretty big layer of stuff onto my stack, lots of unknown bits and pieces, and I'm not that familiar with containers yet.
Feels like containers for me would be later down the line. And then on top of that there is Dokku. I don't have enough detail/visibility yet to decide wether just docker on it's is own is better/worse than doing everything through Dokku. Something like Dokku but for boring old files & folders would be neat.
On a side note, something I got from the Dokku docs - Sigil useful templating command line tool that I can see myself using in bash scripts.
Already done, waiting for their reply, but the initial experience has me on the back foot. I already use heroku for some things, but I am looking for tools for code deployments to VPC servers. Haven't heard of Dokku, looks relevant at first glance.
... As as Service (Unlimited) - only $195/mo
Sorry, I've seen a lot of productized services lately and couldn't help it.
I think what he's saying is something along the lines of "It will probably end up costing $195/mo" but said in the style that a product advertisement often appears in.
basically.
Not sure I understand you.
www.structure.sh
Depending on your architectural constraints, and the source code management strategy you might be able to do this natively. Git has web hooks, for example.
I use git hooks already for a few things, so your comment got me thinking about how I could use them for deploying the code post commit. Thanks
Visual Studio Team Services (VSTS).
https://visualstudio.microsoft.com/team-services/
It's free for the first 5 users. Includes source control, defect tracking and CI/CD pipeline. I use it to track all our work on a Kanban board, tied to a private Git repo that automatically builds and deploys when code is checked into master after a pull request merge.
We have build and release plans that cover all gambits:
This is all automated (except for the human needing to click "APPROVE" in an email to move it from pre-prod to prod when all tests pass). We do this several times a day this way, which is glorious, consistent, and scalable.
YMMV. But enterprise class tools for free is hard to beat.
Thanks for the comment. That does sound like a streamlined setup. Just want to point out again that I'm not looking for enterprise class tools. The step above bash script + cron is good enough for me. I might take a look when I have a bit more time though because some enterprise products do have a non bloated path through them.
Somewhat related - I installed visual studio code last week and found that it looked really snazzy, but when I actually tried to do things, it was lacking. Some things were just down to being familiar with a different UI, but other things were because (1) maze like docs (2) configuration based on config files where it's a lot of guess work to determine what to actually put in the config files. I never managed to get the debugger setup. I stopped when it was needing me to modify my package.json npm scripts to actually get it running which would have broken my current IDE setup.
So start small and simple. You can easily setup to do your build, and copy to your target on the schedule you want. Then expand as you need so.
Don't discard a great solution simply because its what more mature teams are using. Especially when its FREE to you to use.
YMMV. But Microsoft has made it really easy to do this. Trying to handroll this stuff is insane when tools like VSTS exist.
Only seeing your reply now, it got hidden in my gmail. Yeah I've had several pretty bad experiences with bigger platforms/providers where I was essentially being used to debug their issues for them. Time wastage isn't my idea of free. I like the looks of some of these products but the advantage of hand rolling is that you know where the bugs are. Thanks for the recommendation, it's definitely something I'm exploring for the future.
Define 'overly complicated' :-)
It really depends on your project. Pushing a simple static website is easy. Stuff like Wordpress, it depends on the kind of changes that were made. Once there are build steps involved, there might be no way around 'overly complicated'.
Jenkins is already pretty simple. Other options are Ansible (with potientally Ansible AWX), Travis or GitLab CI. Gets more complicated than Jenkins pretty quickly though, and we start talking about full-blown configuration and infrastructure management.
But, really, without knowing the kind of project you are talking about it's difficult to give advice. I don't think the size of the team actually matters that much in that regard.
Thanks for the reply.
I'm talking about projects with a handful of developers at most, probably some build steps involved, but could be simple static sites too.
[edit: build steps would be implemented as part of the project code]
Looking at the example Continuous Delivery with Pipeline linked to from the Jenkins site. Yahoo and Netflix are using hundreds of agents, 10s of thousands of jobs, hundreds of users, everything load balanced. Come on that's not simple!
I'm talking about the level above just writing some bash scripts and running them with cron for a bunch of dudes that are chatting on IM/Slack.
Should be able to just add it to an existing cloud linux server, maybe a bit of customization, a queue to make sure that the deployments don't conflict, and maybe a dashboard.
This comment was deleted 8 years ago
It's useful info, thanks for sharing.
Very similar situation for me, so I'm pretty familiar with all the pitfalls you highlight.
I like my setup but the more I add to it at some stage it's going to make more sense to use off the shelf pieces, but most of the self hosted pieces are for massive enterprise deployments, or they are hosted and they very quickly end up costing hundreds of dollars per month.
I like the self hosted aspect of Jenkins but it's more complex than I need right now. The only piece I'm looking to replace is the deploy part i.e. getting the code onto the servers.
Yeah, I'd say give Gitlab CI a go.
I gave Gitlab CI a good read through. It is impressive, and open source and self hosted. CI pipeline, issues boards, milestones, labels, todos service desk, discussions, and then after the 20 or 30 page of documentation it's like...hold up...I just want to rsync some files, this doesn't have to be this complicated - cloud storage, cron job, ssh, bash script, rsync, email notification. That's what I'll prob end up doing in the end.
This comment was deleted 8 years ago