What are your SDF pipelines like? I'm implementing...
# sdf
k
What are your SDF pipelines like? I'm implementing SDF for a client and they have nothing in place so wondering what your "best practices" are while I'm designing it.
i
I currently am creating seperate projects/repos per customization. That's the way that seems best for me (Single Person Dev) where others go Monolith design which I feel gets pretty messy when making deployments.. @erictgrubaugh has a good article on structure as well https://stoic.software/articles/repository-layout-comparison/
❤️ 2
👍 2
e
For context, that article is a few years old now, and I wrote it before I had done much in the way of CI/CD. Do you have any specific questions or ideas you're trying to explore? I don't know that there are universal "best" practices; there are tons of approaches.
👍 1
k
I have two goals at the moment, and maybe SDF isn't the best solution, (or maybe it is?) 1. Back up all SuiteScripts and XML objects. 2. Establish a deployment pipeline because right now they have nothing.
Long term I'd like a full CI/CD process in place but for now I'd be happy with being able to find in files for field IDs and such 😄
g
Are you building it for your own use with the customer's environment (e.g. you are deploying changes from lower to higher envs), or does the customer have devs/admins who will deploy changes? If the latter, I'd recommend understanding their skillset first.
k
They have one admin and I'm their only developer, but I'd like to build them something that future developers can understand and use
e
The biggest piece of advice I give to teams is to avoid making the branches of your development lifecycle match a specific environment (e.g. just because the
main
branch is your "Production-ready code" does not mean it has to match the Production environment). If you want branches that match specific environments, I advise using separate, long-running branches that are outside your dev cycle for that.
👍 1
t
maybe a dumb question, but why do you advise that @erictgrubaugh?
k
They don’t have any kind of CI/CD at the moment so no version control. I’ll be implementing a main branch repository for them but the rest they’ll have to decide later. I just want a sane environment to work in. 😆
My guess is because sandbox environments typically don't follow software development lifecycles
Curious to know the answer too
e
If you're working on a team with multiple developers, and especially in the case where the dev team doesn't "own" the Production account (e.g. third-parties, contractors, Admins are also making changes outside your own dev flow), it is completely disruptive to the dev flow. You're constantly battling and colliding and overwriting or being overwritten. I never see it cause anything but thrashing and stress.
k
Yeah that's the situation with this client until I got here. Too many NetSuite partners each making their own changes. That's why I'm not looking to come up with a formal process, just a place to put stuff so it can be searched, deployed, and reverted.
t
interesting points i need to think about, thanks for elaborating
e
I've seen many different branching schemes work just fine, but I've never seen one work well when the team wanted a branch to simultaneously match an environment and be part of the dev cycle
If others have figured out how to make that work well, I'd love to learn from them
👍 1