我在Jenkinsfile中遇到Jenkins管道的问题。我的Jenkins实例上有4个不同的nodeJs版本。我想选择要在管道中使用的那个,但是官方插件示例(https://wiki.jenkins-

ci.org/display/JENKINS/NodeJS+Plugin)根本不起作用。

我尝试了第一种方法,但由于$ PATH被该tools部分覆盖而失败。

pipeline {

agent any

tools {

// I hoped it would work with this command...

nodejs 'nodejs6'

}

stages {

stage('Example') {

steps {

sh 'npm --version'

// Failed saying :

// Running shell script

//nohup: failed to run command 'sh': No such file or directory

}

}

}

}

我尝试了第二种方法,但失败了,因为该tool命令似乎根本不起作用。

pipeline {

agent any

stages {

stage('Example') {

steps {

// ... or this one

tool name: 'nodejs6'

sh 'node --version'

sh 'npm --version'

// Does not use this version of node, but the default one... 7.5.0 with npm 4.3.0

}

}

}

}

最后,我尝试了一个适用于NodeJS的工具,但是…似乎“不是很聪明”,并且不允许我正确处理我的特定版本的“

Python”-是的,我还有2个不同的版本我想以与节点相同的方式处理Python-

pipeline {

agent any

stages{

stage ('Which NodeJS'){

steps{

withEnv(["PATH+NODEJS=${tool 'nodejs6'}/bin","PATH+PYTHON27=${tool 'python27'}"]) {

// Check node version

sh 'which node' // Works properly

sh 'node -v' // Expected 6.9.x version

sh 'npm -v' // Expected 3.x version

sh 'python27 -v'

// Failed with

// /nd-jenkinsfile_XXX@tmp/xx/script.sh: python27: not found

}

}

}

}

}

我还有第四个解决方案,不使用pipeline语法。它适用于nodejs,但不适用于python(到目前为止)。再一次,手动定义似乎不是很优雅env.PATH。

node {

// Setup tools...

stage ('Setup NodeJs'){

def nodejsHome = tool 'nodejs6'

env.NODE_HOME = "${nodejsHome}"

env.PATH = "${nodejsHome}/bin:${env.PATH}"

sh 'which node'

sh 'node -v'

sh 'npm -v'

}

stage ('Setup Python 2.7'){

def pythonBin = tool 'python27'

// Jenkins docker image has Jenkins user's home in "/var/jenkins_home"

sh "rm -Rf /var/jenkins_home/tools/python ; mkdir -p /var/jenkins_home/tools/python"

// Link python to python 2.7

sh "ln -s ${pythonBin} /var/jenkins_home/tools/python/python"

// Include link in path --don't use "~" in path, it won't be resolved

env.PATH = "~/tools/python:${env.PATH}:~/tools/python"

// Displays correctly Python 2.7

sh "python --version"

}

}

总而言之,我只是想知道哪种解决方案(最好是我这里未列出的另一种解决方案)是最好的?您建议哪一个,为什么?

干杯,奥利维尔

nodejs python jedi_Jenkins管道:选择nodejs版本(+ python版本)相关推荐

  1. python就业方向选择-学完Python,你有哪些就业方向可以选?

    原标题:学完Python,你有哪些就业方向可以选? Python工资又涨了!Python好学,0基础都没问题!Python应用超级广泛,几乎无所不能!Python--随着Python的大火,连抖音里面 ...

  2. python和java选择哪个-Java、Python你会选择哪个?老男孩python

    现在很多零基础的小伙伴都想要进入到编程行业之中,无论什么情况选择哪门语言都非常重要,毕竟关系到以后的发展和薪资,很多人都知道Python是当下很火的语言,也知道Java是非常高级的编程语言,问题来了, ...

  3. python 命名管道_详解Python进程间通信之命名管道

    管道是一种简单的FIFO通信信道,它是单向通信的. 通常启动进程创建一个管道,然后这个进程创建一个或者多个进程子进程接受管道信息,由于管道是单向通信,所以经常需要创建两个管道来实现双向通信. 命名管道 ...

  4. python dict批量选择_用python实现word内容批量替换

    本文讨论一下如果使用python来批量替换word中的内容. 一.目标: 在word文档中,将水果的名称由中文替换为英文. 而且我们有多份word文档. 二.实现: 使用了python-docx 这个 ...

  5. arcgis python脚本实现从界面选择输入输出_arcgis python脚本实现从界面选择输入输出_ArcGIS Python编程案例(2)-使用ArcPy编写脚本......

    本章将涉及以下案例: 使用ArcGIS Python窗体 访问ArcPy 从脚本中执行工具 使用ArcGIS桌面软件帮助系统 使用变量存储数据 访问ArcPy中的模块 引言 地理处理任务往往是耗时且重 ...

  6. python编程培训多少钱-python培训一般多少钱?[python培训]

    python培训一般多少钱?目前有很多小伙伴对python开发非常感兴趣,而且python开发技术在当今的企业和社会受到高度重视,因此参与python培训的人员不断增加.那么,python培训一般多少 ...

  7. Python 1. 如何选择python版本,以及如何选择开发环境(IDE)

    本文为原创文章转载请注明出处,博主博客地址:http://blog.csdn.net/qq_20259459  和作者信息. 点击打开链接(原文地址超链接点击阅读原文) 这是我在神经网络和matlab ...

  8. Python启动器(py.exe)主版本次版本相同补丁版本不同解释器选择的异常问题

    Python解释器概述 在Windows中安装Python时,默认选择安排Python启动器(py.exe).Python启动器可帮助定位和执行不同版本的Python解释器. Python启动器(py ...

  9. tensorflow支持python3.83版本_Anaconda多版本Python管理以及TensorFlow版本的选择安装

    Anaconda是一个集成python及包管理的软件,记得最早使用时在2014年,那时候网上还没有什么资料,需要同时使用py2和py3的时候,当时的做法是同时安装Anaconda2和Anaconda3 ...

最新文章

  1. OpenGL概念辨析: 窗口,视口,裁剪区域
  2. java访问修饰符详解——学java,零基础不怕,不只要理论,更要实践+项目,a href=http://www.bjweixin.com太原维信科技提供 /a...
  3. [BZOJ]2563: 阿狸和桃子的游戏
  4. 最佳拟合直线_JAVA
  5. 2个多边形,其中一个包围另一个,如何将中间的环带区域涂成红色
  6. [Spring5]IOC容器_Bean管理注解方式_组件扫描配置细节
  7. 独占线程太多怎么办_电脑内存被占用太多怎么办?
  8. java socket 重连复用_Java Socket编程基础及深入讲解(示例代码)
  9. 年薪20万的前端工程师成长线路指南!
  10. 2018-2019-2 网络对抗技术 20165322 Exp8 Web基础
  11. GridView 遍历每一行,两种写法
  12. JanusGraph的使用
  13. 向量叉积和点积混合运算_向量点积叉积及其几何意义
  14. 搭建-ico图标制作
  15. ORID焦点呈现法(Focused Conversation Method)
  16. 男人不想打工一辈子,再忙也要读这10本书,提高情商智商
  17. 李维:我的回忆和一些有趣的事(About Borland)(转载)
  18. 项目管理工具 | 软件开发项目管理软件
  19. Python与OpenCV(二)——基于背景差分法的运动目标检测程序分析
  20. swift swiftJson 解析json

热门文章

  1. ViewPager之使用PagerTabStrip添加标题栏,实现滑动效果
  2. python模块的发布_(转载)Python中模块的发布与安装
  3. 桌面制作——Wallpaper Engine+Rainmeter
  4. Nodejs学习笔记(一)——基础之全局对象、包和npm
  5. ajax失败的原因,使用https协议失败的ajax请求失败的可能原因但http工作
  6. import qs from qs 安装_Python 导包难道你只会个 import 吗?
  7. windows下ping命令的结果前加上系统的当前时间
  8. 第三十二章 elk(3)- broker架构 + 引入logback
  9. Socket相关操作超时
  10. python自动化运维之python2.6升级2.7和集中病毒扫描