I've tended to use two strategies for this:
1. For smaller schemas (say dozens of properties/labels) and/or those schema that have a domain that isn't likely to grow too much (i.e. the domain is known and stable), I simply use a Groovy script or single Java file with code comments. I commit that to source control with the rest of my application and allow that file to be versioned like any other. A simple Groovy script is nice because you can copy paste it into the Gremlin Console to easily execute it. It can be compiled and then used in unit tests really easily to set up your schema. It provides a lot of flexiblity.
2. For larger schemas and ones that might change fluidly, I will create a schema module (i.e. maven module, separate project, etc.) with homemade utility classes to help build the schema. I'll use full javadoc/groovydoc to generate documentation for the schema. As this is a independent module, you can depend on it in a central way (i.e. multiple projects might depend on this one). You can enclose other utility methods for administering your graph and write test cases around that.
There really aren't any out-of-the-box tools that I know of around this kind of stuff. It's all homegrown unfortunately.