The boomi-cicd-cli-py library enables automated Boomi deployments through seamless integration with your existing CI/CD pipelines. It facilitates the orchestration of Boomi runtimes, components, and essential metadata for efficient CI/CD workflows.
To get started, there are two main elements you need to complete: importing this repository and creating a release file. This repository includes a sample release pipeline script that reads through your release file, creates packaged components, and deploys them to an environment. The steps involved in setting up the release pipeline are described below and detailed in the documentation.
The documentation for this project is found at boomi-cicd-cli-py Documentation. It includes all the information you need to get started with the library, including installation instructions, usage examples, and release pipeline templates.
- Python 3.6 or higher
- Additional libraries, which can be installed with
pip install -r requirements.txt
- git v1.7.0 or higher: Optional. Only required when executing the
component_xml_git.py
script.
The project is organized into three sections:
- scripts - Contains the scripts to be executed within a CI/CD pipeline. The main script is
release_pipeline.py
, and there are additional example scripts that can serve as starting points for your own pipelines. - util - Contains the core functionality of the library.
- templates - Contains release pipeline templates that can be used as-is or customized for your specific requirements.
We will start with running release_pipeline.py
.
The pipeline is designed
to check if a package component should be created, and if a process needs to be deployed to a specific environment.
- Create a Release JSON
- Set Environment Variables
- Run the Release Pipeline script
The Release Pipeline script rely on the release.json
file, which includes the components to be deployed and their configuration.
Release JSON Element | Description | Required |
---|---|---|
processName | Name of the process. Mainly used for human readability. | Yes |
packageVersion | Define the package version. If one isn't specified, the latest version will be used. | Yes |
componentId | The component ID of the process to deploy. | Yes |
notes | The notes that will be added to the packaged components and deployments. | No |
schedule | The schedule that will be used to deploy the process. Each individual schedule is space delimited. Multiple schedules are semi-colon delimited. Additional notes below. | No |
listenerStatus | The status of the listener when deployed. Values: RUNNING or PAUSED. RUNNING is default. | No |
An example release JSON file with a batch process, a listener process, and a custom library:
{
"pipelines": [
{
"processName": "An Example Batch Process",
"packageVersion": "2.0",
"componentId": "83d6013f-96f5-4a75-a97b-f4934b0ec2e8",
"notes": "This is an example set of notes",
"schedule": "0 0 1 * * * ; 30 0 2-7 * * *"
},
{
"processName": "An Example Listener Process",
"packageVersion": "1.0",
"componentId": "b24f310b-6a66-4e0d-97a3-26f1e812b79a",
"notes": "This is an example set of notes",
"listenerStatus": "RUNNING"
},
{
"processName": "An Example Custom Library",
"componentId": "7bd40730-6df3-4ba9-b4b2-ed9153dbca6d",
"packageVersion": "1.0",
"notes": "Initial deployment"
}
]
}
The following environment variables are required to run the releasePipeline.py script. They can be set by environment variables or by using a .env file.
Environment Variable | boomi_cicd Constant Name | Description | Required |
---|---|---|---|
BOOMI_BASE_URL | BASE_URL | The base URL of the Boomi account | Yes |
BOOMI_ACCOUNT_ID | ACCOUNT_ID | The account ID of the Boomi account | Yes |
BOOMI_USERNAME | USERNAME | The username of the Boomi account | Yes |
BOOMI_PASSWORD | PASSWORD | The password of the Boomi account | Yes |
BOOMI_ENVIRONMENT_NAME | ENVIRONMENT_NAME | The environment name used to deploy to components | Yes |
BOOMI_RELEASE_FILE | RELEASE_FILE | Full path of the release.json file | Yes |
Once you have created the release JSON file and set the environment variables, you can execute the release pipeline script. To define a release file, you can either use a command-line argument (-r) or set the file using an environment variable (BOOMI_RELEASE_FILE).
Example of running the release pipeline script:
python boomi_cicd/scripts/releasePipeline.py
A variety of release templates are at your disposal, each accompanied by comprehensive documentation detailing their usage instructions. These templates serve as practical demonstrations, showcasing the implementation of a fundamental release pipeline for deploying processes to a Boomi environment. You can use the release pipelines as-is or as a starting point for your own release pipeline. Each release pipeline parses a release JSON file, checks if a package has been created, creates one if not, and checks if the package has been deployed, deploys it if not.
You can build the documentation locally by running the following command from the docs
directory. Once built, navigate to docs/_build/index.html to view the documentation.
cd docs
sphinx-build -b html . _build
Black is used for code formatting. To format the code, run the following command:
pip install black
black .