NodeJS插件验证:Jenkins官方Alpine镜像之LTS版本
发布日期:2021-06-30 20:13:28 浏览次数:2 分类:技术文章

本文共 4850 字,大约阅读时间需要 16 分钟。

在前面的文章中我们验证了Alpine版本的Linux发行版和NodeJS安装包不兼容的情况,并给出了解决的方法。而Jenkins本身也提供Alpine版本的镜像,这篇文章来确认一下目前最新的Alpine版本(2.190.1)的镜像是否支持NodeJS插件。

获取最新lts的alpine版本Jenkins

执行命令:docker pull jenkins/jenkins:lts-alpine

liumiaocn:~ liumiao$ docker pull jenkins:lts-alpineError response from daemon: manifest for jenkins:lts-alpine not foundliumiaocn:~ liumiao$ docker pull jenkins/jenkins:lts-alpinelts-alpine: Pulling from jenkins/jenkins...省略f47b1765c187: Pull complete Digest: sha256:abbd597e5791e740ea7039951d3f694a65444b708e1c9991a85534d4e38f1bbcStatus: Downloaded newer image for jenkins/jenkins:lts-alpineliumiaocn:~ liumiao$ liumiaocn:~ liumiao$ docker images |grep jenkins |grep lts-alpinejenkins/jenkins                                 lts-alpine                      8d4feb9f9f15        3 weeks ago         226MBliumiaocn:~ liumiao$

启动Jenkins

执行命令:

docker run -d -p 8080:8080 -p 60000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-alpine

执行日志如下所示:

liumiaocn:~ liumiao$ docker run -d -p 8080:8080 -p 60000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-alpine6535aece8684557eb085061cd39199201f4237961bf0dfa75885cc1aa8dec15bliumiaocn:~ liumiao$

设定Jenkins

使用docker logs命令获取如下信息,并填入Jenkins启动页面,然后安装缺省建议的插件。

Jenkins initial setup is required. An admin user has been created and a password generated.Please use the following password to proceed to installation:f1a30728e5584561b9081805a0caa8c0This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

当前的版本是2.190.1

在这里插入图片描述

安装并设定NodeJS插件

这里使用Node 10.15.3版

在这里插入图片描述

创建Job并设定

创建一个Free Style的Job并做如下设定,仅仅确认npm和node的版本信息

在这里插入图片描述

结果分析

  • 日志分析
    第一次执行的时候的日志信息如下所示:
Started by user adminRunning as SYSTEMBuilding in workspace /var/jenkins_home/workspace/nodejs-freestyle-jobUnpacking https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.gz to /var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs10.15.3 on Jenkins

可以看到,下载和压缩的nodejs的二进制包的源就是https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.gz,而这个显然是64位的基于libc的编译结果。

由于需要从网络上下载并展开此nodejs包,所以会花费一定时间。而一旦下载并完成解压,下面的日志也随之展开。

Started by user adminRunning as SYSTEMBuilding in workspace /var/jenkins_home/workspace/nodejs-freestyle-jobUnpacking https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.gz to /var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs10.15.3 on Jenkins[nodejs-freestyle-job] $ /bin/sh -xe /tmp/jenkins5559044380616609516.sh+ npm -venv: ‘node’: No such file or directoryBuild step 'Execute shell' marked build as failureFinished: FAILURE

从结果中可以很清晰的看到,node -v也同样提示No such file or directory,表明是无法正常运行的。

  • Jenkins的Alpine基础镜像版本
    此Jenkins镜像是基于Alpine的镜像,而Alpine的版本可以从系统中的如下文件予以确认:
liumiaocn:~ liumiao$ docker exec -it mystifying_spence sh/ $ cat /etc/alpine-release 3.9.4/ $

可以看到Alpine的版本是3.9.4,而目前Alpine也没有官方支持libc的特性,所以此nodejs只有在满足所需要的libc的符号链接和函数所有库都有替代的情况下才能够正常运行。

  • 链接库状态确认
/ $ cd /var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs10.15.3/node-v10.15.3-linux-x64/~/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs10.15.3/node-v10.15.3-linux-x64 $ ldd ./bin/node	/lib64/ld-linux-x86-64.so.2 (0x7f4264595000)	libdl.so.2 => /lib64/ld-linux-x86-64.so.2 (0x7f4264595000)	librt.so.1 => /lib64/ld-linux-x86-64.so.2 (0x7f4264595000)	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x7f4264440000)	libm.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f4264595000)	libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x7f426442c000)	libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7f4264595000)	libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f4264595000)Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by ./bin/node)Error relocating ./bin/node: gnu_get_libc_version: symbol not foundError relocating ./bin/node: __register_atfork: symbol not foundError relocating ./bin/node: setcontext: symbol not foundError relocating ./bin/node: makecontext: symbol not foundError relocating ./bin/node: backtrace: symbol not foundError relocating ./bin/node: getcontext: symbol not found~/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs10.15.3/node-v10.15.3-linux-x64 $
  • 版本确认
    执行node -v和npm -v均无法正常动作,而文件又存在,根本原因就是因为libc下编译的二进制文件在musl支持的环境中运行,自然无法使用。就像我们希望windows下的exe文件能在linux下运行一样,一般是不太可行的。
~/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs10.15.3/node-v10.15.3-linux-x64 $ ./bin/node -vsh: ./bin/node: not found~/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs10.15.3/node-v10.15.3-linux-x64 $ ./bin/npm -venv: ‘node’: No such file or directory~/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs10.15.3/node-v10.15.3-linux-x64 $ ls binnode  npm  npx~/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs10.15.3/node-v10.15.3-linux-x64 $

结论

最新的Jenkins的官方的Alpine版本的镜像同样存在这个问题,如果使用了官方镜像同时又希望使用NodeJS插件的情况下,解决方法同样需要前面的文章中提到的如下解决方案:

  • https://liumiaocn.blog.csdn.net/article/details/102587460

转载地址:https://liumiaocn.blog.csdn.net/article/details/102633238 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Jenkins基础:Jenkinsfile使用实例:13:使用push命令进行镜像推送
下一篇:Jenkins基础:Jenkinsfile注意事项:条件跳转与当前路径

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月20日 21时14分21秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

使用Copper插件进行coap测试 2019-04-30
查看安卓手机文件系统方法 2019-04-30
如何实现无界面Android app 2019-04-30
如何实现Android app开机自启动 2019-04-30
安卓获取设备蓝牙信息和连接状态 2019-04-30
985毕业的“打工人”,大厂java开发2年被裁,重新出发终于拿下阿里offer 2019-04-30
张某逆境重生闭关三月,直接四杀斩获阿里/腾讯/美团/字节四offer 2019-04-30
《我想进大厂》之JVM夺命连环10问 2019-04-30
苦学3个月,含泪拿下腾讯60W Offer,五轮面试,六个小时,灵魂拷问,扶我起来我还能再战 2019-04-30
多线程基础问题整理 2019-04-30
webcosket测试端 2019-04-30
985毕业的“打工人”,java开发2年被裁,重新出发拿下阿里offer 2019-04-30
5年Java经验字节社招:半月3次面试,成功拿到Offer 2019-04-30
代码写的烂才是原罪?字节三面+微信四面+PayPal四面,大厂面经分享 2019-04-30
渣硕试水字节跳动,本以为简历都过不了,123+HR面直接拿到意向书 2019-04-30
简直人生外挂,直接涨薪20K,跪谢这份性能调优实战指南 2019-04-30
腾讯云,五轮面试,六个小时,灵魂拷问,含泪拿下 60W offer 2019-04-30
999页阿里P8Java学习笔记在互联网上火了,完整版开放下载 2019-04-30
阿里大佬真的顶啊!全面复盘金九银十,总结史上最全498道面试题附答案!来年我必进大厂 2019-04-30
年初啃完这7套Java面试题,年后阿里P7稳了,收藏夹吃灰 2019-04-30