setup-deno
setup-deno copied to clipboard
[error] Parameter 'commandLine' cannot be null or empty.
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?
The error seems to be generated here:
https://github.com/denolib/setup-deno/blob/482dc739be8628399f8b04bd11876f7d9a24f625/dist/index.js#L4754-L4766
https://github.com/denolib/setup-deno/blob/482dc739be8628399f8b04bd11876f7d9a24f625/src/installer.ts#L193-L194
Is there gzip
in self-hosted
?
https://github.com/denolib/setup-deno/blob/482dc739be8628399f8b04bd11876f7d9a24f625/src/installer.ts#L193-L194
Is there
gzip
inself-hosted
?
This is indeed a problem, we should use the gzip implemented in pure nodejs
https://github.com/denolib/setup-deno/blob/482dc739be8628399f8b04bd11876f7d9a24f625/src/installer.ts#L193-L194
Is there
gzip
inself-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)
What are the other packages required for this action? I can check if all of them are properly installed.
I just tested self-hosted
, using Linux x64 environment, and successfully executed setup-deno
🤔
I just tested
self-hosted
, using Linux x64 environment, and successfully executedsetup-deno
thinking
What distribution did you use? I'm using a CentOs/RHEL 8 minimum install.
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.
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
Is the issue that on Centos 8 containers,
await io.which("gzip")
is returning an empty string? Then when that empty string is passed toexec.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
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
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...
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
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