In our delivery/deployment process, we use various types of external artefacts, such as XSLT and XSD files which are used in the processing of XML data. Version control for these files is done using Git.
Also, we keep a complete history of all our releases, created by UDeliver, in Git repositories.
Rather than having to handle these Git-related activities manually or by scripts, as we do now, it would be very useful if UDeliver would support pulling from and pushing to Git repositories.
Hi Marc,
@Rob.van.Haarst can elaborate on the possibilites, challenges involved? A Git client will need to be included/shipped along I suppose or maybe you could specify a location of the Git client to use with UDeliver?
I can imagine that would be nice to have integrated into UDeliver instead of combining it as explained in this article. maybe
More on USoft Delivery manager:
Yes, the link describes what we do now, but it would be nice to have proper ‘Git pull’ and ‘Git push’ actions in UDeliver.
Hi Dara and Marc,
This is an interesting suggestion and part of a much larger discussion about sourcing. When USoft started out all those years ago, the idea was to have a central database repository, with some additional features for deliverables that really had to be files and not database records. But in 2021, we are in a reality where Git file-based repositories are the leading delivery model for business software, and USoft database repositories will just have to fit into this larger framework. UDeliver is a step in this direction, because it automates conversion from database repositories to file-based deliverables.
More concretely, at USoft, when we create PDF documentation for our USoft Studio product, we use UDeliver to pull and push directly to and from Git, using task steps like the following.
This solution uses RDMI components. The USWTW_WINFILES performs common file system operations such as building filepaths for copying, moving and deleting files and folders. The code for the USWTW_SYSTEM component appears at the end of this reply.
Step 1: Hard reset and pull
This is risky in that any locally outstanding uncommitted work is automatically discarded. But this is necessary to avoid running into Git merge conflicts when these UDeliver steps are carried out as an automated routine.
UDeliver Action: Run SQL Command
SQL command:
(Note: ‘${git_local_folder}’ is something called a ‘user-defined source variable’ in UDeliver.)
Step 2: Upload edits
UDeliver Action: Copy Folder
Source folder:
Destination folder:
Step 3: Commit PDFs
UDeliver Action: Run SQL Command
SQL command:
Step 4: Push PDFs
UDeliver Action: Run SQL Command
SQL command:
.NET Component: USWTW_SYSTEM
Rob, thanks for the detailed information! I’ll play around with this when I have some time.