Skip to content

m-cmp/mc-workflow-manager

Repository files navigation

MC-Workflow-Manager

MC-Workflow-Manager is one of the components of the M-CMP platform. With MC-Workflow-Manager, you can easily create and execute workflows, as well as modify and delete them as needed. For example, it allows you to create and manage multi-cloud infrastructures and seamlessly deploy applications across multiple clouds.

Features

  • Workflow creation and execution
  • Workflow Stage management
  • Workflow management

Table of Contents

  1. System Requirements
  2. Installation with Docker Compose
  3. Project Structure
  4. Run Instructions
  5. Contributing
  6. License

System Requirements

To use mc-workflow-manager, ensure your system meets the following requirements:

  • Operating System: Linux (Ubuntu 22.04 LTS recommended)
  • Java: OpenJDK 17
  • Gradle: v7.6
  • Docker: v24.0.2
  • WorkflowEngine(Jenkins): v2.424
  • Git: Latest version

Installation with Docker Compose

The easiest way to deploy mc-workflow-manager is via Docker Compose. Follow the steps below to get started.

Step 1: Clone the Repository

First, clone the mc-workflow-manager repository to your local machine:

git clone https://github.com/m-cmp/mc-workflow-manager.git
cd mc-workflow-manager

Step 2: Configure Environment Variables

You can customize the following environment variables in the docker-compose.yaml file:

  • DB_INIT_YN: Database initialization (create, update, create-drop, none ....)
  • DB_ID: Database user ID
  • DB_PW: Database user password
  • Edit these environment variables according to your needs.

Step 3: Install and Run Docker Compose

To bring up the mc-workflow-manager service along with its dependencies, run the following command:

sudo apt update
sudo apt install -y docker-compose

cd ./script
chmod  x setup-docker-no-sudo.sh
./setup-docker-no-sudo.sh

cd ..
sudo docker-compose up -d

This command will pull the necessary Docker images, build the services, and start the containers in detached mode.

Step 4: Access the Application

Once the services are up, you can access the following endpoints:

  • Swagger UI: http://<Public_IP>:18083/swagger-ui/index.html
  • WorkflowEngine(Jenkins) UI: http://<Public_IP>:9800
  • Workflow Manager UI:
    • http://<Public_IP>:18083
    • OSS Management: http://<Public_IP>:18083/web/oss/list
    • Workflow Stage Management: http://<Public_IP>:18083/web/workflowStage/list
    • Workflow Management: http://<Public_IP>:18083/web/workflow/list
    • Event Listener Management: http://<Public_IP>:18083/web/eventListener/list

Step 5: Stop Services

To stop the running services, use:

sudo docker-compose down

This will gracefully shut down the containers without removing volumes, allowing you to preserve the state of the database.


Project Structure

mc-workflow-manager/
├── docker-compose.yaml       # Docker Compose file for service orchestration
├── src/                      # Source code for the Workflow Manager
├── script/                   # Helper scripts for build and execution
├── README.md                 # Project documentation
├── LICENSE                   # License information
└── docs/                     # Additional documentation

Run Instructions

Manual Build and Run

If you prefer to build and run the project manually, follow these steps:

  • Install Git

    sudo apt update
    sudo apt install -y git
  • Download mc-workflow-manager Source Code

    cd $HOME
    git clone https://github.com/m-cmp/mc-workflow-manager.git
    export PROJECT_ROOT=$(pwd)/mc-workflow-manager
  • Install Required Packages/Tools and Set Environment Variables

    • Install Java, Docker

      cd $PROJECT_ROOT/script
      sudo chmod  x *.sh
      . $PROJECT_ROOT/script/init-install.sh
    • Set Environment Variables

      cd $PROJECT_ROOT/script
      . $PROJECT_ROOT/script/set_env.sh
      source $HOME/.bashrc
  • Build and Run

    • Execute Shell Script
      # Run Jenkins
      . $PROJECT_ROOT/script/run-jenkins.sh
      
      # Build Springboot Project
      . $PROJECT_ROOT/script/build-mc-workflow.sh
      
      # Run Springboot Project
      . $PROJECT_ROOT/script/run-mc-workflow.sh

Refer to Set WorkflowEngine(Jenkins)

1. Access the Jenkins container

sudo docker exec -it we-jenkins /bin/bash

2. Inside the container, retrieve the initial admin password

cat /var/jenkins_home/secrets/initialAdminPassword

3. Copy the string that appears after running the cat command.

4. Open Chrome browser and navigate to http://<Public IP>:9800 Jenkins Unlock Page img_4.png 5. Paste the copied string into the password field.

6. Click Install suggested plugins Button img_5.png img_6.png

7. Insert User Information img_1.png img_2.png img_3.png

This process will complete the initial setup of Jenkins


Contributing

We welcome contributions to the mc-workflow-manager project! To get involved, follow these steps:

  1. Fork the repository on GitHub.
  2. Create a feature branch: git checkout -b feature-branch.
  3. Commit your changes: git commit -m "Add new feature".
  4. Push the branch: git push origin feature-branch.
  5. Open a Pull Request.
  6. For detailed guidelines, refer to the Contributing Guide.

License

This project is licensed under the terms of the Apache 2.0 License. See the LICENSE file for details.