diff --git a/.forgejo/workflows/ids-lint.yml b/.forgejo/workflows/ids-lint.yml index df6b3bc..0bb1d7f 100644 --- a/.forgejo/workflows/ids-lint.yml +++ b/.forgejo/workflows/ids-lint.yml @@ -29,6 +29,12 @@ jobs: uses: actions/checkout@v4 - name: Run IDS validations + # shell: bash is REQUIRED, not decoration. The runner executes `run:` + # blocks with /bin/sh (dash) unless told otherwise, so the GitHub + # original's `shopt -s globstar` dies with "shopt: not found" and + # exit 127 before the first file is checked. `[[ ]]` and arrays need + # bash too. + shell: bash # Deliberately greps output instead of trusting the exit status: # ifctester's CLI has no sys.exit anywhere, so a model that violates # every rule still exits 0. A naive `run: ifctester ...` would be a diff --git a/.forgejo/workflows/ifc-lint.yml b/.forgejo/workflows/ifc-lint.yml index d991afc..21d3280 100644 --- a/.forgejo/workflows/ifc-lint.yml +++ b/.forgejo/workflows/ifc-lint.yml @@ -26,6 +26,12 @@ jobs: uses: actions/checkout@v4 - name: Run IFC lint checks + # shell: bash is REQUIRED, not decoration. The runner executes `run:` + # blocks with /bin/sh (dash) unless told otherwise, so the GitHub + # original's `shopt -s globstar` dies with "shopt: not found" and + # exit 127 before the first file is checked. `[[ ]]` and arrays need + # bash too. + shell: bash # Gates on its own exit status: ifcopenshell.validate calls sys.exit() # on failure, so `set -e` fails the job. run: |