-
Notifications
You must be signed in to change notification settings - Fork 995
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
self-hosted: support Alpine #801
Comments
Bump! :D |
Bumpedybump - Would PR for alpine support be welcomed? :D |
This would be almost essential for getting proper docker-in-docker support (via this image: https://hub.docker.com/_/docker/ ) |
there's an old POC PR which has rotted on the vine a bit which has the start of what alpine would look like #495 |
Bump |
+1 I'd love to see alpine support as well. Went down a rabbit hole trying to make it work myself and couldn't get it working. |
Bump |
+1. A quick test worked. Is there a specific barrier to official support? Is it just a matter of testing? |
@hross since he's driving this area now. I imagine it's not hard technically but more of a matter of official support, building / dist, docs etc. etc. but I'm guessing here :) |
so far after installing .NET Core 6.0.100 using https://dot.net/v1/dotnet-install.sh and directly executing the Runner from the archive https://github.com/actions/runner/releases/download/v2.284.0/actions-runner-linux-x64-2.284.0.tar.gz
I end up with
Seems like musl-friendly build of .NET Core should be sufficient for executing Runner.Listener, but it's not. Did I miss anything? |
You might want to open a new issue for your problem. I don't think thats related to a alpine version of the runner image. |
any luck? |
Has anyone been able to get this working on alpine and can please share the steps on how they achieved it? |
@maciejgwizdala Did you get this working here https://github.com/maciejgwizdala/alpine-runner ? Was there anything else necessary? |
Also got this error |
The runner team should consider changing how it does Alpine detection because the glibc node runtime they use works fine if - run: |
apk add gcompat
sed -i "s:ID=alpine:ID=NotpineForGHA:" /etc/os-release If you're only using the container for GHA then you could simply build it into your Dockerfile as well, but be wary of other software that may depend on alpine fingerprinting via |
Also looking for better alpine support. As a potential user of GHA; (coming from gitlab) -> I would prefer to specify a base image (alpine or whatever I need) as part of the job and let the runner use that via docker. (also using arm64 builds) It seems like a work around might exist in GHA; but looking at LoE right now vs staying where I am. |
Bumpedybump |
Bump |
1 similar comment
Bump |
Working from the information posted by alex and reaper: apk add gcompat aspnetcore6-runtime
./bin/Runner.Listener configure
./run.sh I also required the following for my pipelines to do any valuable work: apk add iptables ip6tables docker docker-compose go g++
usermod -aG docker yourusername
rc-update add docker boot
reboot |
FWIW, with
Presumably as time marches forward and |
Bumpedybump bump |
We need alpine for docker in dockerrr |
waiting for alpine @github |
waiting for alpine https://github.com/github |
waiting for alpine https://github.com/github |
I just stumbled across the same problem. Now I have to workaround my build with running docker container manually and extract the build-artifacts :-( |
Until the node20+ used by github runners works (see actions/runner#801) we can't run a test for alpine compatibility.
* Remove outdated actions and replace where possible * Forgot to update the one that was actually failing * Disable alpine functionality check Until the node20+ used by github runners works (see actions/runner#801) we can't run a test for alpine compatibility.
Bump! Error: JavaScript Actions in Alpine containers are only supported on x64 Linux runners. Detected Linux Arm64 |
I'm doing something slightly different than y'all AFAICT. I'm not running the self-hosted runner in Alpine, but I'm running an Alpine container within the runner (self-hosted or otherwise). I hope the solution for my situation helps in yours, too. Based on the workarounds of @reaperhulk in #801 (comment) and @nekinie in #801 (comment), I did a little more digging and found a way to make NodeJS work with GitHub Actions inside Alpine. Things like Here's the extra step I'm adding to the top of my workflow to resolve this: - name: Patch native Alpine NodeJS into Runner environment
run: |
apk add docker nodejs
sed -i "s:ID=alpine:ID=NotpineForGHA:" /etc/os-release
docker run --rm -v /:/host alpine sh -c 'cd /host/home/runner/runners/*/externals/ && rm -rf node20/* && mkdir node20/bin && ln -s /usr/bin/node node20/bin/node'
shell: sh # No bash in Alpine by default This will:
With this, I get actions/checkout executed with the Alpine-native NodeJS, without need for gcompat or anything else. I hope this helps! |
And here's a simpler version without the need for another container, now that I realize there's volume support directly in the Actions Workflow: runs-on: ubuntu-latest
container:
image: alpine
volumes:
- /:/host # Jailbreak!
steps:
- name: Patch native Alpine NodeJS into Runner environment
if: runner.os == 'Linux'
run: |
apk add nodejs
sed -i "s:ID=alpine:ID=NotpineForGHA:" /etc/os-release
cd /host/home/runner/runners/*/externals/
rm -rf node20/*
mkdir node20/bin
ln -s /usr/bin/node node20/bin/node
shell: sh # No bash in Alpine by default |
Bump |
1 similar comment
Bump |
This involves a bit of fiddling so we can cross-compile the standard library tests to musl while on a GNU host. This in turn is necessary as GitHub's runner doesn't support Alpine on ARM64 hosts for some reason (actions/runner#801).
With the introduction of the ARM64 runners to the general public (https://github.com/orgs/community/discussions/148648), I ran into this issue as well: the host is the new ubuntu-24.04-arm runner and a Alpine container is/was used for running tests in a musl environment. Using the hack mentioned in #801 (comment) might work, but is likely to break if e.g. the expected Node path changes. Having proper support would be greatly appreciated 😃 |
This was a "fun" experiment, but we're not going to use these runners any time soon for the following reasons: 1. Alpine on ARM64 doesn't support Javascript actions, which is pretty much all of them. This was first reported back in 2020 (actions/runner#801), and knowing how these things go it's unlikely to be resolved any time soon. 2. The lack of Alpine support on ARM64 means we have to resort to a somewhat hacky cross-compilation approach to run tests for musl. 3. The runners are flaky and will randomly fail with Docker related errors, and produce a ton of permission errors (https://github.com/orgs/community/discussions/148648#discussioncomment-11858098). 4. Building multi-arch Docker containers is messy and requires a bunch of cargo-cult copy-pasting to get things to work. I don't want to repeat that for the nightly and stable containers _just_ so _some_ people can use those in CI jobs. 5. We already run tests on an ARM64 macOS host, so any ARM related errors are bound to pop up there, making all this effort rather redundant. We'll reconsider using the ARM64 runners at some point in the future when these issues are addressed and building multi-arch containers is made easier.
The hack still works with |
You can just not use https://github.com/userdocs/test/actions/runs/12828579208/workflow |
Alpine Linux isn't mentioned in the list of supported distributions. Is there any plan to add support soon?
The text was updated successfully, but these errors were encountered: