Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] - Windows self-hosted runner fails to install #17

Open
Zayik opened this issue Dec 15, 2023 · 2 comments
Open

[BUG] - Windows self-hosted runner fails to install #17

Zayik opened this issue Dec 15, 2023 · 2 comments
Assignees
Labels
bug Something isn't working

Comments

@Zayik
Copy link

Zayik commented Dec 15, 2023

Describe the bug
When attempting to use cocogitto on a self-hosted windows runner, the action will fail with the following error:

D:\GitHub\actions-runner_work_temp\3d7451bb-1855-4c7f-935b-ac2973a0bff8.sh: line 1: D:GitHubactions-runner_work_actionscocogittococogitto-actionv3.5/install.sh: No such file or directory
Error: Process completed with exit code 127.

I noticed that the path to my install.sh is missing all of the directory separators ()
D:GitHubactions-runner_work_actionscocogittococogitto-actionv3.5/install.sh --> D:\GitHub\actions-runner_work_actions\cocogitto\cocogitto-action\v3.5/install.sh

I tried looking into the issue and found the following:
The error you’re encountering seems to be related to the way paths are handled in Windows. In Unix-based systems like Linux or MacOS, paths are typically defined with forward slashes (/), while in Windows, paths are typically defined with backslashes ().

The error message suggests that the backslashes () in the path are being removed, which is a common issue when scripts written for Unix-based systems are run on Windows. This is because the backslash () is an escape character in Unix-based systems, so it’s often removed or treated differently.

To Reproduce

  1. Create a windows-based self-hosted runner.
  2. In a project, have a github workflow that has the following:
    runs-on:
    • self-hosted
    • windows
  3. Create a workflow that you can run with at least these steps.
    • uses: actions/checkout@v3
      with:
      fetch-depth: 0 // aka ∞

    • name: Validate commits
      uses: cocogitto/[email protected]
      with:
      check-latest-tag-only: true

  4. Attempt to run workflow.

Expected behavior
Cocogitto runs.

Additional context
D:\GitHub\actions-runner_work_actions\cocogitto\cocogitto-action\v3.5 does exist on the self-hosted runner.
The install.sh script located there indicates that it is not targeting windows, as the cocogitto references unknown-linux.

#!/bin/sh

CUR_DIR=$(pwd)
VERSION=5.4.0
TAR="cocogitto-$VERSION-x86_64-unknown-linux-musl.tar.gz"
BIN_DIR="$HOME/.local/bin"

mkdir -p "$BIN_DIR"
cd "$BIN_DIR" || exit
curl -OL https://github.com/cocogitto/cocogitto/releases/download/"$VERSION"/"$TAR"
tar xfz $TAR
cd "$CUR_DIR" || exit

I would expect this to be cocogitto-6.0.1-x86_64-pc-windows-msvc.tar.gz if I am understanding how the install system works on self-hosted runners.

@Zayik
Copy link
Author

Zayik commented Dec 16, 2023

I played around with this, and I ran into two main parts:

The install script needed to target the Windows version of cocogitto.
The action.yml should probably pass os information to the install.sh, or have the install.cs detect os. Then it can choose the appropriate cocogitto file to dl and unpack.

The .sh files need to be polished in such a way the paths work for Windows if a self-hosted windows runner uses it.
I was unable to use $Home, as all attempts to add it to my system path failed. I begrudgingly had to pass the cog.exe path to the cog.sh file.

A fork with commit of it in working order is here:
Zayik@9256d0f

This is by no means production quality, but it should at least indicate some of the steps needed to add support for windows self-hosted runners.

@oknozor
Copy link
Collaborator

oknozor commented Mar 7, 2024

Hey @Zayik thanks for the issue.
Unfortunately, I don't have any windows machine to debug the install script locally.

A PR adding windows support to the action would be more than welcome.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants