Super excited to have you onboard! 🙌 This guide breaks down our super-duper automated system for getting code from idea 💡 to our users. We call it the "Eudle Flow" (pretty cool, right?). It helps us ship updates faster than you can say 'Eudle Flow five times fast' 💨 and keeps things running smoothly. Let's dive in!
It all begins with a spark of genius (or maybe just fixing a typo 😉). A developer writes some awesome new code for features or squashes some pesky bugs 🐛 using their favorite coding tools.
The dev saves ("pushes") their masterpiece to our central code library, Gitness. Think of it like a super-organized digital filing cabinet 🗄️ that tracks every single change. Messed up? No problem, we can always time-travel back! ⏳
Gitness sends a secret signal (okay, it's a webhook 🕸️) to Jenkins, our trusty automation butler 🤖. Jenkins perks up, grabs the new code, and gets ready to work its magic.
Jenkins follows its recipe (the Jenkinsfile). It builds the software (think LEGO assembly 🧱) and runs a bajillion automated checks – tests for bugs, quality checks, security scans. If anything looks fishy 🐠, it stops right here! This whole "build and check" dance is called Continuous Integration (CI).
If all checks pass (Green lights everywhere! ✅✅✅), Jenkins neatly packages the software into a magic container called a Docker image. This box contains everything needed to run the app, ensuring it behaves the same way everywhere. We store this box in our secure **Container Registry**.
Jenkins taps Harness CD on the shoulder and says, "Hey, got a shiny new software box ready!" 🎁 This kicks off the Continuous Delivery (CD) phase – getting the software out there.
Harness automatically beams the new software box to our internal test stage: the Proxmox Home Lab. This is our safe playground (Pre-Production) to make sure things really work before real users see it. No pressure! 😅
More automatic tests run in Pre-Prod. If they pass, Harness sends a message to a specific Telegram chat asking: "Ready to go live?" 🤔. Key team members can approve (or deny!) the final deployment right from their phones! 📲 How cool is that?!
Once approved via Telegram (🥳), Harness carefully deploys the exact same software box to our live Production environment – the **VPS** servers that real users are using right now! No sneaky last-minute changes!
Harness (and other tools) watch the live app like a hawk 🦅. Checking for errors, slowdowns, weirdness. If things go sideways 📉, Harness can automatically hit the UNDO button (Rollback) and switch back to the last good version, often before users even notice! Phew! 😮💨
If everything went smoothly, PARTY! 🎉 Well, okay, maybe just a success message on Telegram. If anything failed during this whole Eudle Flow (build, test, deploy...), Harness immediately sends a failure alert to Telegram with the juicy details, so the team can jump on it ASAP. 🦸♀️🦸♂️
And that's the current Eudle Flow! It's how we keep things moving safely and quickly. Welcome aboard again, don't hesitate to ask if anything's unclear! We're happy to help. 🤗
We're always looking to improve! Down the road, we might simplify things even more by using OneDev, an awesome all-in-one tool, for almost everything. Here's what that could look like:
Same start: Dev writes code 💻. But this time, they push it directly to OneDev, which acts as our code library (like Gitness does now). Fewer tools, yay!
Saving code in OneDev automatically triggers its built-in CI/CD engine. It builds the code 🧱, runs all the tests 🐠✅, and packages the Docker image 📦, storing it (maybe in its own registry or our existing one). Bye-bye Jenkins! 👋
If the CI part passes, OneDev's CD features take over. It deploys the new Docker image to our Proxmox Home Lab (Pre-Production) for that final check. Harness CD might take a vacation! 🌴
OneDev runs checks in Pre-Prod. If things look good, it would (ideally, with some setup) pause and ping the team on Telegram for the go-ahead 👍. (We'd need to confirm how smooth this Telegram step is in OneDev).
Approved! OneDev then pushes the button to deploy the software to the live **VPS** servers (Production). One tool to rule them all? Maybe! 💍
OneDev would (again, ideally!) monitor the production deployment. If it spots trouble 📉, it could trigger a rollback 😮💨 and definitely needs to send success 🎉 or failure 🚨 alerts to Telegram!
This simpler flow using just OneDev is a possible future goal! It would mean learning and setting up OneDev to handle everything smoothly. Exciting stuff! ✨