分类
devops

jenkins using specially designated jdk distribution

Config tools

Add JDK
amazon-corretto-11.0.29.7.1-linux-x64
https://corretto.aws/downloads/resources/11.0.29.7.1/amazon-corretto-11.0.29.7.1-linux-x64.tar.gz

此处选择corretto,网络可达性比较好

Add NodeJS
v22.19.0
https://nodejs.org/dist/v22.19.0/node-v22.19.0-linux-x64.tar.gz

Jenkinsfile

思路
– tool包含一个名字,还包含tar.gz包的文件名,所以最终需要拿到bin的上一级目录,然后将拿到的这个bin路径附加到env.PATH左侧
– 此处必须附加到左侧,右侧无法覆盖,因为linux PATH以发现左侧第一个为准

声明式 Pipeline

pipeline {
    agent any

    tools {
        // 声明 Node.js 和 JDK 工具(仅用于自动设置 PATH)
        nodejs 'v22.19.0'
        jdk 'amazon-corretto-11.0.29.7.1-linux-x64'
    }

    environment {
        // 注意:在 declarative pipeline 中,tools 会自动设置 PATH,
        // 但如果你需要自定义路径结构(如包含子目录),需手动覆盖
        // 根据你原始逻辑,重新构造 PATH
        NODE_HOME = tool name: 'v22.19.0', type: 'nodejs'
        JAVA_HOME = tool name: 'amazon-corretto-11.0.29.7.1-linux-x64', type: 'jdk'
        PATH = "${NODE_HOME}/node-v22.19.0-linux-x64/bin:${JAVA_HOME}/amazon-corretto-11.0.29.7.1-linux-x64/bin:${env.PATH}"
    }

    stages {
        stage('echo def') {
            steps {
                sh """
                    echo NODE_HOME: ${NODE_HOME}
                    echo JAVA_HOME: ${JAVA_HOME}
                    ls -l "${NODE_HOME}"
                    ls -l "${JAVA_HOME}/amazon-corretto-11.0.29.7.1-linux-x64/"
                """
            }
        }

        stage('npm version') {
            steps {
                sh """
                    node --version
                    npm --version
                """
            }
        }

        stage('java version') {
            steps {
                sh 'java --version'
            }
        }
    }
}

脚本式 Pipeline

node{
    def nodeHome = tool name: 'v22.19.0', type: 'nodejs'
    def javaHome = tool name: 'amazon-corretto-11.0.29.7.1-linux-x64', type: 'jdk'

    stage('echo def'){
        sh """
            echo ${nodeHome};
            echo ${javaHome};
            ls -l ${nodeHome};
            ls -l ${javaHome}/amazon-corretto-11.0.29.7.1-linux-x64/;
        """
    }
    env.PATH = "${nodeHome}/node-v22.19.0-linux-x64/bin:${env.PATH}"
    env.PATH = "${javaHome}/amazon-corretto-11.0.29.7.1-linux-x64/bin:${env.PATH}"
    stage('npm version'){
        sh """
            node --version
            npm --version;
        """
    }
    stage('java version'){
        sh """
            java --version
        """
    }
}

ref