-
Notifications
You must be signed in to change notification settings - Fork 970
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
Docker containers: use node binary installed inside the container for running actions #2115
Labels
Comments
3 tasks
iammattcoleman
added a commit
to iammattcoleman/dracut
that referenced
this issue
Oct 15, 2022
This enables checkout to work in the Gentoo container. See: actions/runner#2115
Conan-Kudo
pushed a commit
to dracutdevs/dracut
that referenced
this issue
Oct 15, 2022
This enables checkout to work in the Gentoo container. See: actions/runner#2115
dscho
pushed a commit
to dscho/git
that referenced
this issue
Nov 14, 2022
To be up to date with actions/checkout opens the door to use the latest features if necessary and get the latest security patches. This also avoids a couple of deprecation warnings in the CI runs. Note: The `actions/checkout` Action has been known to be broken in i686 containers as of v2, therefore we keep forcing it to v1 there. See actions/runner#2115 for more details. Signed-off-by: Oscar Dominguez Celada <[email protected]> Signed-off-by: Junio C Hamano <[email protected]> Signed-off-by: Johannes Schindelin <[email protected]>
gitster
pushed a commit
to git/git
that referenced
this issue
Dec 6, 2022
To be up to date with actions/checkout opens the door to use the latest features if necessary and get the latest security patches. This also avoids a couple of deprecation warnings in the CI runs. Note: The `actions/checkout` Action has been known to be broken in i686 containers as of v2, therefore we keep forcing it to v1 there. See actions/runner#2115 for more details. Signed-off-by: Oscar Dominguez <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
pvalena
pushed a commit
to pvalena/dracut
that referenced
this issue
Jul 23, 2023
This enables checkout to work in the Gentoo container. See: actions/runner#2115
This issue is stale because it has been open 365 days with no activity. Remove stale label or comment or this will be closed in 15 days. |
ping. |
gitster
added a commit
to git/git
that referenced
this issue
Feb 2, 2024
We seem to be getting "Node.js 16 actions are deprecated." warnings for jobs that use checkout@v3. Except for the i686 containers job that is kept at checkout@v1 [*], update to checkout@v4, which is said to use Node.js 20. [*] 6cf4d90 (ci(main): upgrade actions/checkout to v3, 2022-12-05) refers to actions/runner#2115 and explains why container jobs are kept at checkout@v1. We may want to check the current status of the issue and move it to the same version as other jobs, but that is outside the scope of this step. Signed-off-by: Junio C Hamano <[email protected]>
tfpf
added a commit
to tfpf/dotfiles
that referenced
this issue
Jul 1, 2024
* Separated Linux build jobs from macOS and Windows build jobs. * 32-bit binaries for Linux must be built in a 32-bit container. I used Debian. * Hence, it made sense to use a 64-bit Debian container to build the 64-bit binaries, ditching Ubuntu. * Used older versions of the checkout and upload actions for Linux builds. * The newer versions don't work in containers. * actions/runner#2115 * actions/upload-artifact#361 * actions/checkout#1681 * Consequently, the an older version of the corresponding download action must be used. * The older upload action doesn't recognise wildcard patters, so specified the `bin` directory to upload. * Did the same for the newer upload action for consistency. * Moved `env` next to the step which requires the token. * Tried to build the binaries in ARM containers, but the Linux runner is an AMD64 machine, so it didn't work. * The macOS runner which is an ARM machine does not have Docker, so couldn't use it, either.
dscho
added a commit
to dscho/git
that referenced
this issue
Sep 14, 2024
In February 2023, older `actions/upload-artifact` were deprecated: https://github.blog/changelog/2024-02-13-deprecation-notice-v1-and-v2-of-the-artifact-actions/ This was recently followed by brown-outs. However, the `linux32` job relied on those, as there are well-documented problems (see actions/runner#2115 for example) running modern, Javascript-based Actions in 32-bit only containers. To get the CI builds to work again, a work-around was implemented in https://lore.kernel.org/git/[email protected] to let the 32-bit container make use of the 64-bit node 20 provided by the Actions runner. This, however, runs the risk of using 64-bit executables when we purposefully chose a Docker image that only contains 32-bit bits and pieces so that accidental use of 64-bit libraries or executables would not happen. Let's go about this the other way round instead, by overriding the amd64 version of node 20 the Actions runner provides with an x86 one (which is "officially unofficial" by virtue of being hosted on unofficial-builds.nodejs.org). This allows us to stop using the now-deprecated versions of `actions/checkout` and `actions/upload-artifact` before these Actions became Javascript-based Actions. Signed-off-by: Johannes Schindelin <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
This feature request is related to:
Context
When using - for example:
actions/checkout@v2
- in a workflow then it requiresnode
to run.The runner does attempt to provide for this and it does this by using a volume mount with target dir
/__e/
.This directory contains:
node12/bin/node
andnode16/bin/node
; these are 64-bit binaries linked with glibc (or at least that's what I assume, not 100% verified)node12_alpine/bin/node
andnode16_alpine/bin/node
: these are 64-bit binaries linked with musl (or at least that's what I assume, not 100% verified)This is not always sufficient: when deploying a 32-bit(/i386) docker container then it needs a 32-bit
node
.There are only 64 binaries in
/__e/
and one of those is used; that does not work and results in a somewhat cryptic error.1Several solutions are possible:
node
to be installed in the container; this is what this feature request is for.Describe the enhancement
Today: when an action is run
node
installed in/__e/
is used, this does not always work (see above).What I would like: make it possible to use
node
that is installed inside the container.This should make it possible to install a 32-bit node inside a 32-bit container and running it - via docker - on a 64-bit host.
Code Snippet
Links to the relevant code:
Checking for Alpine: https://github.com/actions/runner/blob/main/src/Runner.Worker/Handlers/StepHost.cs#L156
This code attempts to check if the container is running a version of Alpine or something else.
I'm assuming it does this check because Alpine is using musl as libc (and not glibc).
Setting the path of the node binary: https://github.com/actions/runner/blob/main/src/Runner.Worker/Handlers/NodeScriptActionHandler.cs#L115
This code constructs the fully-qualified-path to the
node
binary, which - currently - is always a path in/__e/
.Additional information
Another nice-to-have (but I suppose that could be a separate feature request): before attempting to run an action that requires
node
attempt to runnode --version
inside the container and if that fails provide an error message indicating thatnode
is not usable.Footnotes
Error in that case:
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: no such file or directory: unknown
↩The text was updated successfully, but these errors were encountered: