DevOps for webMethods.io Integration

Tech Community
4 min readNov 15, 2023

--

This article shows how to design and set up an automated CI/CD process and framework for webMethods.io using the inbuilt APIs (or CLI). Here we have used Azure DevOps as our orchestration platform, GitHub as a repository platform and Postman/Newman as a test framework.

Use-case

When organizations start using webMethods.io Integration for business use-cases, the need for having a continuous integration and delivery process becomes very important. These processes will enable the business to have a “Faster release rate”, “More Test reliability” & “Faster to Market”.

This use-case will highlight a solution utilizing webMethods.io import & export APIs (or CLI) and Azure Devops to extract and store the code assets in repository (GitHub). By integrating repository workflows and azure pipelines, this process will automate the promotion of assets to different stages/environment as per the organizations promotion workflow. This will also showcase how to automate the test framework for respective stages/environments.

The automation around webMethods.io Integration APIs have been implemented using scripts, which will make customization easier if the organization chooses to adopt an alternative orchestration platform.

Assumptions / Scope / Prerequisite

  1. 4 Environments: Play/build, Dev, QA & Prod.
  2. Azure DevOps as Orchestration Platform
  3. GitHub: as the code repository
  4. GitHub Enterprise: For Pipelines/Scripts
  5. Postman/Newman as a test framework

Git Workflow

We will assume that the organization is following the below GIT Workflows.

Steps

  1. Initialize

a. Developer starts by executing Initialize Pipeline (Automation)

b. This checks if the request is for an existing asset or a new implementation

c. If new, automation will

  • Initialize a repository
  • Create standardized branches, including requested Feature Branch
  • Create a project in Play/Build environment

d. If existing, automation will

  • Clone the Prod branch to the Feature branch
  • Import asset to Play/Build environment

API’s Used

  • /apis/v1/rest/projects/{{projectName}},
  • /apis/v1/rest/projects/{{projectName}}/workflow-import,
  • /apis/v1/rest/projects/{{projectName}}/flow-import,
  • /apis/v1/rest/projects/{{projectName}}/referencedata/{{referenceDataName}},
  • /apis/v1/rest/projects/{{projectName}}/referencedata,
  • /apis/v1/rest/projects/{{projectName}}/params/{{parameterUID}},
  • /apis/v1/rest/projects/{{projectName}}/params

2. Develop & Commit

a. Developer starts developing

b. After completion they will execute synchronizeToFeature Pipeline (Automation)

c. Automation will

  • Export the asset
  • Commit the asset to Feature Branch

API’s Used

  • /apis/v1/rest/projects/{{projectName}}/workflows/{{assetID}}/export,
  • /apis/v1/rest/projects/{{projectName}}/flows/{{assetID}}/export,
  • /apis/v1/rest/projects/{{projectName}}/assets,
  • /apis/v1/rest/projects/{{projectName}}/accounts,
  • /apis/v1/rest/projects/{{projectName}}/referencedata/{{referenceDataName}},
  • /apis/v1/rest/projects/{{projectName}}/referencedata,
  • /apis/v1/rest/projects/{{projectName}}/params/{{parameterUID}},
  • /apis/v1/rest/projects/{{projectName}}/params

3. Deliver / Promote to DEV

a. Once the implementation is finished, developer manually creates a Pull Request from Feature Branch to DEV

b. This will trigger the synchronizeToDev pipeline (Automation)

c. Automation will

  • Checkout the DEV branch
  • Import the asset to DEV environment
  • And then kicks off automated test for the associated project/repo with data/assertions specific to DEV

d. On failure, developer needs to fix/re-develop the asset (Step 2).

API’s Used

  • /apis/v1/rest/projects/{{projectName}},
  • /apis/v1/rest/projects/{{projectName}}/workflow-import,
  • /apis/v1/rest/projects/{{projectName}}/flow-import,
  • /apis/v1/rest/projects/{{projectName}}/referencedata/{{referenceDataName}},
  • /apis/v1/rest/projects/{{projectName}}/referencedata,
  • /apis/v1/rest/projects/{{projectName}}/params/{{parameterUID}},
  • /apis/v1/rest/projects/{{projectName}}/params
  • /apis/v1/rest/projects{{projectName}}/workflows/{{assetID}}/run
  • /apis/v1/rest/projects/{{projectName}}/flows/{{assetName}}/run

4. Deliver / Promote to QA

a. After Dev cycle is complete, developer manually creates a Pull Request from Feature Branch to QA.

b. This will trigger the synchronizeToQA pipeline (Automation)

c. Automation will

  • Checkout the QA branch
  • Import the asset to QA environment
  • And then kicks off automated test for the associated project/repo with data/assertions specific to QA

d. On failure, developer needs to fix/re-develop the asset (Step 2).

API’s Used: SAME AS STEP 3

5. Deliver / Promote to PROD

a. Once the automated test and UAT are successfully finished, the developer manually creates a Pull Request from Feature Branch to PROD. PROD deployment may have a different approval cycle.

b. Respective operations team will manually trigger the synchronizeToPROD pipeline (Automation)

c. Automation will

  • Checkout the PROD branch
  • Create a release
  • Import the asset to PROD environment
  • And then kicks off an automated Smoke test, if any for PROD.

d. On failure, the developer needs to fix/re-develop the asset (Step 2). And release will be rolled back.

API’s Used: SAME AS STEP 3

Downloads / Assets / References

  1. Repository for automation, scripts & sample assets: GitHub — SoftwareAG/webmethods_io_int_cicd: Design and setup an automated CI/CD process and framework for webMethods.io using the inbuilt APIs (or CLI)
  2. Presentation: https://github.com/SoftwareAG/webmethods_io_int_cicd/blob/main/presentation/webMethodsIO_Integration_CICD.pptx
  3. API Documentation: webMethods.io Integration API Reference — webMethods.io Integration
  4. CLI Repository: GitHub — SoftwareAG/webmethods-io-integration-apicli: webMethods.io integration Public APIs CLI tool
  5. webMethods.io Integration Guides: GitHub — SoftwareAG/webmethods-io-integration-guidelines: This repository contains various guidelines for webMethods.io Integration.

Next Steps

  1. Incorporate design for Hybrid use-case
  2. Extend the testing framework
  3. Incorporate design for code review

This article is part of the TECHniques newsletter blog — technical tips and tricks for the Software AG community. Subscribe to receive our quarterly updates or read the latest issue.

Originally published at https://tech.forums.softwareag.com on November 15, 2023.

--

--

Tech Community

Software AG’s Tech Community is a one-stop shop to connect to all Software AG developer assets, channels, and community members.