Development Pipelines
Arda’s development pipelines automate the transformation of source code into deployable artifacts and their promotion through environments. Pipelines are implemented as GitHub Actions workflows defined in each component repository.
Pipeline Responsibilities
Section titled “Pipeline Responsibilities”| Stage | Responsibility |
|---|---|
| Build | Compile Kotlin sources, run unit tests, package JARs |
| Publish | Push Docker images and Helm charts to artifact repositories |
| Deploy | Install/upgrade Helm chart in a target Kubernetes environment |
| Verify | Run API integration tests against the deployed component |
Deployment Mechanism
Section titled “Deployment Mechanism”Components are deployed as Helm charts to the Kubernetes (EKS) cluster in the target Environment. The helm-deploy-pipeline-action GitHub Action is the standard deployment tool. It:
- Reads CloudFormation outputs from the target Infrastructure and Partition (
read-cloudformation-values.cmd) - Resolves runtime configuration values (API Gateway URLs, database endpoints, Cognito parameters) into Helm values
- Executes
helm upgrade --installwith the resolved values
Reading CloudFormation Outputs
Section titled “Reading CloudFormation Outputs”read-cloudformation-values.cmd maps CloudFormation export names to Helm value paths:
readExport path.to.key.extras.some.myKey ${PURPOSE}-API-MyKeyConfiguration values flow into the Component via:
application.conf/ module-specific.conffilesconfigmap.yamlin the Helm chart templatelintValuesinbuild.gradle.ktsfor local lint validation
Local Deployment
Section titled “Local Deployment”To deploy locally to a Kubernetes cluster for development and testing:
./gradlew clean helmInstallToLocalThis resolves configuration from application-test.conf and installs the chart into the local cluster.
Known Pipeline Behaviors
Section titled “Known Pipeline Behaviors”addRoleObserver Mock Cascade Failure
Section titled “addRoleObserver Mock Cascade Failure”When a new method is added to a widely-mocked interface and is called during object construction (init block), it causes widespread test failures across unrelated modules. Fix pattern: locate all mockk<ServiceType>() usages across the codebase and add explicit stubs for the new method. This is a mechanical multi-file change requiring no logic changes.
API Test Flakiness on First Run
Section titled “API Test Flakiness on First Run”The first API test run against a freshly deployed local Kubernetes pod may fail due to pod startup timing. Retry after a 5-second delay before investigating genuine failures.
Upload Tests Require Infrastructure
Section titled “Upload Tests Require Infrastructure”Upload-related API tests depend on S3/LocalStack infrastructure that may not be present in all CI environments. Pass --ignore Upload when checking API test results in environments without S3.
Environment Promotion
Section titled “Environment Promotion”The current promotion path is:
- Developer builds and tests locally
- CI pipeline deploys to
Alpha002-devon merge to the main branch - Manual promotion to
Alpha002-stagefor pre-release validation - Production deployment requires explicit operator action
Copyright: © Arda Systems 2025-2026, All rights reserved