Skip to content

feat(reusables): add working_directory input to rust-ci + elixir-ci#186

Merged
hyperpolymath merged 1 commit into
feat/rust-ci-reusablefrom
feat/ci-reusable-extensions
May 26, 2026
Merged

feat(reusables): add working_directory input to rust-ci + elixir-ci#186
hyperpolymath merged 1 commit into
feat/rust-ci-reusablefrom
feat/ci-reusable-extensions

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

Summary

Stacked on #174. Adds a working_directory string input (default .) to both reusable workflows so wrappers can target a sub-crate or sub-app layout without re-implementing the workflow.

What changes

rust-ci-reusable.yml:

  • New working_directory input (default .)
  • Each job declares defaults.run.working-directory: ${{ inputs.working_directory }}
  • hashFiles('Cargo.toml') guards now use hashFiles(format('{0}/Cargo.toml', inputs.working_directory))
  • Swatinem/rust-cache workspaces: parameter passes the working directory so caches are keyed per sub-crate

elixir-ci-reusable.yml:

  • New working_directory input (default .)
  • Job declares defaults.run.working-directory
  • mix.exs and mix.lock lookups + cache path: entries all consult the input via format()

Why

Audit of the 6 remaining elixir-ci.yml consumers + the 5 complex rust-ci.yml consumers (as of 2026-05-26):

elixir (3 of 6 need this):

  • burble → server/
  • feedback-o-tron → (working-directory)
  • verisimdb → (working-directory)

rust (1 of 5 needs this; the rest use matrix dimensions):

  • reasonably-good-token-vault → per-crate (vault-broker, rgtv-cli)

Explicitly out of scope

Multi-OS / multi-Rust-version / multi-crate matrices and cross build support are deferred. The 4 matrix-using rust-ci repos each use a different matrix dimension (os / rust / workspaces / manifests) — no single shared abstraction fits cleanly. They stay bespoke for now; re-evaluate after the current wrapper sweep completes.

Repo Matrix dimension
julia-the-viper os (linux/macos/windows)
verisimiser rust (1.85, stable)
reasonably-good-token-vault crate (multi-workspace — covered by working_directory per-job)
verisimdb manifest (fuzz/Cargo.toml + rust-core/fuzz/Cargo.toml) + coverage + audit

Test plan

🤖 Generated with Claude Code

Stacked on #174. Adds a `working_directory` string input (default `.`)
to both reusable workflows so wrappers can target a sub-crate or
sub-app layout without re-implementing the workflow.

What changes
------------

rust-ci-reusable.yml:
  - new `working_directory` input (default `.`)
  - each job declares `defaults.run.working-directory: ${{ inputs.working_directory }}`
  - `hashFiles('Cargo.toml')` guards now use
    `hashFiles(format('{0}/Cargo.toml', inputs.working_directory))`
  - Swatinem/rust-cache `workspaces:` parameter now passes the working
    directory so caches are keyed correctly per sub-crate

elixir-ci-reusable.yml:
  - new `working_directory` input (default `.`)
  - job declares `defaults.run.working-directory`
  - `mix.exs` and `mix.lock` lookups + cache `path:` entries all
    consult the input via `format()`

Why
---

Audit of the 6 remaining elixir-ci.yml consumers and the 5 complex
rust-ci.yml consumers (as of 2026-05-26):

elixir (3 of 6 need this):
  - burble       → server/
  - feedback-o-tron → (working-directory)
  - verisimdb    → (working-directory)

rust (1 of 5 needs this; the rest use matrix dimensions, see below):
  - reasonably-good-token-vault → per-crate (vault-broker, rgtv-cli)

Explicitly out of scope
-----------------------

Multi-OS / multi-Rust-version / multi-crate matrices and `cross build`
support are deferred. The 4 matrix-using rust-ci repos each use a
different matrix dimension (`os` / `rust` / `workspaces` / `manifests`)
— no single shared abstraction fits cleanly. They stay bespoke for now;
re-evaluate after this lands and the wrapper sweep completes.

Test plan
---------

  * YAML parse OK locally (python3 yaml.safe_load both files).
  * Cannot validate the input semantics without a runner. Wrapper end-
    to-end validation happens post-merge, same circular-validation
    caveat as PR #174 (pull_request runs the target-branch workflow).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hyperpolymath hyperpolymath merged commit 8c43e1b into feat/rust-ci-reusable May 26, 2026
12 checks passed
@hyperpolymath hyperpolymath deleted the feat/ci-reusable-extensions branch May 26, 2026 11:43
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.

1 participant