Bob CD
bob-cd.github.io
bob-cd.github.io
My problem is that I know what CI/CD is, I have used a handful of popular implementations of CI/CD (e.g GitHub Actions, BitBucket Pipelines). But after clicking through most of the pages on the Bob CD website, I don't understand what exactly Bob CD does or how to use it. Is it local (like Jenkins), or is it cloud based (like GitHub Actions)? How does it integrate with my local git repo, or my GitHub or GitLab account? How do I trigger the pipeline? How do I specify the actions of the pipeline?
It feels like Bob CD website makes sense only if you already know how to use Bob CD.
(edit: fix typo)
> Bob allows you to build your own custom CI / CD infrastructure thanks to it's composable architecture, allowing you to use Bob for various different purposes
The "Why" page goes further and explains what Bob is, so what is not described there, it doesn't ship with, like a UI, which would be up to you to decide which UI to use, or to write your own (or skip fully if you don't need it, maybe just use IRC/Matrix/Discord/Slack notifications?) https://bob-cd.github.io/pages/why-bob.html
> It feels like Bob CD website makes sense only if you already know how to use Bob CD.
Just as a disclosure; I have never heard about Bob CD since I read the linked website from this submission, so no previous experience. And I think I grok it pretty easily, although I've built and maintained more CI/CD integrations/platforms than I care to count at this point, so probably biased a bit.
"In software engineering, CI/CD or CICD is the combined practices of continuous integration (CI) and (more often) continuous delivery or (less often) continuous deployment (CD)." https://en.m.wikipedia.org/wiki/CI/CD
- CI can build your app and run tests on each commit or manually.
- CD can deploy your app (copy files to some host, pull newest docker image, do any additional steps necessary) on each commit or manually to dev/test/prod instances.
It enormously frees up your valuable brain cycles and you feel excited instead of "eh, there it goes again, how i'm not liking deployments..." whenever you want to deploy.
If you have `make build` && `make test` or similar script, that runs your tests, congrats, you have local almost-CI doing the hard work for you.
If you have `make deploy` or similar script that makes deployment easily, congrats, you have a local CD doing the hard work for you.
Except server software enables you to run builds/tests/deployments even when your computer is off or your colleague forgets to run make test.
"Simply" while getting it wrong? :D
What "Continuous Integration" is hides in the name of it, you continuously integrate the code into the "main branch/trunk", meaning if you have multiple contributors to a project, they frequently all merge the code into a common place where they base their next changes from.
"Continuous Deployment" is taking CI to the next step where you frequently deliver those integrated changes to your user. Deploying every commit to a testing instance wouldn't actually be CD as your users usually don't hang around on your testing instance. If you frequently push changes to production though, where users can use it, then you are "continuously deploying".
To make things even more confusing, CD can also refer to "Continuous Delivery" which is essentially the same as "Continuous Deployment" except you don't actually deploy to production, you just pretend to all the way up to actually updating the software on the production server. You do this in order to always be ready to deploy whenever, but when you don't feel safe enough to get there just yet.
Building and tests are not even needed for CI nor CD, although it helps tremendously and it would be foolish to attempt CI/CD without any sort of automated tests.
NASA probably doesn't need to be expanded, because even if you don't know that it's the National Aeronautics and Space Administration, you do know that they make the up-goers.
CD could mean a bunch of things, all context dependent. When it's paired with CI, it becomes easier to guess, but "Bob CD" doesn't tell me anything useful by itself.
By the way, how to you feel about "ycombinator.com" not really describing that it is just a startup accelerator and not about the lambda calculus combinator?
> Y Combinator created a new model for funding early stage startups.
That is a great example of a landing page that actually tells you what's going on.
You're sortof asking how could I not know what CI is. So I'll expand on that a bit.
- firstly, it doesn't matter if you think everyone knows it, the industry is deeper and wider than people think. So its polite and good practice to define acronyms. Granted part of the problem here is that this hit the front page of HN so the audience suddenly became a lot wider than the author perhaps expected.
- me, personally, in my 40 years I've encountered continuous integration but not enough to see the letters CI and immediately think of CI. And when you encounter a random link on HN it could be anything. Maybe there's some new AI buzzword I havent heard of, called (say) Customizable Intelligence and its like modular AI models and its the big new thing but I havent encountered it before, and people are calling it CI.
- ok so I could peruse the page and eventually figure out that they are talking about continuous integration rather than some other thing. Or I could google it. But why make me do detective work like that? To me not defining the acronyms makes it seem like the author is stuck in a little subculture and can't imagine anything outside of it. It kindof puts me off. You could think of it as the textual equivalent of a code smell. Its make me think they're just down a trendy jargon rabbithole and I've seen enough of those over the years. (I'm not saying they are in this case, just saying that to me the lack of definitions put me off)
But Ok as I said above this is perhaps something that the author never expected to reach such a wide audience so I'll shut up now. But in general I believe in defining acronyms. Because there's just too damn many of them.
So devops people would use Bob CD to build their in-house solution for it, and everyone would be using that, without actually using Bob CD directly.
Having an automated process to check out the most recent revision of the codebase and compiling it is just as easy as with other development.
Doing anything with that in an automated process is usually far more difficult. Suppose I'm developing a WiFi thermostat. The flashing process for that may require manual intervention, but let's leave that aside.
So the new code runs, now what? I need a webcam to look at the display, a robot to press the buttons or turn the wheel, and further fixtures to see if it is turning on the furnace appropriately.
Or we could simulate all the hardware in software... do I need to explain how much of a project that in itself is? Sure, it can be done, but it is the old question of time and cost.
What a strange and weirdly beautiful piece of misguided computing history.
We need to get more creative with our project names nowadays people. Things with too obvious references are usually not smart enough.
I would rather have the hero text describe what the product is/does instead of it being an inspirational quote.
> Be more extensible than great things like Concourse.ci
There's a "Bob vs the rest of the CI tools" section in the docs, but none of it really applies to Concourse.