如何为Jenkinsfile Pipeline语法启用Yarn?

时间:2018-07-26 04:30:03

标签: jenkins jenkins-pipeline yarnpkg

尝试使用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吗?添加它似乎使它运行两次。

2 个答案:

答案 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)

您可以在节点工具配置中将yarn设置为可安装的依赖项: enter image description here

定义 NodeJS 工具后,您可以声明要安装的全局软件包。

您将在 Manage Jenkins 部分的 Global Tool Configuration 菜单中找到它。

每次构建管道时,该工具都会提供一个安装了 yarn NodeJS 环境。