Extract files from EBS and Save to SCM

This can be used for AOL and various other types of files that support download option from EBS.

In this example, we will talk about committing LDT files to Git, but this option would apply to other Source Control as well, just plugin operations used to commit files will change.

Let's first create Git (or any other SCM) instance in Topology - Integrations section. If you already have SCM Integration Instance created, you can skip this step. Here is an example of Git instance, we will call it EBSDemo.

Next Step is to create Workflow. We will call it Extract LDT. This will be of Build Type.

image-20240531-090305.png

There will be 5 steps in this workflow for Extracting files and commit to Git. If you are using Git, you can just paste Source shown below in Source popup of your workflow.

Make sure to change GIT1 instance code to your Instance Code if you are using different Instance code for Git. That would need to be updated in Git Clone, Add any new Files, Commit to Git, Push to Central Repository operations.

If you are using other SCM, then you will need to use proper operations for commit of files. Basic steps will be to checkout code, copy files in it and commit.

Extract LDT workflow source
name: Extract LDT description: '' steps: - id: '1' name: Extract LDT Files from EBS type: INVOKE_PLUGIN data: pluginName: FlexagonEBSPlugin pluginOperation: build endpointInstanceOverride: isExpression: false consumesArtifacts: false producesArtifacts: true endpointSelection: choice: All endpointExecution: choice: Any stopOnError: false inputs: - name: FDEBS_INP_INCLUDE_FILES value: isExpression: false isEncrypted: false outputs: [] userInputs: [] userOutputs: [] - id: '2' name: Git Clone type: INVOKE_PLUGIN data: pluginName: FlexagonGITPlugin pluginOperation: clone endpointInstanceOverride: isExpression: false consumesArtifacts: false producesArtifacts: false endpointSelection: choice: All endpointExecution: choice: Any stopOnError: false inputs: - name: FDGIT_INP_INSTANCE_CODE value: value: GIT1 isExpression: false isEncrypted: false - name: FDGIT_INP_DEST_SUBFOLDER value: value: ../ebsldtfiles isExpression: false isEncrypted: false - name: FDGIT_INP_BRANCH value: value: FDBLD_STREAM_NAME isExpression: true isEncrypted: false - name: FDGIT_INP_DEPTH value: value: '1' isExpression: false isEncrypted: false - name: FDGIT_INP_SPARSE_CHECKOUT_FOLDERS value: isExpression: false isEncrypted: false outputs: [] userInputs: [] userOutputs: [] - id: '3' name: Copy downloaded files to Git Repository type: INVOKE_PLUGIN data: pluginName: FlexagonFilePlugin pluginOperation: copy endpointInstanceOverride: isExpression: false consumesArtifacts: false producesArtifacts: false endpointSelection: choice: All endpointExecution: choice: Any stopOnError: false inputs: - name: FDFILE_INP_FILE_FILTER value: value: '*.ldt' isExpression: false isEncrypted: false - name: FDFILE_INP_FILE_FILTER_EXCLUDED value: isExpression: false isEncrypted: false - name: FDFILE_INP_SOURCE_PATH value: value: FD_TEMP_DIR isExpression: true isEncrypted: false - name: FDFILE_INP_TARGET_PATH value: value: FD_TEMP_DIR + '/../ebsldtfiles' isExpression: true isEncrypted: false - name: FDFILE_INP_CLEAN_DIRECTORY value: value: 'false' isExpression: false isEncrypted: false outputs: [] userInputs: [] userOutputs: [] - id: '4' name: Add any new Files type: INVOKE_PLUGIN data: pluginName: FlexagonGITPlugin pluginOperation: add endpointInstanceOverride: isExpression: false consumesArtifacts: false producesArtifacts: false endpointSelection: choice: All endpointExecution: choice: Any stopOnError: false inputs: - name: FDGIT_INP_INSTANCE_CODE value: value: GIT1 isExpression: false isEncrypted: false - name: FDGIT_INP_DEST_SUBFOLDER value: value: ../ebsldtfiles isExpression: false isEncrypted: false - name: FDGIT_INP_FILELIST value: value: --all . isExpression: false isEncrypted: false outputs: [] userInputs: [] userOutputs: [] - id: '5' name: Commit to Git type: INVOKE_PLUGIN data: pluginName: FlexagonGITPlugin pluginOperation: commit endpointInstanceOverride: isExpression: false consumesArtifacts: false producesArtifacts: false endpointSelection: choice: All endpointExecution: choice: Any stopOnError: false inputs: - name: FDGIT_INP_INSTANCE_CODE value: value: GIT1 isExpression: false isEncrypted: false - name: FDGIT_INP_DEST_SUBFOLDER value: value: ../ebsldtfiles isExpression: false isEncrypted: false - name: FDGIT_INP_NAME value: value: FD_WF_USER isExpression: true isEncrypted: false - name: FDGIT_INP_EMAIL value: value: FD_WF_USER_EMAIL isExpression: true isEncrypted: false - name: FDGIT_INP_REVISION_MESSAGE value: value: new ldt files isExpression: false isEncrypted: false outputs: [] userInputs: [] userOutputs: [] - id: '6' name: Push to Central Repository type: INVOKE_PLUGIN data: pluginName: FlexagonGITPlugin pluginOperation: push endpointInstanceOverride: isExpression: false consumesArtifacts: false producesArtifacts: false endpointSelection: choice: All endpointExecution: choice: Any stopOnError: false inputs: - name: FDGIT_INP_INSTANCE_CODE value: value: GIT1 isExpression: false isEncrypted: false - name: FDGIT_INP_DEST_SUBFOLDER value: value: ../ebsldtfiles isExpression: false isEncrypted: false - name: FDGIT_INP_FOLLOW_TAGS value: value: 'false' isExpression: false isEncrypted: false outputs: [] userInputs: [] userOutputs: []

Now that we have Workflow and Topology setup completed, last step is create Project for execution. We will create Extract LDT to GIT project. You can create this project in any application of your choice. Make sure to give name that makes sense to you, select Partial Deployments, and select EBS as Project Type.

When you create Project, it will automatically open. Click on Configurations tab and configure as shown in below screen shot.

  • SCM Type - None

  • Build Workflow - Extract LDT

  • Build Instance - EBS (can be different in your setup)

  • Streams - create more streams as necessary to indicate Git (or other SCM) branches. In this case we will go ahead with master for now.

  • Click Save.

Now go to Project Properties. Filter for application and enter Custom Top code and click Save at the bottom of the page.

Now we can create AOL object definition. This step will repeat for each AOL object that you want to extract from EBS environment. In this example, we are showing LDT files, but you can download other types of files as well.

  1. Select packages tab in the project.

  2. Click File Catalog on the right side.

  3. Click Create

  4. Select Application Object Library for type.

  5. Enter path for output file name for extracted LDT. This path should match with location in Git repository. Otherwise you need to adjust copy in Extract LDT workflow accordingly. Path name will generally end with .ldt.

  6. Click Evaluate.

  7. Change Type and Name as appropriate.

  8. Change any other attributes if necessary.

  9. Click Evaluate.

  10. Click Save.

You can add more files later if necessary. Now let's execute Build for this project. In this example, I am showing only one file extract but you can run All Files or selectively run for one or more files. Let's start by clicking the Packages tab - Create.

Now,

  • Select environment where you want to Extract files from. You must make sure that Environment is marked as Build Environment on Topology, otherwise it will not show up here in Environment list.

  • Select specific Stream (branch) where you want to commit files.

  • Click Force Build

  • Click Submit.

You can review execution details as well. Alternatively, you can just download the zip file from Artifacts tab and commit the files yourself after reviewing it, if that makes sense to do so. This guide just provides one example with Git, but you can follow this to commit files to your choice of SCM or rely on developers to commit files to SCM.

The following macros are not currently supported in the footer:
  • style