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.
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.
Select packages tab in the project.
Click File Catalog on the right side.
Click Create
Select Application Object Library for type.
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.
Click Evaluate.
Change Type and Name as appropriate.
Change any other attributes if necessary.
Click Evaluate.
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.
- style