Runway
CI/CD solution created by and for eMantto based on the 5-layer Architecture model to address deployment needs and carry out the migration from Bitbucket to GitLab.
Current Status
Runway is functionally frozen and only receives support for existing functionality.
Runway was never fully completed; it was a functional MVP that is currently in Freeze. After ANDES took over and following thorough analysis, it was concluded that expanding Runway as a capability for other domains would be too costly in terms of time, so ANDES Pipelines was chosen instead, building on lessons learned from Runway, FW1, and FW2.
Impact
The impacts on eMantto were:
- Migration from Bitbucket to GitLab
- Reduction of Lead Time for Change
- Shift from Gitflow to Trunk Based Development
- Teams could define their own deployment strategies together with the Runway maintenance team
- User autonomy to run pipelines
- Interface via Slack
5-Layer Architecture
Model Definition
As the name suggests, there are 5 main layers that separate component responsibilities by level of interaction:
- Channels: The layer for direct user interaction. This is where FrontEnd applications live.
- Business Capabilities: Gives business meaning to data from Technical Capabilities and performs the transformations needed so that data makes sense to the user and supports the application's goals.
- Technical Capabilities: Layer responsible for transforming raw data from Core Systems so it can be used by Business Capabilities; this data is shaped to what different applications need, since several upper-layer applications can consume it.
- Integration APIs: Layer responsible for extracting information from Core Systems for the upper layers. It also handles fetching data and solving synchronization issues. It does not perform any data transformation.
- Core Systems: Where base information lives; all legacy systems that hold maintenance information such as Corenix, Maintenix, etc.
By inspection, this is an Event Driven Architecture that uses different capabilities for communication between layers, such as:
- Pub/Sub
- Kafka
- BFF
These were designed to support eMantto operations in its digital transformation process, and were also applied to the CI/CD tool and solution to meet the domain's delivery needs.
Structure
To improve the basic understanding of Runway as a CI/CD tool.
Core
Where pipeline generation capabilities and main logic live.
Frontend
Decommissioned. It was never finished. The original idea was to provide a UI for both end users and the tool maintenance team to handle issues and configuration.
Integrations
Contains integrations with the different tools. These responsibilities are currently spread around and do not follow the original architecture.
Repositories
Core:
Scheduler:
Frontend:
- https://gitlab.com/latamairlines/oper/emx/emx-techcap-runway/runway-bff
- https://gitlab.com/latamairlines/oper/emx/emx-techcap-runway/runway-fe
Integrations:
- https://gitlab.com/latamairlines/oper/emx/emx-techcap-runway/unleash
- https://gitlab.com/latamairlines/oper/emx/emx-intapi-runway/pipeline-notification
- https://gitlab.com/latamairlines/oper/emx/emx-intapi-runway/webhook-command
- https://gitlab.com/latamairlines/oper/emx/emx-intapi-runway/cicd-integrator
- https://gitlab.com/latamairlines/oper/emx/emx-intapi-runway/coderepo-integrator
Ecosystem
Runway interacts with:
- Firestore database: To store component, pipeline, and strategy information, etc.
- GitLab: For pipeline execution
- Pub/Sub: For pipeline files generated per component
- Slack: For user interaction
FAQ
Can I manage secrets with Runway?
Yes. Via the pipelines import-secrets-{env} (to import them)
and secrets-{env} (to inject them), where {env} is
the environment.
What is the Runway support channel?
There used to be a Slack channel; this is NO LONGER AVAILABLE. Support is now through Google Chat and Jira tickets: https://chat.google.com/room/AAQA4BKMNYo?cls=7
What stacks does Runway migration support?
Currently supported stacks are:
- Java 8
- Java 17
- Java 21
- Angular
- Cypress
- NestJS
- Node
Can I deploy Cloud Run with Runway?
Yes. Pipelines are available, especially for Java.
Where can I see the available commands?
Use /runway help to see all available commands.
You can also use /runway help {command}
for more details.
Example: /runway help execute
I used a Runway command in a Slack chat with a colleague
but nothing happened Unless the Runway app has been added to the conversation or channel, nothing will run because the bot will not receive the command.
The command doesn't work...
Slack is very sensitive to text formatting. Please check that commands do not contain bold, italic, etc. Any change in formatting can prevent the process from running correctly. If you've already checked that, verify that the repositories and commands are correct. If the issue continues, please open a Jira ticket describing the problem (and attach a screenshot if possible).
How do OpenAPI changes work? What do I need to do?
OpenAPI changes are still made in the corresponding file
deploy/endpoints/openapi.yaml.erb
I tagged someone in a Runway run in our channel but didn't get a response
The support team does not have access to eMANTTO Slack; users who might be there probably do not have access either.
Will Runway improve? Can I request improvements?
No, it is in freeze. Any questions, improvements, or changes should be discussed with the ANDES team.
Where can I see the Checkmarx report?
Checkmarx is no longer used for code analysis; it was replaced by GitLab Advanced SAST in December 2025.
Where can I see the quality report?
You can view it at https://codeprobing1.appslatam.com/