Workflow automation is a crucial aspect of modern software development, and the way in which it is implemented can greatly impact the efficiency and effectiveness of a team. One approach that is gaining popularity is defining infrastructure as code, where the infrastructure configurations are written in code rather than manually configured. But if you define your infrastructure as code, shouldn’t your workflow automation follow the same approach?
This is where Flowpipe comes in. Flowpipe is a workflow automation tool that allows you to define workflows using HCL (HashiCorp configuration language). With Flowpipe, you can create pipelines, steps, triggers, and control flow just like you would with any other workflow tool. The key difference is that with Flowpipe, everything is defined as code artifacts that live in repositories, making them version-controlled and collaborative.
One of the standout features of Flowpipe is its flexibility in orchestrating workflows. For example, if you need to track open issues in GitHub and then notify Slack, there are multiple ways you can gather the GitHub data you need. You can use a pipeline step, a query step, a function step, or even a container step, depending on what is most appropriate for your specific use case.
The flexibility of Flowpipe is reminiscent of the old Perl mantra “There is more than one way to do it.” This flexibility allows you to choose the method that works best for your particular integration, leveraging existing assets or simply being the most convenient. You are never blocked with Flowpipe – there is always a way to get the job done, even as you navigate a complex landscape of diverse and interconnected clouds and services.
One of the strengths of Flowpipe is its integration capabilities. For example, you can easily integrate with GitHub and Slack using the provided library mods. By utilizing these mods in your pipeline steps, you can quickly set up workflows to list GitHub issues and notify Slack with minimal effort.
Additionally, Flowpipe plays well with other tools such as Steampipe. By using Steampipe’s GitHub plugin, you can query for open GitHub issues in a repo and incorporate that data into your workflows. This integration with external tools and plugins greatly expands the capabilities of Flowpipe and allows you to tap into a vast ecosystem of data sources.
If you find that there isn’t a library mod or plugin available for your specific use case, you can always write a Lambda-compatible function and call it in a function step. These functions, written in Python or JavaScript, are easy to create and test, and can be seamlessly integrated into your workflows.
Lastly, Flowpipe supports the use of command-line interfaces in container steps, providing maximum flexibility and portability. While this may be overkill for some use cases, the ability to containerize commands ensures that you can easily incorporate any tool or script into your workflows.
In conclusion, Flowpipe offers a modern approach to workflow automation that leverages the power of code-defined workflows. With its flexibility, integrations, and support for various methods of workflow orchestration, Flowpipe is a valuable tool for any team looking to streamline their development processes. Flowpipe is a powerful tool that offers an ideal fit for managing workflows efficiently. Unlike many scripting languages that require explicit management of resource dependencies, Flowpipe utilizes a directed acyclic graph (DAG) in its execution model to determine the order of operations based on these dependencies.
One of the key features of Flowpipe is its ability to implicitly sequence steps in a workflow based on dependencies. Concurrency is also implicit, allowing steps that do not depend on each other to run in parallel without the need for any special syntax. This declarative style makes it easy to create complex and highly parallel workflows that are both easy to read and write.
For example, Flowpipe allows users to iterate over a list of users and make API calls for each user using a simple and intuitive syntax. Error handling and retries are also seamlessly integrated into the declarative style of Flowpipe, providing a smooth workflow experience.
In addition to managing workflows, Flowpipe also offers support for unpacking and transforming data between pipeline steps. Users can leverage Terraform-compatible HCL functions, including collection functions that work with lists and maps, to manipulate data efficiently within their workflows.
Flowpipe also supports schedules, events, and triggers, allowing users to trigger pipelines on a schedule or react to events like code pushes or Slack messages in real-time. By running Flowpipe in server mode, users can take advantage of these triggers to automate their workflows effectively.
Flowpipe strikes a balance between simplicity and complexity, offering a middle ground for users who require more flexibility than tools like Zapier or IFTTT but less code-heavy solutions than N8N or Windmill. With a common execution model embedded in a single binary, users can easily coordinate resources and tasks using HCL and other languages as needed.
To get started with Flowpipe, users can download the tool, explore the library mods and samples, and follow the tutorial to familiarize themselves with its capabilities. Whether Flowpipe’s declarative code-forward style resonates with devops scripters is something that users can discover by trying it out for themselves. Contributions to Flowpipe’s AGPL-licensed engine or Apache-licensed mods are always welcome through pull requests.
Overall, Flowpipe offers a comprehensive solution for managing workflows efficiently, with a focus on simplicity, flexibility, and ease of use. Give it a try and see how it can streamline your workflow processes effectively.