Skip to content

pwsh scripts can be passed over STDIN on shell executor

What does this MR do?

It makes the necessary changes to start passing Powershell Core scripts over STDIN in the shell executor. It also fixes some linting errors that crept up while changing the code.

Why was this MR needed?

The only shells that don't support passing scripts over STDIN are cmd and Powershell, so we shouldn't add more exceptions if not needed.

What's the best way to test this MR?

  1. Build runner with make runner-bin-host and make helper-dockerarchive-host.

  2. Register runner:

    gitlab-runner register --executor "shell" --shell "pwsh" --url "https://gitlab.com/" --description "pwsh-runner" --tag-list "pwsh,mac,gitlab.com" --locked="false" --access-level="not_protected" --registration-token="${YOUR_TOKEN}" --non-interactive
  3. Create a project with the following .gitlab-ci.yml:

    start_evaluation:
      stage: setup
      script:
        - echo Done
      tags:
        - mac
        - pwsh

The build should succeed and not complain about missing script, as seen in this log.

What are the relevant issue numbers?

Closes #27500 (closed)

Merge request reports