Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
3bda7f6
feat: Add Young Modulus & Poisson import from VTK mesh (#4021)
npillardou Apr 14, 2026
afa830a
fix: HIP build issues (#4028)
victorapm Apr 15, 2026
3a82102
remove semantic_pull_request check (#4031)
rrsettgast Apr 19, 2026
b6a2b7c
Fix inverse capillary pressure (#4027)
dkachuma Apr 21, 2026
0139435
allow for forks in different orgs to have different CI specifications…
rrsettgast Apr 22, 2026
5881085
add cpptrace
kdrienCG Apr 28, 2026
6a684f2
modify main to use cpptrace stacktrace
kdrienCG Apr 28, 2026
69ba20e
fix typo in include
kdrienCG Apr 28, 2026
39051fa
add missing parenthesis
kdrienCG Apr 28, 2026
8abfda8
reorganize main.cpp for readability
kdrienCG Apr 28, 2026
ae72640
fix: thermal prod well inflow der (#4024)
tjb-ltk Apr 30, 2026
10ade7d
reanable sccache using a legacy backup that uses existing GCP secret …
rrsettgast May 3, 2026
0c6b674
build(deps): bump the github-actions group across 1 directory with 2 …
dependabot[bot] May 4, 2026
e971774
fix assignement check (#4046)
rrsettgast May 4, 2026
a02d863
use cpptrace for GeosException
kdrienCG May 5, 2026
2977086
add cpptrace in buildGuide
kdrienCG May 5, 2026
473d53a
fix default in BuildProcess
kdrienCG May 5, 2026
5a981de
fix regex
kdrienCG May 5, 2026
0f9d202
add signal-safe stack trace method
kdrienCG May 5, 2026
e88e821
modify types
kdrienCG May 5, 2026
197c7ee
move include position
kdrienCG May 5, 2026
506fae7
feat: Add reference thermal conductivity (#3959)
dkachuma May 5, 2026
05b7dfc
fix: moved FieldApplicator (#4016)
jafranc May 6, 2026
5cec03f
document signalSafeStackTrace() reverting to LvArray
kdrienCG May 7, 2026
86ab9c6
update CI images (#4043)
rrsettgast May 7, 2026
e4334c2
use match_results::suffix instead of pos + len
kdrienCG May 7, 2026
1566e6e
remove unused exception parameter
kdrienCG May 7, 2026
2a8971d
feat: Add single phase viscosity dependency on temperature (#4029)
dkachuma May 8, 2026
4bb0217
Fixing macOS build (#4052)
castelletto1 May 9, 2026
4015dc1
fix: WaveEquation backward propagation and adjoint test (#4051)
bd713 May 13, 2026
f35e287
Refactor/oduran/speed up integration tests (#4054)
OmarDuran May 13, 2026
1374261
fix: Avoid overflow in event check (#4048)
dkachuma May 14, 2026
14f2c52
fix: Fault Perm Update for Contact solvers (#3999)
jafranc May 15, 2026
01a4f15
feat: Change to local Newell's normal (#3977)
jafranc May 16, 2026
299508e
Avoid method hiding warning (#4059)
dkachuma May 16, 2026
27cd5ae
fix: wellbore nonlinear thermal diffusion documentation example (#4041)
bd713 May 18, 2026
be9bfe1
fix: Fix SeismicityRate script. (#3441)
CusiniM May 18, 2026
40f1a05
fix: reporting invalid input of mechanical properties (#3717)
jhuang2601 May 18, 2026
dce5740
Draft (#4038)
bd713 May 18, 2026
634f2f9
refactor: split FieldSpecificationBase into two classes (#4025)
kdrienCG May 18, 2026
08bd4c6
Trim tests (#4055)
dkachuma May 19, 2026
a458b6e
fix: Fracture/3D cell co-location in parallel mesh redistribution (#4…
bd713 May 19, 2026
1a1a479
move formatter() into the .cpp
kdrienCG May 20, 2026
146f3f4
use the cpptrace forward declared (light) header
kdrienCG May 20, 2026
5c790b6
fix: Fix RLF coloring (#3814)
bd713 May 21, 2026
1a669ee
Surface generator fix for diffusion (#4061)
dkachuma May 21, 2026
c23e75b
Remove dependency on PVT package (#4057)
dkachuma May 22, 2026
426a9bb
fix: Change hard-coded PorousSolid model for ALM (#4062)
npillardou May 27, 2026
b92bb95
feat: CI - Add code rules checking action (#3914)
arng40 May 28, 2026
85d0453
move StackTrace dependencies
kdrienCG Jun 2, 2026
f779513
Refactor compositional multiphase fluid in preparation for thermal mo…
dkachuma Jun 2, 2026
1fb5e3d
Fix multifluid mole-fraction derivative initialization for GCC15 (#40…
dkachuma Jun 8, 2026
b21bec7
fix: MPI runs for smoke tests with surfaceGenerator (#4068)
jhuang2601 Jun 9, 2026
9045882
Merge branch 'develop' into feature/kdrienCG/betterStackTrace
kdrienCG Jun 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# If you are building the current `Dockerfile` to use codespaces in the cloud,
# you most likely want to define this variable in the `.devcontainer/devcontainer.json` file.
ARG GEOS_TPL_TAG
FROM docker.io/geosx/ubuntu20.04-gcc10:${GEOS_TPL_TAG}
FROM docker.io/geosx/ubuntu24.04-gcc13:${GEOS_TPL_TAG}

RUN apt-get update
RUN apt-get install -y \
Expand Down
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"build": {
"dockerfile": "Dockerfile",
"args": {
"GEOS_TPL_TAG": "344-968"
"GEOS_TPL_TAG": "349-1014"
}
},
"runArgs": [
Expand Down
106 changes: 106 additions & 0 deletions .github/ci/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
This directory contains runtime CI configuration consumed by `.github/workflows/ci_tests.yml`.

Two checked-in files drive behavior for each CI run:

1. `.github/ci/orgs/<org>.json` — per-organization choices (which provider, which runners, etc.).
2. `.github/ci/providers/<storage_provider>.json` — the shell commands and URI scheme for that
provider. Reused by any org that selects this provider.

Every field in both files is required. There are no defaults: the full behavior of a CI run is
always visible by reading these two JSON files and nothing else.

## Org files (`.github/ci/orgs/<org>.json`)

`<org>` matches `github.repository_owner`. The resolver also checks the lowercase form of the
owner name. Each file contains the config entry for that org directly; there is no top-level
wrapper keyed by the org name.

Required fields (all of them, always):

- `storage_provider`
Name of a file under `.github/ci/providers/`. Must match `^[A-Za-z0-9_-]+$`. Selects the upload
CLI and URI scheme.

- `sccache_profile`
Name of the sccache profile to pull from the inherited `SCCACHE_PROFILES_JSON` secret. Does not
need to match `storage_provider`, though it typically does.

- `integrated_tests_artifact_bucket_path`
Path under the bucket where integrated-test artifacts are uploaded. For providers whose URI
scheme is `<scheme>://<bucket>/<path>`, the first path segment is the bucket name.

- `artifact_public_url_base`
Public URL root for uploaded artifacts. The consumer builds each final URL as
`${artifact_public_url_base}/${integrated_tests_artifact_bucket_path}/${filename}`, so the base
must already include any bucket/host prefix required for a valid public URL. For GCS this is
typically `https://storage.googleapis.com`. For Cloudflare R2 public dev URLs it is the
`https://pub-<hash>.r2.dev` domain for the bucket.

- `artifact_public_url_bucket_scoped`
Boolean. Set `true` when `artifact_public_url_base` is rooted *inside* a specific bucket and
cannot traverse up to the account root (e.g. Cloudflare R2 public dev URLs of the form
`https://pub-<hash>.r2.dev`, which always resolve to one bucket). With the flag set, the
consumer strips the first path segment (the bucket name) from
`integrated_tests_artifact_bucket_path` before appending it to the base, so a base of
`https://pub-<hash>.r2.dev` and a path of `geosx/integratedTests` yields
`https://pub-<hash>.r2.dev/integratedTests/...` rather than doubling the bucket. Set `false`
for providers whose public root sits above the bucket (GCS, custom domains mapped to the
account, etc.).

- `runner_ca_bundle_host_paths`
Map keyed by runner label, not by workflow role. Each value is a host-side certificate bundle
path to bind into the container as `/certs/ca-bundle.crt`.
Example: `{"streak2": "/etc/pki/tls/certs/ca-bundle.crt"}`.
The resolver first looks for an exact runner-label match. If none is found, it falls back to
the prefix before the first `-`, so a runner label like `streak2-32core` will reuse the
`streak2` entry. Use `{}` for runners that do not need an LLNL-style outbound cert bundle.

- `runner_cuda_architectures`
Map keyed by runner label, not by workflow role. Each value is forwarded to CMake as
`CMAKE_CUDA_ARCHITECTURES` for CUDA jobs on that runner. The same exact-match then prefix
fallback used by `runner_ca_bundle_host_paths` applies. Example: `{"streak2": "86"}`.

- `runners`
Map from runner role to runner label. Required roles:
- `default`
- `cpu_heavy`
- `integrated_tests`
- `code_coverage`
- `cuda`

Each value is a single runner label string, e.g. `"ubuntu-22.04"` or `"streak2"`.

## Provider files (`.github/ci/providers/<storage_provider>.json`)

Required fields (all of them, always):

- `artifact_upload_command`
Shell command that uploads a single file. `$UPLOAD_SRC` and `$UPLOAD_DST` are exported by the
consumer before execution. The string is passed to `eval` — see the Security section below.

- `artifact_upload_pre_command`
Shell command that runs once per job before the first upload, typically to authenticate the
CLI and validate credentials. `$ARTIFACT_UPLOAD_CREDENTIALS_FILE` is exported by the consumer.
The string is passed to `eval`.

- `artifact_upload_uri_root`
URI scheme prefix the upload CLI expects, e.g. `"gs://"` or `"s3://"`. The consumer composes
`${artifact_upload_uri_root}${integrated_tests_artifact_bucket_path}/${filename}` as
`$UPLOAD_DST`.

## Security

The `artifact_upload_command` and `artifact_upload_pre_command` strings in every provider file
are passed to `eval` on the runner at upload time. They are executable shell, not inert
configuration. A change to those strings is a change to code that runs with the job's
environment — including credentials files, sccache tokens, and on self-hosted runners, the
runner host itself.

Review edits to `.github/ci/providers/*.json` with the same scrutiny you would apply to a
workflow YAML change. Never populate these strings from PR- or user-controllable sources.

## Secrets

Secret payloads (artifact upload credentials, sccache config) are supplied through GitHub
repo/org secrets and consumed in the reusable workflow. They are not part of the JSON files
described here.
16 changes: 16 additions & 0 deletions .github/ci/orgs/EarthFlowAI.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"storage_provider": "cloudflare",
"sccache_profile": "cloudflare",
"integrated_tests_artifact_bucket_path": "geosx/integratedTests",
"artifact_public_url_base": "https://pub-17b272fb651e459ca81dd0fd457099ed.r2.dev",
"artifact_public_url_bucket_scoped": true,
"runner_ca_bundle_host_paths": {},
"runner_cuda_architectures": { "thinkpad": "120" },
"runners": {
"default": "ubuntu-22.04",
"cpu_heavy": "32core",
"integrated_tests": "32core",
"code_coverage": "32core",
"cuda": "thinkpad"
}
}
16 changes: 16 additions & 0 deletions .github/ci/orgs/GEOS-DEV.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"storage_provider": "gcp",
"sccache_profile": "gcp",
"integrated_tests_artifact_bucket_path": "geosx/integratedTests",
"artifact_public_url_base": "https://storage.googleapis.com",
"artifact_public_url_bucket_scoped": false,
"runner_ca_bundle_host_paths": { "streak2": "/etc/pki/tls/certs/ca-bundle.crt" },
"runner_cuda_architectures": { "streak2": "86" },
"runners": {
"default": "ubuntu-22.04",
"cpu_heavy": "streak2",
"integrated_tests": "streak2-32core",
"code_coverage": "streak2",
"cuda": "streak2"
}
}
5 changes: 5 additions & 0 deletions .github/ci/providers/cloudflare.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"artifact_upload_command": "aws s3 cp --only-show-errors \"$UPLOAD_SRC\" \"$UPLOAD_DST\" --endpoint-url \"$ARTIFACT_UPLOAD_ENDPOINT\"",
"artifact_upload_pre_command": "if [[ -z \"$ARTIFACT_UPLOAD_CREDENTIALS_FILE\" || ! -f \"$ARTIFACT_UPLOAD_CREDENTIALS_FILE\" ]]; then echo \"ARTIFACT_UPLOAD_CREDENTIALS_FILE is required when artifact upload is enabled.\" >&2; exit 1; fi; if ! command -v aws >/dev/null; then echo \"aws CLI is required for cloudflare artifact upload backend.\" >&2; exit 1; fi; if ! jq -e \"type == \\\"object\\\"\" \"$ARTIFACT_UPLOAD_CREDENTIALS_FILE\" >/dev/null 2>&1; then echo \"::error::Invalid JSON object in artifact upload credentials file.\" >&2; exit 1; fi; ACCESS_KEY_ID=\"$(jq -er \".access_key_id // empty\" \"$ARTIFACT_UPLOAD_CREDENTIALS_FILE\")\"; SECRET_ACCESS_KEY=\"$(jq -er \".secret_access_key // empty\" \"$ARTIFACT_UPLOAD_CREDENTIALS_FILE\")\"; ENDPOINT=\"$(jq -er \".endpoint // empty\" \"$ARTIFACT_UPLOAD_CREDENTIALS_FILE\")\"; if [[ -z \"$ACCESS_KEY_ID\" || -z \"$SECRET_ACCESS_KEY\" || -z \"$ENDPOINT\" ]]; then echo \"::error::Cloudflare artifact upload credentials must include access_key_id, secret_access_key, and endpoint.\" >&2; exit 1; fi; export AWS_ACCESS_KEY_ID=\"$ACCESS_KEY_ID\"; export AWS_SECRET_ACCESS_KEY=\"$SECRET_ACCESS_KEY\"; export AWS_DEFAULT_REGION=\"${AWS_DEFAULT_REGION:-auto}\"; export AWS_EC2_METADATA_DISABLED=true; export ARTIFACT_UPLOAD_ENDPOINT=\"$ENDPOINT\"",
"artifact_upload_uri_root": "s3://"
}
5 changes: 5 additions & 0 deletions .github/ci/providers/gcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"artifact_upload_command": "CLOUDSDK_PYTHON=python3 gcloud storage cp --quiet -a publicRead \"$UPLOAD_SRC\" \"$UPLOAD_DST\"",
"artifact_upload_pre_command": "if [[ -z \"$ARTIFACT_UPLOAD_CREDENTIALS_FILE\" || ! -f \"$ARTIFACT_UPLOAD_CREDENTIALS_FILE\" ]]; then echo \"ARTIFACT_UPLOAD_CREDENTIALS_FILE is required when artifact upload is enabled.\" >&2; exit 1; fi; if ! jq -e . \"$ARTIFACT_UPLOAD_CREDENTIALS_FILE\" >/dev/null 2>&1; then echo \"::error::Invalid JSON in artifact upload credentials file.\" >&2; exit 1; fi; CLOUDSDK_PYTHON=python3 gcloud auth activate-service-account --key-file \"$ARTIFACT_UPLOAD_CREDENTIALS_FILE\"; CLOUDSDK_PYTHON=python3 gcloud config set storage/parallel_composite_upload_enabled True",
"artifact_upload_uri_root": "gs://"
}
Loading
Loading