![](https://i.nostr.build/k1vuNUKWqrxLaprb.jpg)
@ Silberengel
2025-02-02 10:33:19
# GitCitadel Development Operations
We, at GitCitadel, have been updating, moving, and rearranging our servers, for quite some time. As a rather large, complex, sprawling project, we have the infrastructure setup to match, so we've decided to give you all a quick run-down of what we are doing behind-the-scenes.
## Supplier Coordination
![DevOps Infrastructure](https://i.nostr.build/n58FKgGxCXLQKcKW.png)
Our first task, this week, was figuring out who would host what where. We have four different locations, where our infra is stored and managed, including two locations from our suppliers. We got that straightened out, quickly, and it's all slowly coming together and being connected and networked. Exciting to watch our DevOps landscape evolve and all of the knowledge-transfer that the interactions provide.
## OneDev Implementation
![One Dev projects](https://i.nostr.build/QoONlqWkCfiQZT60.png)
Our biggest internal infra project this week was the migration of all of our issues from Jira, build scripts from Jenkins, and repos from GitHub to a [self-hosted OneDev instance](https://onedev.gitcitadel.eu). In the future, all of our internal build, test, issue, patch/PR, etc. effort will take place there. We also have a separate repo there for communicating with external developers and suppliers.
Our [team's GitHub projects](https://github.com/ShadowySupercode) will be demoted to mirrors and a place for external devs to PR to. Public issues and patches will continue to be managed over our self-hosted [GitWorkshop instance](nostr:naddr1qvzqqqrhnypzplfq3m5v3u5r0q9f255fdeyz8nyac6lagssx8zy4wugxjs8ajf7pqy88wumn8ghj7mn0wvhxcmmv9uqq5emfw33kjarpv3jkcs83wav).
We're especially glad to finally escape the GitHub Gulag, and avoid being bled dry by Jira fees, without having to give up the important features that we've come to know and love. So, yay!
## Next Infrasteps
### Automated Testing
Now, that we have everything tied up in one, neat, backed-up package, we can finally move on to the nitty-gritty and the dirty work. So, we're rolling up our sleeves and writing the Selenium smoke test for our [Alexandria client](https://next-alexandria.gitcitadel.eu). We'll be running that in Docker containers containing different "typical Nostr" images, such as Chrome browser with Nostr Connect signing extension, or Firefox browser with Nos2x-fox extension. Once we get the Nsec Bunker and Amber logins going, we'll add test cases and images for them, as well. (Yes, we can do Bunker. I hope you are in awe at our powers).
We are also designing an automated infrastructure test, that will simply rattle through all the various internal and external websites and relays, to make sure that everything is still online and responsive.
After that, a Gherkin-based [Behave feature test](https://behave.readthedocs.io/en/latest/) for Alexandria is planned, so that we can prevent regression of completed functionality, from one release to the next.
The Gherkin scenarios are written and attached to our stories before development begins (we use acceptance tests as requirements), a manual test-execution is then completed, in order to set the story to *Done*. These completed scenarios will be automated, following each release, with the resulting script linked to from the origin story.
![Gherkin-style story in Jira](https://i.nostr.build/20PuzFBK2K0NI1Jq.png)
### Automated Builds
As the crowning glory of every DevOps tool chain stands the build automation. This is where everything gets tied together, straightened out, configured, tested, measured, and -- if everything passes the quality gates -- released. I don't have to tell you how much time developers spend staring at the build process display, praying that it all goes through and they can celebrate a Green Wave.
![Build process](https://i.nostr.build/GEXddUYUtFTfnie7.png)
We are currently designing the various builds, but the ones we have defined for the Alexandria client will be a continuous delivery pipeline, like so:
![Alex pipeline](https://i.nostr.build/F2ngfNbKKwD6uMU3.png)
This will make it easier for us to work and collaborate asynchronously and without unnecessary delays.
### Expanding the Status Page
![infra quote](https://i.nostr.build/lPvAlDSqrdu8B6RR.jpg)
And, finally, we get to the point of all of this busyness: reporting.
We are going to have beautiful reports, and we are going to post them online, on our [status page](https://status.gitcitadel.com). We will use bots, to inform Nostriches of the current status of our systems, so go ahead and follow our [GitCitadel DevOps npub](nostr:npub16p0fdr2xccfs07hykx92t0cascac69xjuwaq38kjqy3aawt5hx8s82feyj), to make sure you don't miss out on the IT action.
## Building on stone
All in all, we're really happy with the way things are humming along, now, and the steady increase in our productivity, as all the foundational work we've put in starts to pay off. It's getting easier and easier to add new team members, repos, or features/fixes, so we should be able to scale up and out from here. Our GitCitadel is built on a firm foundation.
Happy building!