DevOps for webMethods.io Integration

DevOps for webMethods.IO Integration

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
    1. Developer starts by executing Initialize Pipeline (Automation)
    2. This checks if the request is for an existing asset or a new implementation
    3. If new, automation will
      1. Initialize a repository
      2. Create standardized branches, including requested Feature Branch
      3. Create a project in Play/Build environment
    4. If existing, automation will
      1. Clone the Prod branch to the Feature branch
      2. 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

  1. Develop & Commit
    1. Developer starts developing
    2. After completion they will execute synchronizeToFeature Pipeline (Automation)
    3. Automation will
      1. Export the asset
      2. 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

  1. Deliver / Promote to DEV
    1. Once the implementation is finished, developer manually creates a Pull Request from Feature Branch to DEV
    2. This will trigger the synchronizeToDev pipeline (Automation)
    3. Automation will
      1. Checkout the DEV branch
      2. Import the asset to DEV environment
      3. And then kicks off automated test for the associated project/repo with data/assertions specific to DEV
    4. 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

  1. Deliver / Promote to QA
    1. After Dev cycle is complete, developer manually creates a Pull Request from Feature Branch to QA.
    2. This will trigger the synchronizeToQA pipeline (Automation)
    3. Automation will
      1. Checkout the QA branch
      2. Import the asset to QA environment
      3. And then kicks off automated test for the associated project/repo with data/assertions specific to QA
    4. On failure, developer needs to fix/re-develop the asset (Step 2).

      API’s Used: SAME AS STEP 3

  1. Deliver / Promote to PROD
    1. 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.
    2. Respective operations team will manually trigger the synchronizeToPROD pipeline (Automation)
    3. Automation will
      1. Checkout the PROD branch
      2. Create a release
      3. Import the asset to PROD environment
      4. And then kicks off an automated Smoke test, if any for PROD.
    4. 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.

10 Likes

2 Questions on this:

  1. In this process I do not see user testing/acceptance. What is the reason for that?
  2. Is this only possible with Azure DevOps, or could you also use Jenkins or something similar?

Jeroen

1 Like

Hi Jeroen,

Thanks for reaching out.

I have implemented and shown automated integration test as part of the above POC. But ofcourse when incorporating in non-POC/productive scenarios we should also include User/Acceptance test phase, as you pointed out.

Regarding the orchestration platform, for the POC/Article I have used Azure DevOps, but its not limited to that. Recently we have implemented the same in a customers environment with Bamboo for Orchestration and Bitbucket for repositories.

Regards
Srini

Thank you for your feedback, that is most helpful!

Regards,

Jeroen

1 Like