Skip to content

Feature/release ci#123

Merged
jowr merged 11 commits into
modelica-3rdparty:masterfrom
jowr:feature/release_ci
Oct 30, 2025
Merged

Feature/release ci#123
jowr merged 11 commits into
modelica-3rdparty:masterfrom
jowr:feature/release_ci

Conversation

@jowr
Copy link
Copy Markdown
Collaborator

@jowr jowr commented Oct 29, 2025

Summary by CodeRabbit

  • New Features

    • Added macOS ARM (M1/M2) binaries and MSYS/OpenModelica multi-bitness builds.
  • Chores

    • Version bumped to 4.1.1
    • Updated CoolProp to v7.1.0
    • Clarified Modelica Standard Library compatibility to 4.1.x/4.0.x
  • Improvements

    • CI now produces per-ref/per-platform packaged artifacts, uses per-ref naming, restores caches, and performs conditional tag-based releases with cleanup of obsolete artifacts
  • Documentation

    • Added v4.1.1 changelog entry and updated project/docs version numbers

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Oct 29, 2025

Warning

Rate limit exceeded

@jowr has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 8 minutes and 20 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 6e55c09 and e3d57c2.

📒 Files selected for processing (1)
  • .github/workflows/ci.yml (8 hunks)

Walkthrough

Bumps release to 4.1.1 and refactors CI: adds get-coolprop and get-msys-openmodelica jobs, per-ref/per-platform artifact packaging and naming, cache-driven source preparation, conditional tag-based releases with obsolete-artifact deletion, and documentation/changelog/version updates.

Changes

Cohort / File(s) Summary
CI Workflow & Caching
.github/workflows/ci.yml
Reworks artifact handling to per-ref packaging and per-platform naming; adds get-coolprop and get-msys-openmodelica jobs with cache restore/save and outputs; derives ref_name (tag vs branch); zips/uploads per-ref ExternalMedia artifacts; conditionally creates releases for tags and deletes obsolete binaries-* artifacts. Adjusts build job needs and artifact names.
Platform Builds / Artifact Names
.github/.../ci.yml (build-* jobs)
Introduces build-msys-openmodelica; changes artifact naming to binaries-macos-*, binaries-linux-x86_64, binaries-windows-<toolset>-<arch>, binaries-windows-msys-openmodelica-<bitness>; adds multi-bitness matrix and integrates OMDev/CoolProp outputs as dependencies.
Version & Packaging
Projects/CMakeLists.txt, Modelica/ExternalMedia/package.mo, Projects/Doxyfile
Bumps project, package, and Doxygen versions to 4.1.1; updates package annotation conversion baseline to include noneFromVersion="4.1.0".
Documentation & Changelog
README_changelog.md, README.md
Adds v4.1.1 changelog entry (MSL 4.1.0, CoolProp v7.1.0, macOS ARM binaries); minor changelog formatting tweaks; generalizes README version references from 4.1.0/4.0.0 to 4.1.x/4.0.x.

Sequence Diagram(s)

sequenceDiagram
    actor CI as GitHub Actions
    participant Cache as Cache Store
    participant Prep as get-coolprop / get-msys-openmodelica
    participant Build as build-* jobs
    participant Artifact as Artifact Storage
    participant Proc as Per-Ref Processor
    participant Release as GitHub Release

    CI->>Cache: Restore caches (CoolProp / OMDev)
    Cache-->>Prep: Cache restored
    Prep-->>CI: outputs (coolprop-hash, coolprop-check, omdev-hash)
    CI->>Build: Run platform builds (needs outputs)
    Build-->>Artifact: Upload `binaries-*` per-platform artifacts

    rect rgba(130,180,220,0.08)
      note over CI,Proc: Per-ref packaging & conditional publish
      CI->>Proc: Derive ref_name (tag vs branch)
      Proc->>Proc: Create ExternalMedia-{ref_name}.pdf/.zip
    end

    alt ref is tag
        Proc->>Release: Create GitHub release with ExternalMedia-{ref_name} artifacts
        Release-->>CI: Release created
        CI->>Artifact: Delete obsolete `binaries-*` artifacts
    else branch build
        Proc->>Artifact: Upload ExternalMedia-{ref_name} artifacts
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Attention areas:
    • .github/workflows/ci.yml conditional logic for ref_name and tag vs branch flows
    • Cache key correctness and outputs from get-coolprop / get-msys-openmodelica
    • Consistency of artifact naming and deletion steps across all build jobs

Possibly related PRs

  • Feature/ci updates #122 — Overlapping CI workflow changes (CoolProp/OMDev fetching, artifact naming/packaging and release behavior).

Suggested reviewers

  • casella

Poem

🐰 I hop through CI with a zipper and grin,

Naming artifacts per-ref, neat and thin,
Caches stashed, builds humming one by one,
ARM joins the dance beneath the sun,
A rabbit cheers: hello 4.1.1!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Title Check ❓ Inconclusive The PR title "Feature/release ci" is formatted as a branch naming convention rather than a clear PR title and is too generic to effectively communicate the scope of changes. While the title does reference "ci" and "release" which relate to some aspects of the changeset, it fails to convey the primary nature of the changes: a comprehensive rework of the CI workflow with per-ref packaging, cache management for CoolProp and OMDev, new jobs (get-coolprop, get-msys-openmodelica, build-msys-openmodelica), and conditional release workflows. A teammate scanning the PR history would not understand the substantial changes from this title alone, and it reads more like a placeholder than a descriptive summary of the work performed. Consider revising the title to be more specific and descriptive of the main changes, such as "Rework CI workflow with per-ref packaging, cache management, and conditional releases" or "Refactor CI/CD pipeline for per-ref artifact handling and automated releases." This would better communicate the scope and intent of the changes to reviewers and future maintainers reviewing the project history.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5b0f938 and ccc8c01.

📒 Files selected for processing (3)
  • .github/workflows/ci.yml (6 hunks)
  • Projects/CMakeLists.txt (1 hunks)
  • README_changelog.md (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#117
File: .github/workflows/ci.yml:15-18
Timestamp: 2025-10-21T08:01:59.111Z
Learning: In the ExternalMedia GitHub Actions workflow (.github/workflows/ci.yml), the `docs` artifact should remain separate from the binaries merge pattern. Only the `binaries-docs` artifact (containing the PDF manual) should be included in the binary distribution, while the `docs` artifact (HTML documentation) is deployed separately to GitHub Pages.
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#122
File: Projects/CMakeLists.txt:73-74
Timestamp: 2025-10-21T07:36:38.359Z
Learning: In the ExternalMedia project, CMakeLists.txt intentionally uses CoolProp v6.7.0 (downloaded from sourceforge zipfile) while CI workflows use v7.1.0 (git checkout). This is because the CoolProp zipfile build is broken on Windows after v6.7.0, and this may be resolved in v7.2.0.
📚 Learning: 2025-10-21T07:36:38.359Z
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#122
File: Projects/CMakeLists.txt:73-74
Timestamp: 2025-10-21T07:36:38.359Z
Learning: In the ExternalMedia project, CMakeLists.txt intentionally uses CoolProp v6.7.0 (downloaded from sourceforge zipfile) while CI workflows use v7.1.0 (git checkout). This is because the CoolProp zipfile build is broken on Windows after v6.7.0, and this may be resolved in v7.2.0.

Applied to files:

  • README_changelog.md
  • Projects/CMakeLists.txt
  • .github/workflows/ci.yml
📚 Learning: 2025-10-21T08:01:59.111Z
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#117
File: .github/workflows/ci.yml:15-18
Timestamp: 2025-10-21T08:01:59.111Z
Learning: In the ExternalMedia GitHub Actions workflow (.github/workflows/ci.yml), the `docs` artifact should remain separate from the binaries merge pattern. Only the `binaries-docs` artifact (containing the PDF manual) should be included in the binary distribution, while the `docs` artifact (HTML documentation) is deployed separately to GitHub Pages.

Applied to files:

  • .github/workflows/ci.yml
🪛 actionlint (1.7.8)
.github/workflows/ci.yml

44-44: the runner of "softprops/action-gh-release@v1" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🪛 LanguageTool
README_changelog.md

[uncategorized] ~6-~6: The operating system from Apple is written “macOS”.
Context: ...updated to v7.1.0 - Added binaries for MacOS ARM (M1/M2) ## v4.1.0 - 2025/08/01 - ...

(MAC_OS)

🪛 markdownlint-cli2 (0.18.1)
README_changelog.md

4-4: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)


5-5: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)


6-6: Unordered list indentation
Expected: 0; Actual: 1

(MD007, ul-indent)

🔇 Additional comments (6)
Projects/CMakeLists.txt (1)

20-22: Version bump to 4.1.1 looks good.

Changes align with the release version and are propagated correctly through APP_VERSION and library version properties.

README_changelog.md (1)

3-3: Placeholder release date should be finalized.

Line 3 has placeholder date 2025/11/XX. Ensure this is set to the actual release date before merging.

.github/workflows/ci.yml (4)

10-49: Conditional release and artifact handling is well structured.

The workflow correctly implements:

  • Non-tag builds: Upload merged binaries as ExternalMedia-binaries artifact with -latest suffix
  • Tag builds: Create GitHub release with tag-specific PDF/ZIP files
  • Dynamic naming based on Git reference (tag name vs "latest" branch placeholder)
  • Proper artifact merge pattern (binaries-*) that includes platform binaries and documentation PDF while keeping HTML docs separate for GitHub Pages deployment

51-92: Platform-specific artifact naming is consistent and descriptive.

All platform builds now use clear naming convention:

  • binaries-macos-{arch} (arm64, x86_64)
  • binaries-linux-x86_64
  • binaries-windows-{toolset}-{arch} (e.g., v143-Win32, v143-x64)
  • binaries-windows-msys-openmodelica

This improves clarity during the merge and release stages.

Also applies to: 132-132, 179-179, 234-234


195-206: Windows MSYS OpenModelica caching improvement is sound.

The hash-based caching strategy (using git ls-remote to detect upstream changes) reduces build time by avoiding unnecessary OMDev clones while ensuring freshness when the remote changes.


264-268: MSYS build artifact upload remains commented out—verify this is intentional.

The build-msys job downloads and builds successfully but does not upload artifacts (lines 264–268 are commented out). Confirm this is expected (i.e., MSYS build is for testing/compatibility only and does not contribute to releases).

Comment thread .github/workflows/ci.yml Outdated
Comment thread README_changelog.md Outdated
Comment thread README_changelog.md Outdated
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
.github/workflows/ci.yml (1)

195-206: Consider more descriptive cache key naming.

The OMDev cache key uses pre-commit- prefix, which is unconventional for this context. Consider renaming to something more descriptive like windows-omdev- to clarify the cache's purpose:

      id: cache-omdev
      with:
        path: C:/OMDev
-       key: pre-commit-${{ hashFiles('omdev_hash.txt') }}
+       key: windows-omdev-${{ hashFiles('omdev_hash.txt') }}

The hash-based invalidation pattern is solid and will automatically refresh the cache when upstream OMDev changes.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ccc8c01 and 6eaf043.

📒 Files selected for processing (2)
  • .github/workflows/ci.yml (6 hunks)
  • README_changelog.md (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#117
File: .github/workflows/ci.yml:15-18
Timestamp: 2025-10-21T08:01:59.111Z
Learning: In the ExternalMedia GitHub Actions workflow (.github/workflows/ci.yml), the `docs` artifact should remain separate from the binaries merge pattern. Only the `binaries-docs` artifact (containing the PDF manual) should be included in the binary distribution, while the `docs` artifact (HTML documentation) is deployed separately to GitHub Pages.
📚 Learning: 2025-10-21T08:01:59.111Z
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#117
File: .github/workflows/ci.yml:15-18
Timestamp: 2025-10-21T08:01:59.111Z
Learning: In the ExternalMedia GitHub Actions workflow (.github/workflows/ci.yml), the `docs` artifact should remain separate from the binaries merge pattern. Only the `binaries-docs` artifact (containing the PDF manual) should be included in the binary distribution, while the `docs` artifact (HTML documentation) is deployed separately to GitHub Pages.

Applied to files:

  • .github/workflows/ci.yml
📚 Learning: 2025-10-21T07:36:38.359Z
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#122
File: Projects/CMakeLists.txt:73-74
Timestamp: 2025-10-21T07:36:38.359Z
Learning: In the ExternalMedia project, CMakeLists.txt intentionally uses CoolProp v6.7.0 (downloaded from sourceforge zipfile) while CI workflows use v7.1.0 (git checkout). This is because the CoolProp zipfile build is broken on Windows after v6.7.0, and this may be resolved in v7.2.0.

Applied to files:

  • .github/workflows/ci.yml
  • README_changelog.md
🔇 Additional comments (3)
README_changelog.md (1)

3-6: Clarify the release date placeholder.

Line 3 contains a placeholder date 2025/11/XX. Please confirm whether this should be filled with the intended release date (e.g., 2025/11/20 for a specific date, or replaced with today's actual date at release time).

.github/workflows/ci.yml (2)

87-91: LGTM: Artifact naming is now consistent and descriptive.

The platform-specific artifact naming scheme (e.g., binaries-macos-arm64, binaries-linux-x86_64, binaries-windows-v143-x64, binaries-windows-msys-openmodelica) is clear and makes platform/compiler distinctions explicit. The pattern filter at line 13 correctly targets only binaries-* artifacts, respecting the docs artifact separation per the prior learning.

Also applies to: 129-133, 176-180, 234-234


35-49: LGTM: Release flow separation is clean and well-structured.

The separation of release vs non-release artifact handling is clear: branches upload to artifacts, tags trigger GitHub releases. The update from softprops/action-gh-release@v1 to v2 addresses the previous review concern about the outdated action. The dynamic ref naming (lines 15-24) ensures correct file naming across both flows.

Please verify that softprops/action-gh-release@v2 configuration (with files: input) is compatible with your intended release behavior, as v2 may have subtle differences from v1 in how it handles file patterns and metadata.

Comment thread .github/workflows/ci.yml
Comment on lines +25 to +32
- name: Copy the PDF manual
run: cp ExternalMedia/Resources/manual.pdf ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.pdf
- name: Zip binaries
uses: papeloto/action-zip@v1
with:
files: ExternalMedia/
recursive: true
dest: ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.zip
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Fix artifact path structure in PDF copy and ZIP creation.

The artifact uploads (lines 91, 133, 180, 235, 304) all use path: Modelica, which means downloaded artifacts extract to ./Modelica/ExternalMedia/.... However, lines 26 and 30 reference ExternalMedia/ directly at the root level, which won't exist.

Apply this diff to fix the paths:

    - name: Copy the PDF manual
-     run: cp ExternalMedia/Resources/manual.pdf ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.pdf
+     run: cp Modelica/ExternalMedia/Resources/manual.pdf ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.pdf
    - name: Zip binaries
      uses: papeloto/action-zip@v1
      with:
-       files: ExternalMedia/
+       files: Modelica/
        recursive: true
        dest: ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.zip
🤖 Prompt for AI Agents
In .github/workflows/ci.yml around lines 25 to 32, the copy and zip steps
reference ExternalMedia/ at repo root but artifacts extract under Modelica/, so
update the paths to include Modelica: change the cp source to
Modelica/ExternalMedia/Resources/manual.pdf and its destination to
Modelica/ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.pdf; change the
zip action to package files: Modelica/ExternalMedia/ (set recursive: true) and
set dest to Modelica/ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.zip so
both the copied PDF and ZIP live under Modelica/ExternalMedia as expected.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
.github/workflows/ci.yml (1)

206-206: Consider clarifying the cache key naming convention.

The cache key prefix pre-commit appears inconsistent with the purpose of this cache, which stores the OMDev toolchain. Consider renaming to something like omdev-cache or omdev-tools for clarity and maintainability.

-        key: pre-commit-${{ hashFiles('omdev_hash.txt') }}
+        key: omdev-cache-${{ hashFiles('omdev_hash.txt') }}
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6eaf043 and e712846.

📒 Files selected for processing (1)
  • .github/workflows/ci.yml (6 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#117
File: .github/workflows/ci.yml:15-18
Timestamp: 2025-10-21T08:01:59.111Z
Learning: In the ExternalMedia GitHub Actions workflow (.github/workflows/ci.yml), the `docs` artifact should remain separate from the binaries merge pattern. Only the `binaries-docs` artifact (containing the PDF manual) should be included in the binary distribution, while the `docs` artifact (HTML documentation) is deployed separately to GitHub Pages.
📚 Learning: 2025-10-21T08:01:59.111Z
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#117
File: .github/workflows/ci.yml:15-18
Timestamp: 2025-10-21T08:01:59.111Z
Learning: In the ExternalMedia GitHub Actions workflow (.github/workflows/ci.yml), the `docs` artifact should remain separate from the binaries merge pattern. Only the `binaries-docs` artifact (containing the PDF manual) should be included in the binary distribution, while the `docs` artifact (HTML documentation) is deployed separately to GitHub Pages.

Applied to files:

  • .github/workflows/ci.yml
📚 Learning: 2025-10-21T07:36:38.359Z
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#122
File: Projects/CMakeLists.txt:73-74
Timestamp: 2025-10-21T07:36:38.359Z
Learning: In the ExternalMedia project, CMakeLists.txt intentionally uses CoolProp v6.7.0 (downloaded from sourceforge zipfile) while CI workflows use v7.1.0 (git checkout). This is because the CoolProp zipfile build is broken on Windows after v6.7.0, and this may be resolved in v7.2.0.

Applied to files:

  • .github/workflows/ci.yml
🔇 Additional comments (2)
.github/workflows/ci.yml (2)

93-93: Platform artifact naming is clear and appropriately structured.

The refactored artifact names (binaries-macos-*, binaries-linux-x86_64, binaries-windows-*, binaries-windows-msys-openmodelica, binaries-docs) properly follow a consistent naming scheme and align with the binaries-* download pattern in finish-ci. The separation of the binaries-docs artifact (containing the Modelica tree with PDF manual) from the standalone docs artifact (HTML documentation) is correct per the documentation deployment logic.

Also applies to: 135-135, 182-182, 237-237, 306-306


15-24: Release workflow logic is well-structured.

The conditional flows properly separate tag-based releases (GitHub release creation at lines 43–49) from non-tag builds (artifact upload at lines 35–42), with clear mutually exclusive if conditions. The ref naming logic (lines 15–24) correctly extracts tag names or defaults to latest for branches, enabling consistent naming across both release and artifact flows.

Also applies to: 35-49

Comment thread .github/workflows/ci.yml
echo "ref_name=latest" >> $GITHUB_OUTPUT
fi
- name: Copy the PDF manual
run: cp ExternalMedia/Resources/manual.pdf ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.pdf
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Fix artifact path structure in PDF copy and ZIP creation.

The downloaded artifacts extract to ./Modelica/ExternalMedia/... (since artifacts were uploaded with path: Modelica), but lines 26 and 30 reference paths at the root level that won't exist.

Apply this diff to fix the paths:

    - name: Copy the PDF manual
-     run: cp ExternalMedia/Resources/manual.pdf ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.pdf
+     run: cp Modelica/ExternalMedia/Resources/manual.pdf ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.pdf
    - name: Zip binaries
      uses: papeloto/action-zip@v1
      with:
-       files: ExternalMedia/
+       files: Modelica/ExternalMedia/
        recursive: true
        dest: ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.zip

Also applies to: 30-30

🤖 Prompt for AI Agents
In .github/workflows/ci.yml around lines 26 and 30, the steps copy and zip the
PDF using root-level paths but the artifacts extract under
Modelica/ExternalMedia; update both commands to reference the correct path
prefix (Modelica/ExternalMedia/...) so the cp uses
Modelica/ExternalMedia/Resources/manual.pdf and the zip command includes
Modelica/ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.pdf (or otherwise
uses Modelica/ExternalMedia/*) to match the extracted artifact layout.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (1)
.github/workflows/ci.yml (1)

26-26: Fix artifact path references to match downloaded directory structure.

When artifacts are downloaded with merge-multiple: true, they extract into the same directory specified by path. Since the build jobs upload with path: Modelica (lines 94, 136, 183, 245), the directory structure will be Modelica/ExternalMedia/... at the root, not ExternalMedia/ at the root.

Apply this diff to fix the paths:

    - name: Copy the PDF manual
-     run: cp ExternalMedia/Resources/manual.pdf ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.pdf
+     run: cp Modelica/ExternalMedia/Resources/manual.pdf ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.pdf
    - name: Zip binaries
      uses: papeloto/action-zip@v1
      with:
-       files: ExternalMedia/
+       files: Modelica/ExternalMedia/
        recursive: true
        dest: ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.zip

This matches the issue flagged in previous review feedback.

Also applies to: 30-30

🧹 Nitpick comments (1)
.github/workflows/ci.yml (1)

39-41: Use glob pattern for upload paths instead of hardcoding suffix.

The files are created with the dynamic ${{ steps.ref_name.outputs.ref_name }} suffix (lines 26, 32), but the upload paths hardcode latest. While the current condition on line 42 prevents tag builds from reaching this step, the paths should use a glob pattern to be resilient to future changes.

Apply this diff:

      with:
        name: ExternalMedia-binaries
        path: |
-         ./ExternalMedia-latest.pdf
-         ./ExternalMedia-latest.zip
+         ./ExternalMedia-*.pdf
+         ./ExternalMedia-*.zip
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 27eab4e and bb7cf31.

📒 Files selected for processing (1)
  • .github/workflows/ci.yml (6 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-10-21T08:01:59.111Z
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#117
File: .github/workflows/ci.yml:15-18
Timestamp: 2025-10-21T08:01:59.111Z
Learning: In the ExternalMedia GitHub Actions workflow (.github/workflows/ci.yml), the `docs` artifact should remain separate from the binaries merge pattern. Only the `binaries-docs` artifact (containing the PDF manual) should be included in the binary distribution, while the `docs` artifact (HTML documentation) is deployed separately to GitHub Pages.

Applied to files:

  • .github/workflows/ci.yml
📚 Learning: 2025-10-21T07:36:38.359Z
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#122
File: Projects/CMakeLists.txt:73-74
Timestamp: 2025-10-21T07:36:38.359Z
Learning: In the ExternalMedia project, CMakeLists.txt intentionally uses CoolProp v6.7.0 (downloaded from sourceforge zipfile) while CI workflows use v7.1.0 (git checkout). This is because the CoolProp zipfile build is broken on Windows after v6.7.0, and this may be resolved in v7.2.0.

Applied to files:

  • .github/workflows/ci.yml
🔇 Additional comments (2)
.github/workflows/ci.yml (2)

198-216: OMDev caching strategy is sound.

The caching implementation correctly fetches the remote HEAD hash, restores from cache if available, and only clones/saves on cache miss. This is an appropriate optimization for external dependencies.


93-93: Artifact naming convention is well-structured and consistent.

The per-platform naming scheme clearly identifies each build variant and aligns with the pattern-based download strategy. The separation of docs and binaries-docs artifacts follows the documented requirements.

Also applies to: 135-135, 182-182, 244-244

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (1)
.github/workflows/ci.yml (1)

25-32: Fix artifact paths in PDF copy and ZIP creation (recurring issue).

Artifacts download with merge-multiple: true from binaries-* pattern, where all uploads used path: Modelica. The extracted structure is ./Modelica/ExternalMedia/..., not ExternalMedia/ at the repository root. Lines 26 and 30 reference paths that don't exist.

Apply this diff to fix both the copy and zip operations:

    - name: Copy the PDF manual
-     run: cp ExternalMedia/Resources/manual.pdf ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.pdf
+     run: cp Modelica/ExternalMedia/Resources/manual.pdf ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.pdf
    - name: Zip binaries
      uses: papeloto/action-zip@v1
      with:
-       files: ExternalMedia/
+       files: Modelica/ExternalMedia/
        recursive: true
        dest: ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.zip

This issue was flagged in prior reviews but remains unresolved. Please ensure this is addressed before merge.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bb7cf31 and a827b42.

📒 Files selected for processing (1)
  • .github/workflows/ci.yml (7 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-10-21T08:01:59.111Z
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#117
File: .github/workflows/ci.yml:15-18
Timestamp: 2025-10-21T08:01:59.111Z
Learning: In the ExternalMedia GitHub Actions workflow (.github/workflows/ci.yml), the `docs` artifact should remain separate from the binaries merge pattern. Only the `binaries-docs` artifact (containing the PDF manual) should be included in the binary distribution, while the `docs` artifact (HTML documentation) is deployed separately to GitHub Pages.

Applied to files:

  • .github/workflows/ci.yml
📚 Learning: 2025-10-21T07:36:38.359Z
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#122
File: Projects/CMakeLists.txt:73-74
Timestamp: 2025-10-21T07:36:38.359Z
Learning: In the ExternalMedia project, CMakeLists.txt intentionally uses CoolProp v6.7.0 (downloaded from sourceforge zipfile) while CI workflows use v7.1.0 (git checkout). This is because the CoolProp zipfile build is broken on Windows after v6.7.0, and this may be resolved in v7.2.0.

Applied to files:

  • .github/workflows/ci.yml
🪛 actionlint (1.7.8)
.github/workflows/ci.yml

189-189: property "cache-key" is not defined in object type {cache-hit: string; cache-matched-key: string; cache-primary-key: string}

(expression)


201-201: property "cache-omdev" is not defined in object type {}

(expression)


211-211: property "cache-key" is not defined in object type {cache-hit: string; cache-matched-key: string; cache-primary-key: string}

(expression)

🔇 Additional comments (1)
.github/workflows/ci.yml (1)

50-52: Verify artifact deletion glob pattern syntax.

Line 52 uses name: binaries-* with geekyeggo/delete-artifact@v5. Confirm this action version supports glob patterns in the name field; if not, the pattern will not match and cleanup will fail. Verify against the action's documentation or test in a non-critical workflow run.

Comment thread .github/workflows/ci.yml Outdated
@jowr jowr force-pushed the feature/release_ci branch 2 times, most recently from 8d5241e to fb49bf8 Compare October 30, 2025 10:48
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 9

♻️ Duplicate comments (2)
.github/workflows/ci.yml (2)

26-26: Fix artifact path — critical blocker for tag releases.

The path: input for cache actions is a required field, but downloaded artifacts are extracted to ./Modelica/ExternalMedia/... (because the path: Modelica in the upload steps). Line 26 references ExternalMedia/Resources/manual.pdf at the repo root, which will not exist.

Apply this diff to correct the path:

    - name: Copy the PDF manual
-     run: cp ExternalMedia/Resources/manual.pdf ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.pdf
+     run: cp Modelica/ExternalMedia/Resources/manual.pdf ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.pdf

30-30: Fix ZIP file source path — aligns with downloaded artifacts.

Line 30 references ExternalMedia/ at the root, but artifacts extract to Modelica/ExternalMedia/. Update to match the actual extracted location:

    - name: Zip binaries
      uses: papeloto/action-zip@v1
      with:
-       files: ExternalMedia/
+       files: Modelica/ExternalMedia/
        recursive: true
        dest: ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.zip
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 59e6aa7 and aceb45d.

📒 Files selected for processing (1)
  • .github/workflows/ci.yml (8 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#122
File: Projects/CMakeLists.txt:73-74
Timestamp: 2025-10-21T07:36:38.359Z
Learning: In the ExternalMedia project, CMakeLists.txt intentionally uses CoolProp v6.7.0 (downloaded from sourceforge zipfile) while CI workflows use v7.1.0 (git checkout). This is because the CoolProp zipfile build is broken on Windows after v6.7.0, and this may be resolved in v7.2.0.
📚 Learning: 2025-10-21T08:01:59.111Z
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#117
File: .github/workflows/ci.yml:15-18
Timestamp: 2025-10-21T08:01:59.111Z
Learning: In the ExternalMedia GitHub Actions workflow (.github/workflows/ci.yml), the `docs` artifact should remain separate from the binaries merge pattern. Only the `binaries-docs` artifact (containing the PDF manual) should be included in the binary distribution, while the `docs` artifact (HTML documentation) is deployed separately to GitHub Pages.

Applied to files:

  • .github/workflows/ci.yml
📚 Learning: 2025-10-21T07:36:38.359Z
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#122
File: Projects/CMakeLists.txt:73-74
Timestamp: 2025-10-21T07:36:38.359Z
Learning: In the ExternalMedia project, CMakeLists.txt intentionally uses CoolProp v6.7.0 (downloaded from sourceforge zipfile) while CI workflows use v7.1.0 (git checkout). This is because the CoolProp zipfile build is broken on Windows after v6.7.0, and this may be resolved in v7.2.0.

Applied to files:

  • .github/workflows/ci.yml
🪛 actionlint (1.7.8)
.github/workflows/ci.yml

57-57: property "keycoolprop" is not defined in object type {coolprop_cache: {conclusion: string; outcome: string; outputs: {cache-hit: string; cache-matched-key: string; cache-primary-key: string}}; coolprop_hash: {conclusion: string; outcome: string; outputs: {string => string}}}

(expression)


82-82: missing input "path" which is required by action "actions/cache/save@v4". all required inputs are "key", "path"

(action)


187-187: missing input "path" which is required by action "actions/cache/restore@v4". all required inputs are "key", "path"

(action)


254-254: missing input "path" which is required by action "actions/cache/restore@v4". all required inputs are "key", "path"

(action)


257-257: object, array, and null values should not be evaluated in template with ${{ }} but evaluating the value of type array

(expression)


258-258: property "workspace" is not defined in object type {arch: string; debug: string; environment: string; name: string; os: string; temp: string; tool_cache: string}

(expression)


259-259: property "workspace" is not defined in object type {arch: string; debug: string; environment: string; name: string; os: string; temp: string; tool_cache: string}

(expression)


263-263: object, array, and null values should not be evaluated in template with ${{ }} but evaluating the value of type array

(expression)


264-264: property "workspace" is not defined in object type {arch: string; debug: string; environment: string; name: string; os: string; temp: string; tool_cache: string}

(expression)


265-265: object, array, and null values should not be evaluated in template with ${{ }} but evaluating the value of type array

(expression)


272-272: object, array, and null values should not be evaluated in template with ${{ }} but evaluating the value of type array

(expression)


281-281: missing input "path" which is required by action "actions/cache/restore@v4". all required inputs are "key", "path"

(action)


312-312: missing input "path" which is required by action "actions/cache/restore@v4". all required inputs are "key", "path"

(action)

🔇 Additional comments (1)
.github/workflows/ci.yml (1)

35-42: Verify artifact naming aligns with prior guidance.

Per previous review learning, the docs artifact should remain separate from the binaries merge pattern. The artifact at lines 38-41 is named ExternalMedia-binaries and won't be matched by the pattern: binaries-* download at line 13. Verify this is intentional and that only binaries-docs (containing the PDF manual from build-docs) is included in releases. Based on learnings from prior review.

Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml Outdated
Comment on lines +257 to +262
- name: Configure with CMake for ${{ matrix.bitness }}bit
working-directory: ${{runner.workspace}}
run: |
$env:Path = "${env:ProgramFiles}\CMake\bin;C:\OMDev\tools\msys\usr\bin;C:\OMDev\tools\msys\mingw64\bin;$env:Path"
cmake -B build64 -S ${{ runner.workspace }}/ExternalMedia/Projects -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLUIDPROP=1 -DCOOLPROP=1
cmake -B build64 -S ${{ runner.workspace }}/ExternalMedia/Projects -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLUIDPROP=1 -DCOOLPROP=1
- name: Build with CMake for 64bit
$env:Path = "${env:ProgramFiles}\CMake\bin;C:\OMDev\tools\msys\usr\bin;C:\OMDev\tools\msys\mingw${{ matrix.bitness }}\bin;$env:Path"
cmake -B build -S ${{ runner.workspace }}/ExternalMedia/Projects -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLUIDPROP=1 -DCOOLPROP=1
cmake -B build -S ${{ runner.workspace }}/ExternalMedia/Projects -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLUIDPROP=1 -DCOOLPROP=1
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Fix undefined runner.workspace context variable.

runner.workspace does not exist in GitHub Actions runner context. Use github.workspace (the repository checkout directory) or define a custom workspace path.

Apply this diff to use the correct context:

    - name: Configure with CMake for ${{ matrix.bitness }}bit
      working-directory: ${{runner.workspace}}
      run: |
-       $env:Path = "${env:ProgramFiles}\CMake\bin;C:\OMDev\tools\msys\usr\bin;C:\OMDev\tools\msys\mingw${{ matrix.bitness }}\bin;$env:Path"
-       cmake -B build -S ${{ runner.workspace }}/ExternalMedia/Projects -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLUIDPROP=1 -DCOOLPROP=1
-       cmake -B build -S ${{ runner.workspace }}/ExternalMedia/Projects -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLUIDPROP=1 -DCOOLPROP=1
+       $env:Path = "${env:ProgramFiles}\CMake\bin;C:\OMDev\tools\msys\usr\bin;C:\OMDev\tools\msys\mingw${{ matrix.bitness }}\bin;$env:Path"
+       cmake -B build -S ${{ github.workspace }}/ExternalMedia/Projects -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLUIDPROP=1 -DCOOLPROP=1
+       cmake -B build -S ${{ github.workspace }}/ExternalMedia/Projects -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLUIDPROP=1 -DCOOLPROP=1

Committable suggestion skipped: line range outside the PR's diff.

🧰 Tools
🪛 actionlint (1.7.8)

257-257: object, array, and null values should not be evaluated in template with ${{ }} but evaluating the value of type array

(expression)


258-258: property "workspace" is not defined in object type {arch: string; debug: string; environment: string; name: string; os: string; temp: string; tool_cache: string}

(expression)


259-259: property "workspace" is not defined in object type {arch: string; debug: string; environment: string; name: string; os: string; temp: string; tool_cache: string}

(expression)

🤖 Prompt for AI Agents
.github/workflows/ci.yml around lines 257 to 262: the workflow uses a
non-existent runner.workspace variable in the step that configures CMake;
replace runner.workspace with the correct GitHub Actions context variable
github.workspace (or a defined custom workspace path) wherever runner.workspace
is referenced in that step and ensure both the working-directory and the cmake
-S path use the updated variable so the checkout directory is used correctly.

Comment thread .github/workflows/ci.yml
Comment on lines +263 to +268
- name: Build with CMake for ${{ matrix.bitness }}bit
working-directory: ${{runner.workspace}}
run: |
$env:Path = "${env:ProgramFiles}\CMake\bin;C:\OMDev\tools\msys\usr\bin;C:\OMDev\tools\msys\mingw64\bin;$env:Path"
cmake --build build64 --target ExternalMediaLib
cmake --build build64 --target install
$env:Path = "${env:ProgramFiles}\CMake\bin;C:\OMDev\tools\msys\usr\bin;C:\OMDev\tools\msys\mingw${{ matrix.bitness }}\bin;$env:Path"
cmake --build build --target ExternalMediaLib
cmake --build build --target install
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Fix undefined runner.workspace context variable in build step.

runner.workspace does not exist in GitHub Actions runner context. Use github.workspace instead.

Apply this diff:

    - name: Build with CMake for ${{ matrix.bitness }}bit
      working-directory: ${{runner.workspace}}
      run: |
-       $env:Path = "${env:ProgramFiles}\CMake\bin;C:\OMDev\tools\msys\usr\bin;C:\OMDev\tools\msys\mingw${{ matrix.bitness }}\bin;$env:Path"
+       $env:Path = "${env:ProgramFiles}\CMake\bin;C:\OMDev\tools\msys\usr\bin;C:\OMDev\tools\msys\mingw${{ matrix.bitness }}\bin;$env:Path"
        cmake --build build --target ExternalMediaLib
        cmake --build build --target install

The working-directory should also be corrected — consider using ${{ github.workspace }}/build or removing it if the steps already handle paths correctly.

Committable suggestion skipped: line range outside the PR's diff.

🧰 Tools
🪛 actionlint (1.7.8)

263-263: object, array, and null values should not be evaluated in template with ${{ }} but evaluating the value of type array

(expression)


264-264: property "workspace" is not defined in object type {arch: string; debug: string; environment: string; name: string; os: string; temp: string; tool_cache: string}

(expression)


265-265: object, array, and null values should not be evaluated in template with ${{ }} but evaluating the value of type array

(expression)

🤖 Prompt for AI Agents
In .github/workflows/ci.yml around lines 263 to 268, the step uses the
non-existent runner.workspace context and an incorrect working-directory;
replace `${{ runner.workspace }}` with `${{ github.workspace }}` and set
working-directory to either `${{ github.workspace }}/build` (if build output
lives there) or remove the working-directory line if the step already runs from
the repo root, and update the run block to reference `${{ github.workspace }}`
where needed so cmake commands operate in the correct path.

Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml Outdated
@jowr jowr force-pushed the feature/release_ci branch from aceb45d to f615f30 Compare October 30, 2025 11:09
@jowr jowr force-pushed the feature/release_ci branch 2 times, most recently from 6e55c09 to 8e6f226 Compare October 30, 2025 14:22
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (3)
.github/workflows/ci.yml (3)

26-30: Fix artifact path structure in PDF copy and ZIP creation.

The downloaded artifacts extract to ./Modelica/ExternalMedia/... but lines 26 and 30 reference paths at the root level without the Modelica/ prefix, which will cause the copy and zip steps to fail.

Apply this diff to fix the paths:

    - name: Copy the PDF manual
-     run: cp ExternalMedia/Resources/manual.pdf ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.pdf
+     run: cp Modelica/ExternalMedia/Resources/manual.pdf ExternalMedia-${{ steps.ref_name.outputs.ref_name }}.pdf
    - name: Zip binaries
      uses: papeloto/action-zip@v1
      with:
-       files: ExternalMedia/
+       files: Modelica/ExternalMedia/
        recursive: true

281-282: Fix undefined runner.workspace context variable in MSYS OpenModelica build configuration.

runner.workspace does not exist in GitHub Actions context. Use github.workspace instead.

Apply this diff:

    - name: Configure with CMake for ${{ matrix.bitness }}bit
      working-directory: ${{runner.workspace}}
      run: |
        $env:Path = "${env:ProgramFiles}\CMake\bin;C:\OMDev\tools\msys\usr\bin;C:\OMDev\tools\msys\mingw${{ matrix.bitness }}\bin;$env:Path"
-       cmake -B build -S ${{ runner.workspace }}/ExternalMedia/Projects -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}
-       cmake -B build -S ${{ runner.workspace }}/ExternalMedia/Projects -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}
+       cmake -B build -S ${{ github.workspace }}/ExternalMedia/Projects -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}
+       cmake -B build -S ${{ github.workspace }}/ExternalMedia/Projects -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}

312-313: Fix undefined runner.workspace context variable in MSYS build configuration.

runner.workspace does not exist in GitHub Actions context. Use github.workspace instead.

Apply this diff:

    - name: Configure with CMake
      working-directory: ${{runner.workspace}}/build
      run: |
-       cmake ${{ runner.workspace }}/ExternalMedia/Projects -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}
-       cmake ${{ runner.workspace }}/ExternalMedia/Projects -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}
+       cmake ${{ github.workspace }}/ExternalMedia/Projects -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}
+       cmake ${{ github.workspace }}/ExternalMedia/Projects -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between aceb45d and 6e55c09.

📒 Files selected for processing (1)
  • .github/workflows/ci.yml (8 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#122
File: Projects/CMakeLists.txt:73-74
Timestamp: 2025-10-21T07:36:38.359Z
Learning: In the ExternalMedia project, CMakeLists.txt intentionally uses CoolProp v6.7.0 (downloaded from sourceforge zipfile) while CI workflows use v7.1.0 (git checkout). This is because the CoolProp zipfile build is broken on Windows after v6.7.0, and this may be resolved in v7.2.0.
📚 Learning: 2025-10-21T08:01:59.111Z
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#117
File: .github/workflows/ci.yml:15-18
Timestamp: 2025-10-21T08:01:59.111Z
Learning: In the ExternalMedia GitHub Actions workflow (.github/workflows/ci.yml), the `docs` artifact should remain separate from the binaries merge pattern. Only the `binaries-docs` artifact (containing the PDF manual) should be included in the binary distribution, while the `docs` artifact (HTML documentation) is deployed separately to GitHub Pages.

Applied to files:

  • .github/workflows/ci.yml
📚 Learning: 2025-10-21T07:36:38.359Z
Learnt from: jowr
PR: modelica-3rdparty/ExternalMedia#122
File: Projects/CMakeLists.txt:73-74
Timestamp: 2025-10-21T07:36:38.359Z
Learning: In the ExternalMedia project, CMakeLists.txt intentionally uses CoolProp v6.7.0 (downloaded from sourceforge zipfile) while CI workflows use v7.1.0 (git checkout). This is because the CoolProp zipfile build is broken on Windows after v6.7.0, and this may be resolved in v7.2.0.

Applied to files:

  • .github/workflows/ci.yml
🪛 actionlint (1.7.8)
.github/workflows/ci.yml

128-128: property "workspace" is not defined in object type {arch: string; debug: string; environment: string; name: string; os: string; temp: string; tool_cache: string}

(expression)


168-168: property "workspace" is not defined in object type {arch: string; debug: string; environment: string; name: string; os: string; temp: string; tool_cache: string}

(expression)


209-209: property "workspace" is not defined in object type {arch: string; debug: string; environment: string; name: string; os: string; temp: string; tool_cache: string}

(expression)


213-213: property "workspace" is not defined in object type {arch: string; debug: string; environment: string; name: string; os: string; temp: string; tool_cache: string}

(expression)


214-214: property "workspace" is not defined in object type {arch: string; debug: string; environment: string; name: string; os: string; temp: string; tool_cache: string}

(expression)


278-278: property "workspace" is not defined in object type {arch: string; debug: string; environment: string; name: string; os: string; temp: string; tool_cache: string}

(expression)


279-279: property "workspace" is not defined in object type {arch: string; debug: string; environment: string; name: string; os: string; temp: string; tool_cache: string}

(expression)


284-284: property "workspace" is not defined in object type {arch: string; debug: string; environment: string; name: string; os: string; temp: string; tool_cache: string}

(expression)


306-306: property "workspace" is not defined in object type {arch: string; debug: string; environment: string; name: string; os: string; temp: string; tool_cache: string}

(expression)


310-310: property "workspace" is not defined in object type {arch: string; debug: string; environment: string; name: string; os: string; temp: string; tool_cache: string}

(expression)


311-311: property "workspace" is not defined in object type {arch: string; debug: string; environment: string; name: string; os: string; temp: string; tool_cache: string}

(expression)

🔇 Additional comments (5)
.github/workflows/ci.yml (5)

54-102: Cache-driven CoolProp preparation is well-implemented.

Step IDs are correctly referenced in outputs, cache restore/save steps have required path inputs, and the conditional download logic based on cache-hit is sound.


230-254: OMDev cache management is correctly structured.

Step IDs align with job outputs, cache operations have required key and path inputs, and conditional caching logic is sound.


122-131: macOS build cache restoration and configuration is correct.

Cache restore step includes required path and key, and CMake configuration uses correct ${GITHUB_WORKSPACE} variable.


162-171: Linux build cache restoration and configuration is correct.

Cache restore step has required inputs, and CMake configuration properly uses ${GITHUB_WORKSPACE}.


326-364: Documentation build correctly implements cache-driven pattern and artifact separation.

Cache restoration for CoolProp is properly configured, and the separation between docs (HTML) and binaries-docs (PDF) artifacts aligns with the release strategy.

Comment thread .github/workflows/ci.yml
Comment on lines +215 to +216
cmake ${{ runner.workspace }}/ExternalMedia/Projects -A ${{ matrix.arch }} -G "${{ matrix.generator }}" -T "${{ matrix.toolset }}" -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}
cmake ${{ runner.workspace }}/ExternalMedia/Projects -A ${{ matrix.arch }} -G "${{ matrix.generator }}" -T "${{ matrix.toolset }}" -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Fix undefined runner.workspace context variable in Windows build configuration.

runner.workspace does not exist in GitHub Actions runner context. Use github.workspace instead.

Apply this diff:

    - name: Configure with CMake
      working-directory: ${{runner.workspace}}/build
      run: |
-       cmake ${{ runner.workspace }}/ExternalMedia/Projects -A ${{ matrix.arch }} -G "${{ matrix.generator }}" -T "${{ matrix.toolset }}" -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}
-       cmake ${{ runner.workspace }}/ExternalMedia/Projects -A ${{ matrix.arch }} -G "${{ matrix.generator }}" -T "${{ matrix.toolset }}" -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}
+       cmake ${{ github.workspace }}/ExternalMedia/Projects -A ${{ matrix.arch }} -G "${{ matrix.generator }}" -T "${{ matrix.toolset }}" -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}
+       cmake ${{ github.workspace }}/ExternalMedia/Projects -A ${{ matrix.arch }} -G "${{ matrix.generator }}" -T "${{ matrix.toolset }}" -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
cmake ${{ runner.workspace }}/ExternalMedia/Projects -A ${{ matrix.arch }} -G "${{ matrix.generator }}" -T "${{ matrix.toolset }}" -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}
cmake ${{ runner.workspace }}/ExternalMedia/Projects -A ${{ matrix.arch }} -G "${{ matrix.generator }}" -T "${{ matrix.toolset }}" -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}
cmake ${{ github.workspace }}/ExternalMedia/Projects -A ${{ matrix.arch }} -G "${{ matrix.generator }}" -T "${{ matrix.toolset }}" -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}
cmake ${{ github.workspace }}/ExternalMedia/Projects -A ${{ matrix.arch }} -G "${{ matrix.generator }}" -T "${{ matrix.toolset }}" -DFLUIDPROP=1 -DCOOLPROP=${{ needs.get-coolprop.outputs.coolprop-check }}
🤖 Prompt for AI Agents
In .github/workflows/ci.yml around lines 215 to 216, the workflow incorrectly
uses the non-existent runner.workspace context variable; update both cmake
command invocations to use github.workspace instead (replace runner.workspace
with github.workspace) so the paths resolve correctly in the GitHub Actions
environment.

@jowr jowr force-pushed the feature/release_ci branch 4 times, most recently from 9d92bfb to 451a75a Compare October 30, 2025 14:33
@jowr jowr force-pushed the feature/release_ci branch from 451a75a to e3d57c2 Compare October 30, 2025 14:35
@jowr jowr merged commit 194f8d4 into modelica-3rdparty:master Oct 30, 2025
1 check passed
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