Conversation
|
I'd keep striving to get Alpine 3.4 working tbh – it adds a bunch of very useful stuff for ppl in environments like Kubernetes and it'd be easier to deal with just one version of Alpine. Node.js definitely builds on it, I guess it's just a matter of finding out what's going on in this env. I know very little about the nodejs build environment, so it'll take some digging to figure out how things are setup |
|
|
||
| VOLUME [ "/home/{{ server_user }}/" ] | ||
|
|
||
| CMD su {{ server_user }} -c '\ |
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
|
I explored the tests a while ago and found some reasons they were failing: |
|
Two of the failures (parallel/test-net-better-error-messages-port-hostname and parallel/test-net-connect-immediate-finish) are |
|
I'd also be interested to see if, instead of having to build inside of Alpine, you can just build with musl instead of glibc – technically I think that should work. (I believe this is what rust does, for example) |
|
(actually, that idea doesn't really address the testing-in-Alpine aspect, so it's probably of only limited value) |
|
Updated to Alpine 3.4 thanks to @mhart's pointer. Here's a run on Only 3 failures: parallel/test-net-better-error-messages-port-hostname |
|
@rvagg the |
|
great, procps has done it, updated Dockerfile and we're down to just the |
2366713 to
04dea0c
Compare
It's not possible to build Alpine binaries in CentOS unless you use a cross compiler. CentOS (and almost any other generic linux) uses |
|
So this is a continuous integration part (point 3 in #301 (comment)), right? |
|
I think we need bash as requirement |
|
I guess its worth mentioning that we now have full alpine passes through both docker instances and joyent's virtualization. |
|
We should probably update to Alpine 3.5. There's also a few new Ansible modules for managing (building/running) docker containers we can replace the shell commands with. I see both as optional before merging though. |
Alpine 3.6 is released, FWIW. |
|
alpine is in the new ansible/ stuff so I'm assuming it's good there, I haven't used it myself though |
|
Is there a generic issue for tracking a build of node for alpine? Or should I just watch #989? |
|
New version of this in #992, that's what's active in CI now with Alpine 3.4, 3.5 and 3.6 running in node-test-commit-linux. I've taken the old test-digitalocean-ubuntu1604_docker_alpine34-x64-1 host out of rotation, it was set up according to this PR and has been running our Alpine 3.4 tests till now. |
This adds a config for Ubuntu 16.04 + Docker that builds and manages an Alpine Linux 3.3 container which has the Jenkins slave running inside it.
After some digging I discovered that the preferable way to run Node in Alpine is to build it in alpine rather than reusing binaries that we build for generic Linux. Initially I started down the track of emulating our nodejs.org binaries by building in a CentOS 5 container before transferring to the Alpine container for testing. I scrapped that and went for everything in Alpine, assuming that we're going to ship images with binaries created inside them specifically for Alpine.
I'm using 3.3 because I had trouble getting 3.4 to run. It doesn't seem to like something about the combination of the mount point and the
CMDand gives a weirdsherror (su: can't execute ',,,:/home/': No such file or directoryif anyone wants to chase this up).It's temporarily in CI, you can see an example run @ https://ci.nodejs.org/job/node-test-commit-linux/nodes=ubuntu1604_docker_alpine34-64/3796 (the host is misnamed btw, it's "alpine34" but should be "alpine33").
Failures that we have are:
If we don't have a path to resolving these fairly quickly then we should remove it from CI so collaborators don't get upset at all their runs failing. ATM I don't think we have a way of marking these tests flaky just for Alpine, it's done by operating system, not distro.
Where to next?
/cc @nodejs/docker @nodejs/testing @mhart