feat(ci): EM-33 - Set Up Automated Gradle Build Pipeline with GitHub Actions#45
Open
devin-ai-integration[bot] wants to merge 2 commits intofeat/microservices-migration-v2from
Open
Conversation
…d libraries - Add reusable Gradle build workflow with JDK 17, dependency caching, test reports - Add per-service CI workflows: order, consumer, courier, restaurant - Add shared libraries CI workflow for libs/* with dependency ordering - Configure path-based triggers to only rebuild affected services - Add concurrency groups to cancel superseded runs - Add build status badges to README.md Ref: EM-33 Co-Authored-By: Alex Baker <alexandercommander453@gmail.com>
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
Check if the target subproject exists in settings.gradle before attempting to build. Emits a warning annotation and skips build/test steps when the project is not yet wired up. Co-Authored-By: Alex Baker <alexandercommander453@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds GitHub Actions CI workflows for each microservice and the shared library layer. Uses a reusable workflow pattern to DRY up the build/test/cache logic, with per-service caller workflows that define path-based triggers.
Files added:
reusable-gradle-build.yml— shared workflow (JDK 17 via Temurin, Gradle dependency caching, build, test, artifact upload)ci-order-service.yml,ci-consumer-service.yml,ci-courier-service.yml,ci-restaurant-service.yml— per-service callersci-libs.yml— shared libraries workflow with dependency ordering (ftgo-common→ftgo-common-jpa,ftgo-common-swagger,ftgo-domain;ftgo-test-utilindependent)README.md— build status badges for all 5 workflowsEach workflow triggers on push/PR to
mainandfeat/microservices-migration-v2, filtered to only fire when relevant paths change (service source, dependent libs, build-logic, gradle config, workflow files). Concurrency groups cancel superseded runs.Updates since last revision
settings.gradle. It runs./gradlew projects, checks for the subproject in the output, and emits a::warning::annotation if missing. This means CI passes green today, but the actual build/test steps are being skipped entirely until a future ticket wires up the new module includes.Review & Testing Checklist for Human
settings.gradleyet). Thebuildandteststeps have never actually executed. Once a future ticket addsservices/*andlibs/*tosettings.gradle, re-run these workflows and confirm the Gradle project path conversion (sed 's|/|:|g'→ e.g.:services:order-service:build) resolves correctly../gradlew projects 2>/dev/null | grep -q ":${GRADLE_PROJECT}"against Gradle 4.10.2 output. Verify this pattern still holds if/when the Gradle wrapper version is upgraded (output format may change).libs/ftgo-common/**andlibs/ftgo-domain/**based on currentbuild.gradledeps. If services gain new lib dependencies, these filters must be updated manually. Verify this matches the intended dependency graph../gradlew :module:buildalready runs tests as part of the Gradle lifecycle. The separate:teststep is a no-op in practice — decide if it should be kept for clarity or removed to save build time.Notes
_template-serviceintentionally has no CI workflow since it's a scaffold, not a deployable service.ci-libs.ymlworkflow usesneeds:to enforce build ordering that mirrors the inter-library dependency graph.upload-artifactstep runs unconditionally (if: always()) and will emit a "no files found" warning when the subproject is skipped — this is cosmetic only.Requested by: @abj453demo
Link to Devin run