Skip to content

Conversation

Copy link

Copilot AI commented Oct 14, 2025

Overview

This PR adds comprehensive GitHub Actions CI/CD workflows to automate building, testing, and publishing Spring Data FalkorDB artifacts.

Changes

🔄 New Workflows

1. Build & Test Workflow (.github/workflows/build.yml)

Automatically validates all code changes on PRs and pushes to main/release branches:

  • Sets up Java 17 (Temurin) with Maven caching
  • Starts FalkorDB service container for integration tests
  • Runs full Maven build with checkstyle validation
  • Uploads test results and publishes test reports
  • Includes concurrency control to cancel outdated PR builds
  • Proper permissions for checks and PR comments

2. Publish Workflow (.github/workflows/publish.yml)

Automatically publishes SNAPSHOT artifacts to Maven repository on merges:

  • Triggers on push to main/release branches and supports manual dispatch
  • Builds project with full test suite
  • Deploys artifacts to Maven repository using Artifactory credentials
  • Uploads build artifacts with 30-day retention
  • Safe concurrency settings prevent deployment conflicts

📚 Documentation

ci/README.md

Comprehensive CI/CD documentation covering:

  • Detailed workflow descriptions and triggers
  • Setup instructions for maintainers and contributors
  • Environment variable reference
  • Troubleshooting guide
  • Migration notes from Jenkins
  • Local testing instructions

.github/WORKFLOWS.md

Quick reference guide providing:

  • Overview table of all workflows
  • Configuration instructions
  • Manual dispatch guide
  • Best practices
  • Troubleshooting tips

Updated README.md

  • Added build status badge
  • Added CI/CD section to Contributing guide
  • Links to detailed documentation

Key Features

  • Automatic CI on PRs - Immediate feedback for contributors
  • FalkorDB Integration - Service container provides FalkorDB for tests
  • Test Reporting - Automated test result uploads and reports
  • SNAPSHOT Publishing - Automatic artifact deployment on merge
  • Build Caching - Maven dependencies cached for faster builds
  • Security - Minimal permissions following least-privilege
  • Visibility - Step summaries show build status at a glance

Required Configuration

To enable publishing, repository maintainers need to add these GitHub secrets:

  • ARTIFACTORY_USERNAME - Username for Maven repository
  • ARTIFACTORY_PASSWORD - Password/token for Maven repository

Testing

Both workflows have been validated for:

  • Correct YAML syntax
  • Proper permission scopes
  • Appropriate concurrency settings
  • Health checks for FalkorDB service

Compatibility

These workflows complement the existing Jenkinsfile and work alongside it during any transition period. The workflows use the same CI scripts (ci/test.sh, ci/clean.sh) and settings.xml configuration.

Closes #<issue_number>

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • ge.spring.io
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED -classpath /home/REDACTED/work/spring-data-falkordb/spring-data-falkordb/.mvn/wrapper/maven-wrapper.jar -Dmaven.home=/home/REDACTED/work/spring-data-falkordb -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/spring-data-falkordb/spring-data-falkordb org.apache.maven.wrapper.MavenWrapperMain clean compile -DskipTests -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true (dns block)
  • jfrog-prod-use1-shared-virginia-main.s3.amazonaws.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED -classpath /home/REDACTED/work/spring-data-falkordb/spring-data-falkordb/.mvn/wrapper/maven-wrapper.jar -Dmaven.home=/home/REDACTED/work/spring-data-falkordb -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/spring-data-falkordb/spring-data-falkordb org.apache.maven.wrapper.MavenWrapperMain clean compile -DskipTests -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>Add CI (build, tests, publish)</issue_title>
<issue_description>Add to github actions CI

Please review the CI folder and the pom.xml.
Then create CI workflows:

  1. Build & Tests on PRs and Merge
  2. Publish to Maven repository </issue_description>

Comments on the Issue (you are @copilot in this section)

Fixes #1


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

@coderabbitai
Copy link

coderabbitai bot commented Oct 14, 2025

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Comment @coderabbitai help to get the list of available commands and usage tips.


- name: Publish Test Report
if: always()
uses: dorny/test-reporter@v1

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Build & Test' step
Uses Step
uses 'dorny/test-reporter' with ref 'v1', not a pinned commit hash
Copilot AI changed the title [WIP] Add CI workflows for build, tests, and publish Add GitHub Actions CI workflows for build, tests, and Maven publishing Oct 14, 2025
Copilot AI requested a review from gkorland October 14, 2025 19:01
Copilot finished work on behalf of gkorland October 14, 2025 19:01
@shahar-biron shahar-biron marked this pull request as ready for review October 15, 2025 07:44
Copy link
Collaborator

@shahar-biron shahar-biron left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving CI workflows PR. The workflows look comprehensive and will greatly improve the development experience with automated testing and publishing.

@shahar-biron shahar-biron merged commit 2ef5d0b into main Oct 15, 2025
3 checks passed
@shahar-biron shahar-biron deleted the copilot/add-ci-workflows branch October 15, 2025 07:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add CI (build, tests, publish)

3 participants