denolib / setup-deno

Set up your GitHub Actions workflow with a specific version of deno
https://github.com/marketplace/actions/setup-deno-environment
MIT License
181 stars 16 forks source link

[error] Parameter 'commandLine' cannot be null or empty. #51

Open davivcgarcia opened 4 years ago

davivcgarcia commented 4 years ago

When using the action:

    - name: (API) Setup Deno environment
      uses: denolib/setup-deno@v2
      with:
        deno-version: v1.x

On a self-hosted runner, I see the following error:

Run denolib/setup-deno@v2
  with:
    deno-version: v1.x
##[error]Parameter 'commandLine' cannot be null or empty.

Any advice?

davivcgarcia commented 4 years ago

The error seems to be generated here:

https://github.com/denolib/setup-deno/blob/482dc739be8628399f8b04bd11876f7d9a24f625/dist/index.js#L4754-L4766

zhmushan commented 4 years ago

https://github.com/denolib/setup-deno/blob/482dc739be8628399f8b04bd11876f7d9a24f625/src/installer.ts#L193-L194

Is there gzip in self-hosted?

axetroy commented 4 years ago

https://github.com/denolib/setup-deno/blob/482dc739be8628399f8b04bd11876f7d9a24f625/src/installer.ts#L193-L194

Is there gzip in self-hosted?

This is indeed a problem, we should use the gzip implemented in pure nodejs

davivcgarcia commented 4 years ago

https://github.com/denolib/setup-deno/blob/482dc739be8628399f8b04bd11876f7d9a24f625/src/installer.ts#L193-L194

Is there gzip in self-hosted?

Yes, there is.

[root@ip-172-31-52-214 ec2-user]# rpm -qa | grep gzip
gzip-1.9-9.el8.x86_64
[root@ip-172-31-52-214 ec2-user]# cat /etc/redhat-release 
Red Hat Enterprise Linux release 8.2 (Ootpa)
davivcgarcia commented 4 years ago

What are the other packages required for this action? I can check if all of them are properly installed.

zhmushan commented 4 years ago

I just tested self-hosted, using Linux x64 environment, and successfully executed setup-deno🤔

davivcgarcia commented 4 years ago

I just tested self-hosted, using Linux x64 environment, and successfully executed setup-denothinking

What distribution did you use? I'm using a CentOs/RHEL 8 minimum install.

jameskerr commented 4 years ago

I too am experiencing this same error on a centos:8 docker container.

 /usr/bin/docker exec  1ac4a3ce3754dfaeeb0c7d6f38d7328f4d0621d78d43bf54890ebd4ab7adea87 sh -c "cat /etc/*release | grep ^ID"
##[error]Parameter 'commandLine' cannot be null or empty.
jameskerr commented 4 years ago

Is the issue that on Centos 8 containers, await io.which("gzip") is returning an empty string? Then when that empty string is passed to exec.exec() we get that argument error?

https://github.com/denolib/setup-deno/blob/482dc739be8628399f8b04bd11876f7d9a24f625/src/installer.ts#L193-L194

zhmushan commented 4 years ago

Is the issue that on Centos 8 containers, await io.which("gzip") is returning an empty string? Then when that empty string is passed to exec.exec() we get that argument error?

https://github.com/denolib/setup-deno/blob/482dc739be8628399f8b04bd11876f7d9a24f625/src/installer.ts#L193-L194

I suspect yes, I need to verify on CentOS, but it will take a few days. Anyway, gzip implemented using pure nodejs is necessary

jameskerr commented 4 years ago

I found a way to get this action to work on Centos 8 containers. Before running this action, install the unzip package using dnf.

dnf install -y unzip

The workflow file that worked for me was:

name: Deno Install Test
on: [push]

jobs:
  install:
    name: "Deno Install"
    runs-on: ubuntu-18.04
    container:
      image: centos:8
    steps:
      - run: dnf install -y unzip
      - uses: denolib/setup-deno@v2
        with:
          deno-version: v1.x
      - run: deno --version
zhmushan commented 4 years ago

https://github.com/denolib/setup-deno/blob/e4ecee2bc3a29afbb168ee2f23c93df0d2fda884/src/installer.ts#L186-L197 Setup the 1.x version of Deno, this code is not executed at all, a confusing error...

zhmushan commented 4 years ago

See: https://github.com/actions/toolkit/blob/905b2c7b0681b11056141a60055f1ba77358b7e9/packages/tool-cache/src/tool-cache.ts#L235-L242

Since we rely on @actions/tool-cache, and it eventually calls tar, this is an issue of @actions/tool-cache

MVEMCJSUNPE commented 3 years ago

I don't think there's anything wrong with setup-deno: it's just that self-hosted runners don't have a lot of the same binaries that Github runners do. act has a similar issue: command not found