I am sure everyone is using the git feature of vRO 8.x and you probably be pushing & pulling your vRO content across your DEV, STAGING, UAT & PROD environments. The question is, “Are you using
.gitignore while pushing code from vRO? and why do you need it?”. This question was asked in vRO community (link here), and since the comment that I made answered the query, I thought I should write about it. Let’s see how
.gitignore can ease your life during code promotions and gives you fluidity to have environment specific values safe as well as keeps the gibberish away from PROD vRO etc. and keeps your assembly vRO’s codebase clean and compact.
I will not go in details on how
.gitignore works. You can learn more about
.gitignore online. Fundamentally,
.gitignore allows you to exclude specific files or directories from being pushed to the remote repository. Hence, using .gitignore can drastically improve the performance of your CI\CD pipelines. For vRealize Orchestrator, I have come across mainly following types of files that I want to exclude:
- Test actions & workflows: Development creates a lot of hit & trial. This leaves a lot of post-development debris.
- Environment specific assets like Configuration elements: This may include passwords or API keys.
- Packages: Since you have git-power, you don’t really need packages to move your code and hence, if you are using them, it’s probably something not as critical.
- Default Library content: Why would you copy something which is already there at first place.
- Multi Node Workflows: These dummy workflows doesn’t need to push across (starts with
Question? Can you think of any other type of file that should be ignored? Comment down your answer.
You can use literal file names, wildcard symbols, etc to get them listed. Also, you can use negating patterns. A negating pattern is a pattern that starts with an exclamation mark (
!) negates (re-include) any file that is ignored by the previous pattern. The exception to this rule is to re-include a file if its parent directory is excluded.
In the vRO, Go to repository which is already setup under Administration -> Git Repositories.
In our case, it will be
Simply, just create a .gitignore file in the root of your repo branch and list down all the files you want to ignore like
# Default Resource Elements Resources/Library/* # Library Workflows Workflows/Library # Environment Specific variables Configurations/Vault/API Keys # Negating pattern to explicitly include tenant specific information !Configurations/Tenants/* # Multi-Node Workflows Workflows/VCO@* # Packages **/Packages/ # Test actions Actions/org/mayank/test
The other way round is to ignore everything and use negating pattern to include very specific things.
This will avoid all the packages, resources and configurations to be committed to the corresponding repo.
This should be enough. If you want to be more precise, The
.gitignore tutorial is here https://www.atlassian.com/git/tutorials/saving-changes/gitignore
- If you add
.gitignoreafter pushing everything even once, the
.gitignorewill work for new files but will still track those existing files.
.gitignorefile will become part of vRO.
- You may lose version control on ignored objects.
Available on gitignore.io
As we all know https://gitignore.io is the largest collection of
.gitignore files, I thought why shouldn’t I add vRO to their list as well. That’s why I created a pull request here at https://github.com/toptal/gitignore/pull/460 & it got approved. Now, if you got there and search for
vRealizeOrchestrator, you will get the
.gitignore file ready to be consumed in your projects.
That’s it in this post. Let me know what you think about it in the comments.