Skip to content

Commit ebca65b

Browse files
committed
ci: add Harness migration report for elixir-thin-client
AI-Session-Id: d313020e-b6fc-439d-8bc0-7f32d644f376 AI-Tool: claude-code AI-Model: unknown
1 parent 920926f commit ebca65b

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
## Harness Migration Report — 2026-07-29
2+
3+
**Repo:** splitio/elixir-thin-client
4+
**Language:** Elixir (versions: 1.14.0 / OTP 25, 1.19.4 / OTP 28)
5+
**Status:** ❌ FAILED
6+
7+
### Steps
8+
| Step | Result | Notes |
9+
|------|--------|-------|
10+
| Detect context || Elixir, elixir-thin-client |
11+
| Read GH workflow || .github/workflows/ci.yml |
12+
| Generate Harness YAML | ✅ | Assumptions made:
13+
- Used mise to install both Erlang/OTP and Elixir versions (mirroring the erlef/setup-beam behavior from the GitHub Actions workflow), since no dedicated Elixir setup tool was specified in the rules.
14+
- Used a matrix `include` list with paired `elixirVersion`/`otpVersion` values (1.14.0/25 and 1.19.4/28) since Elixir and OTP versions must be paired together rather than combined as an unconstrained matrix.
15+
- SonarQube scanning and quality-gate posting were not present in the original GitHub Actions workflow; added them per the Harness constants/rules (sonar.sources=lib, sonar.tests=test), gated to run only on the latest version (1.19.4), following the ruby-client reference pattern.
16+
- No coverage report path was available for Elixir (no coverage tool specified in the workflow), so sonar.coverage.exclusions=test/** was set instead of a coverage report path.
17+
- mix.local.hex/mix local.rebar --force added before deps.get since mise-installed Elixir typically needs Hex/Rebar bootstrapped (not explicit in the original workflow but implied by erlef/setup-beam's default behavior).
18+
- Dialyzer step runs on every matrix entry (as in the original workflow) rather than only the latest version.
19+
- Input set file path: .harness/orgs/PROD/projects/Harness_Split/pipelines/elixirthinclient/input_sets/elixirthinclientinputset.yaml
20+
- Pipeline file path assumed: .harness/pipeline.yaml (not created/written to disk, only returned as YAML per instructions). |
21+
| Write pipeline file || .harness/pipeline.yaml |
22+
| Create pipeline in Harness || pipeline=success |
23+
| Create webhook trigger || created, webhook=SUCCESS (id: 658672410) |
24+
| Dry-run || https://harness0.harness.io/ng/account/l7B_kbSEQD2wjrM7PShm5w/all/orgs/PROD/projects/Harness_Split/pipelines/elixirthinclient/deployments/OhpqrNV5REeRmQvultOmug/pipeline |
25+
26+
**Dry-run failed — PR not opened. Manual investigation required.**
27+
28+
**Execution URL:** https://harness0.harness.io/ng/account/l7B_kbSEQD2wjrM7PShm5w/all/orgs/PROD/projects/Harness_Split/pipelines/elixirthinclient/deployments/OhpqrNV5REeRmQvultOmug/pipeline
29+
30+
**Failure:** Both matrix stages (elixir 1.14.0/otp 25 and elixir 1.19.4/otp 28) failed in the "Install_Erlang_and_Elixir" step. The command `mise use --global erlang@null` / `elixir@null` used a literal "null" instead of the actual version numbers, causing: "mise ERROR Failed to install core:erlang@null: HTTP status client error (404 Not Found) for url (https://builds.hex.pm/builds/otp/amd64/ubuntu-22.04/OTP-null.tar.gz)". This indicates the pipeline step's shell command is not correctly interpolating the matrix variables (elixirVersion/otpVersion or similarly named erlang version) — check the pipeline YAML's variable expressions in the Install_Erlang_and_Elixir step (.harness/pipeline.yaml on branch harness-pipeline/2026-07-29).

0 commit comments

Comments
 (0)