Skip to content

ilammy/msvc-dev-cmd (node20) has no fix — breaks MSVC Windows CI after 2026-09-23 #167

Description

@djkees

Problem / use case

Found while auditing #165 (the checkout/setup-python node20 fix, see #166) for completeness: ilammy/msvc-dev-cmd@v1 also declares node20 in its own action.yml, and unlike actions/checkout/actions/setup-python/etc., there's no newer major version to bump to — the upstream repo's most recent commit is from April 2024, and its most recent release (v1.13.0, also April 2024) is still node20. A few community PRs proposing a Node 24 update are open there but unmerged.

Once the Node20 compatibility shim is removed on 2026-09-23 (per the GitHub changelog), an action still declaring node20 will fail to run rather than just warn.

This hits exactly one CI job — basic_build.yml's bindc job, windows-latest / msvc / intel matrix entry — through two separate paths that both need fixing, not one:

  1. CEA's own step, "Set up MSVC toolchain (Windows MSVC/Intel)", calls ilammy/msvc-dev-cmd@v1 directly.
  2. That same matrix entry also runs fortran-lang/setup-fortran@v1 (since fcompiler == 'intel'), which internally pins ilammy/msvc-dev-cmd@v1.13.0 for its own Windows/Intel setup.

Fixing only (1) does not save the job — (2) still breaks it, and CEA has no way to override a dependency pinned inside another project's action.

Fix status

  1. CEA's own usage — fixed, PR open: Swap ilammy/msvc-dev-cmd for step-security's maintained node24 mirror djkees/cea#302 swaps ilammy/msvc-dev-cmd@v1 → step-security/msvc-dev-cmd@v1, a verified drop-in mirror (same inputs/usage) maintained by StepSecurity (a supply-chain security vendor, also behind harden-runner) that declares node24 and has an active maintenance history (routine dependency/audit fixes through September 2026). Adopting it does mean trusting a new third party CEA doesn't currently depend on — flagging that as a deliberate call, not a hidden default.
  2. fortran-lang/setup-fortran@v1's internal usage — not fixable from CEA's side. Filed fortran-lang/setup-fortran#275 proposing the same swap there, as a minimal patch to the v1 track (independent of their in-progress v2 rewrite, which already drops this dependency entirely but is still beta — see fortran-lang/setup-fortran#245). Until that lands upstream, this job will still break on 2026-09-23 regardless of what CEA does in its own repo.

Additional context

🤖 Generated with Claude Code

Activity

  1. nicholascanovas commented on Sep 25, 2026

    @nicholascanovas

    It seems that the second issue you brought up is out of our hands, we'll need to wait until they update until we can completely fix this issue. I accepted PR #166 and I guess we'll wait until fortran-lang makes the required changes.

  2. djkees commented on Sep 25, 2026

    @djkees
    ContributorAuthor

    Thanks for merging #166. Correction on my part: the second path in this issue doesn't actually affect CEA, so there's nothing to wait on from fortran-lang.

    fortran-lang/setup-fortran@v1 only runs its internal ilammy/msvc-dev-cmd step when the compiler is lfortran (action.yml):

    - name: Setup MSVC toolchain (Windows)
      if: runner.os == 'Windows' && contains(inputs.compiler, 'lfortran')
      uses: ilammy/msvc-dev-cmd@v1.13.0

    CEA's workflows never use lfortran, so that step is always skipped. I misread the condition as covering Windows/Intel when I filed this.

    Confirmed in CI after the 2026-09-23 cutoff: the windows-latest / msvc / intel job passed on 2026-09-25 (https://github.com/djkees/cea/actions/runs/36170574715/job/108188831937), and its log shows the step skipped:

    ##[end-action id=__fortran-lang_setup-fortran.__ilammy_msvc-dev-cmd;outcome=skipped;conclusion=skipped;duration_ms=0]
    

    With #166 merged, CEA's only real use of ilammy/msvc-dev-cmd is gone, so I think this can be closed. I'll correct the scope on fortran-lang/setup-fortran#275 as well, since it only matters for lfortran users there.

  3. djkees commented on Sep 25, 2026

    @djkees
    ContributorAuthor

    Closing: #166 removed CEA's only real use of ilammy/msvc-dev-cmd, and the setup-fortran path doesn't apply (see above).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions