Skip to content

ci: add Harness CI pipeline (FME-17651) - #630

Open
sanzmauro wants to merge 16 commits into
developmentfrom
harness-pipeline/FME-17651
Open

ci: add Harness CI pipeline (FME-17651)#630
sanzmauro wants to merge 16 commits into
developmentfrom
harness-pipeline/FME-17651

Conversation

@sanzmauro

@sanzmauro sanzmauro commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Migrates .github/workflows/ci.yml to Harness CI pipeline at .harness/pipeline.yaml
  • Matrix: Ruby 2.7.8 + 3.2.2 using mise for Ruby install on Cloud runners
  • Redis via apt-get, SonarQube scan + quality gate on Ruby 3.2.2 only
  • Pipeline registered in Harness under org PROD / project Harness_Split via fmegithubharnessgitops connector

Migrates .github/workflows/ci.yml to Harness pipeline.
Matrix: Ruby 2.5.0 + 3.2.2, Redis, SonarQube on 3.2.2.

AI-Session-Id: 9153b465-d572-4ac3-be0e-961ad258c1e0
AI-Tool: claude-code
AI-Model: unknown
- Add RVM sourcing to Fix Coverage Paths step to ensure Ruby is available
- Change Post Quality Gate step shell from Sh to Bash for proper script semantics

AI-Session-Id: 9153b465-d572-4ac3-be0e-961ad258c1e0
AI-Tool: claude-code
AI-Model: unknown
AI-Session-Id: 9a0ab88e-2949-4146-8ca0-48dd019332ad
AI-Tool: claude-code
AI-Model: unknown
Replace RVM-based Ruby install with official ruby:<version> container
images per matrix version. Redis runs as a Background container step.
SonarQube uses sonarsource/sonar-scanner-cli:latest image.
Simplifies pipeline: no apt-get, no RVM, no Java setup needed.

AI-Session-Id: 9a0ab88e-2949-4146-8ca0-48dd019332ad
AI-Tool: claude-code
AI-Model: unknown
AI-Session-Id: 9a0ab88e-2949-4146-8ca0-48dd019332ad
AI-Tool: claude-code
AI-Model: unknown
AI-Session-Id: 9a0ab88e-2949-4146-8ca0-48dd019332ad
AI-Tool: claude-code
AI-Model: unknown
AI-Session-Id: 9a0ab88e-2949-4146-8ca0-48dd019332ad
AI-Tool: claude-code
AI-Model: unknown
…ages

AI-Session-Id: 9a0ab88e-2949-4146-8ca0-48dd019332ad
AI-Tool: claude-code
AI-Model: unknown
@sanzmauro
sanzmauro requested a review from a team as a code owner July 28, 2026 00:33
…stubs

- Wrap SPLITCLIENT_ENV='prod' in sync_manager_spec with ensure block so
  env is always reset even if the test raises, preventing thread leaks
  into subsequent specs
- Add rbSince=-1 to two splitChanges stubs in split_manager_spec that
  were missing the parameter added in the rbs-old-spec feature
- Add Redis readiness check step in Harness pipeline before running tests

AI-Session-Id: 9a0ab88e-2949-4146-8ca0-48dd019332ad
AI-Tool: claude-code
AI-Model: unknown
AI-Session-Id: 9a0ab88e-2949-4146-8ca0-48dd019332ad
AI-Tool: claude-code
AI-Model: unknown
AI-Session-Id: 9a0ab88e-2949-4146-8ca0-48dd019332ad
AI-Tool: claude-code
AI-Model: unknown
…ssertions

Redis smembers returns set members in non-deterministic order, making
index-based impression assertions for :testing and :testing222 flaky.
Replace with find { |i| i[:split_name] == :X } in all four affected
flag_set/flag_sets impression test blocks.

AI-Session-Id: 9a0ab88e-2949-4146-8ca0-48dd019332ad
AI-Tool: claude-code
AI-Model: unknown
The 'processing split iff update event' test was flaky because
process_subsystem_ready fires sync_all async after SSE connect, which
could fetch splits_push3 (adding push_test) before the SPLIT_UPDATE
SSE event arrived with the inline bilal_split payload.

Replace the since=1585948850110 stub with a no-change response
(till == since) so the background sync never advances changeNumber
past pcn, ensuring the inline update path always succeeds.

AI-Session-Id: 9a0ab88e-2949-4146-8ca0-48dd019332ad
AI-Tool: claude-code
AI-Model: unknown
…exing

SonarQube was failing with 'File can\''t be indexed twice' because
sonar.sources=. included spec/ in main sources while SonarQube also
auto-detected spec/ as test files. Scoping sources to lib/ and
explicitly declaring spec/ as tests resolves the conflict.

AI-Session-Id: 9a0ab88e-2949-4146-8ca0-48dd019332ad
AI-Tool: claude-code
AI-Model: unknown
@sonarqube-pull-requests

Copy link
Copy Markdown

Quality Gate passed Quality Gate passed

Issues
0 New issues
0 Accepted issues

Measures
0 Security Hotspots
No data about Coverage
0.0% Duplication on New Code

See analysis details on SonarQube

AI-Session-Id: 9a0ab88e-2949-4146-8ca0-48dd019332ad
AI-Tool: claude-code
AI-Model: unknown
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.

2 participants