尝试使用Jenkinsfile和Pipeline声明性语法与Jenkins 2一起设置简单的单元测试运行器。下面的示例几乎可以正常工作,但是我想使用yarn
代替npm
。
Jenkinsfile
#!groovy
pipeline {
agent any
tools {nodejs 'node-8.10.0'} // previously configured via Manage Jenkins -> Global Tool Configuration
stages {
stage('Unit') {
steps {
checkout scm
sh 'node -v' // 8.10.0
sh 'npm -v' // 5.6.0
sh 'npm install' // <-- desired change: 'yarn install'
sh 'npm run test:unit' // <-- desired change: 'yarn test:unit'
}
}
}
}
奖金问题:确实需要checkout scm
吗?添加它似乎使它运行两次。
答案 0 :(得分:1)
据我所知,没有针对Jenkins的yarn插件。因此,没有可以轻松在管道中使用的纱线工具,并且可以轻松安装纱线。
因此,还有其他一些可能性:
您可以在Jenkins上本地安装yarn并在管道中使用sh 'yarn install'
。请参阅https://yarnpkg.com/en/docs/install#alternatives-stable,以获取有关如何安装它的可能选项的列表。某些步骤可以很容易地在curl
解决方案等管道中编写脚本。
或者您可以通过管道中提供的npm安装纱线:
sh "npm install -g yarn"
sh "yarn install"
或者,如果您使用Java和Maven,则可以使用frontend-maven-plugin 通过Maven(在管道中有一个工具博客)安装yarn,然后通过此插件使用已安装的yarn。
在docker容器内部构建节点容器,其中已经安装了纱线
pipeline {
agent {
docker { image 'node:8.11' }
}
stages {
stage('Test') {
steps {
sh 'yarn install'
}
}
}
}
就像您观察到的那样,结帐是多余的。声明性管道将在您执行步骤之前的特殊特殊步骤中检出代码和管道脚本。
答案 1 :(得分:1)