Loading

Jenkisn全局工具配置

Jenkins环境安装完之后,就可以开始使用Jenkins来进行一些自动化构建发布工作。但是开始之前我们还需要配置一些全局的构建工具,比如maven和npm等。

maven+maven私服设置

安装配置maven

安全装maven全局工具

如果你安装了Jenkins推荐安装的插件,那么Maven插件已经安装好了。

image-20211223164932923

选择一个合适的Maven版本。

image-20211223165224591

经过上面的配置,Jenkins会自动从Apache官网下载对应的Maven版本。

在流水线脚本中直接使用 maven 进行构建了。

pipeline {
    agent any
    tools {
        maven 'maven3.8.4'
    }
    stages {
        stage('Hello') {
            steps {
                echo 'Hello World'
                sh 'mvn -v'
            }
        }
    }
}

关联Jenkins宿主机上面的maven(不推荐)

上面的方式会自动从Apache下载对应的maven程序,如果Jenkisn所在的宿主机上面已经安装了Maven程序,那么Jenkins可以直接关联使用。

image-20220216150053157

使用上面这种方式的话,首先需要将宿主机上的maven安装路径挂载到Jenkins容器。

使用方式的话,是和上面的方式类似的。

pipeline {
    agent any
    tools {
        maven 'maven3.6'
    }
    stages {
        stage('Hello') {
            steps {
                echo 'Hello World'
                sh 'mvn -v'
            }
        }
    }
}

使用Docker的方式

除了上面的几种方式,还可以使用maven的docker镜像来进行编译打包。需要安装Docker Pipeline插件

pipeline {
    agent {
       docker {
         image 'maven:3.8-jdk-8-slim'
         args '-u root:root'
       }
    }
    stages {
        stage('Hello') {
            steps {
                echo 'Hello World'
                sh 'mvn -v'
            }
        }
    }
}

# 或者只是让maven构建的阶段在maven容器中执行
pipeline {
    agent any
    stages {
        stage('Hello') {
            agent {
               docker {
                 image 'maven:3.8-jdk-8-slim'
               }
            }
            steps {
                echo 'Hello World'
                sh 'mvn -v'
            }
        }
    }
}

下面是执行的日志。从执行日志上可以看出,虽然使用docker容器来执行maven构建,但是Jenkins还是会先在master节点上创建一个workspace,然后将这个workspace路径挂载到启动的maven容器中。所以后续maven容器执行的操作最后都会持久化到master节点上的workspace目录。

[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/jenkins_home/workspace/test-docker-agent
[Pipeline] {
[Pipeline] isUnix
[Pipeline] withEnv
[Pipeline] {
[Pipeline] sh
+ docker inspect -f . maven:3.8.4-jdk-8-slim

Error: No such object: maven:3.8.4-jdk-8-slim
[Pipeline] isUnix
[Pipeline] withEnv
[Pipeline] {
[Pipeline] sh
+ docker pull maven:3.8.4-jdk-8-slim
3.8.4-jdk-8-slim: Pulling from library/maven
... 省略部分日志
Digest: sha256:70b47ad1e281a2d44b4dcf8d8dddf81ac24bb8d07c4d49bcf634e1d29853b4a8
Status: Downloaded newer image for maven:3.8.4-jdk-8-slim
docker.io/library/maven:3.8.4-jdk-8-slim
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] withDockerContainer
Jenkins seems to be running inside container f49c25fadd254f131ab9e286157c92e7e4226d54525fb01aa7c221c6e9f639a6
$ docker run -t -d -u 0:0 -w /var/jenkins_home/workspace/test-docker-agent --volumes-from f49c25fadd254f131ab9e286157c92e7e4226d54525fb01aa7c221c6e9f639a6 -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** maven:3.8.4-jdk-8-slim cat
$ docker top b0014eec7191267a33f1842e20afad3f56a548b32a92cc78d67876772c2afc7b -eo pid,comm
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Hello)
[Pipeline] echo
Hello World
[Pipeline] sh
+ mvn -v
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: /usr/share/maven
Java version: 1.8.0_322, vendor: Oracle Corporation, runtime: /usr/local/openjdk-8/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
$ docker stop --time=1 b0014eec7191267a33f1842e20afad3f56a548b32a92cc78d67876772c2afc7b
$ docker rm -f b0014eec7191267a33f1842e20afad3f56a548b32a92cc78d67876772c2afc7b
[Pipeline] // withDockerContainer
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

Maven私服设置

很多时候,Maven都会连接企业内部的私服,所以我们需要提供自定义的setting文件。这边介绍两种方式,第一种就是直接去修改maven软件config目录下的setting文件,第二种是通过Config File Provider插件来提供配置文件。

直接修改maven软件config目录下的配置文件

对于第一种方式来说,上面提到的三种安装方式都是类似的,这边就拿上面的第一种安装方式来举列子。

通过Jenkisn全局工具配置安装了maven以后,Jenkins会将所有的全局工具都下载到一个tools目录下,如果你没调整过Jenkins的home目录,那么应该是下面的目录。

bash-5.1# pwd
/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven3.8.4

所以,如果我们想用公司内部的setting文件,可以进入这个目录下的conf目录去修改setting文件。

通过Config File Provider插件提供配置

上面提供了一种设置全局setting文件的方法,但是不是一种好的方法。因为一般只有Jenkins的管理员才能对上面提到的全局setting文件进行修改,如果普通用户想要修改,或者自定义自己的文件的话不可能每次让管理员帮忙修改。而且setting文件中也经常会涉及到一些用户密码,这些密码怎么管理也是一个问题。

这里推荐一个Jenkisn的配置文件管理工具:Config File Provider。可以通过这个工具配置自己私有的配置文件。(这个插件没有安装的话先自己安装下)

image-20220213094813273

添加自己的maven配置文件,这个插件还可以使用Jenkins的密码凭证托管功能。

image-20220213095915037

配置server、新增加自定义的配置。

image-20220213100146090

使用下面的方式使用配置文件

 configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) 
 {
    sh 'mvn -s $MAVEN_SETTINGS clean package'
 }

node+npm私服配置

安装NodeJs

step1:安装NodeJs插件

step2:选择版本

image-20211223174633488

注意:NodeJS 自动安装在Global npm packages to install 输入 淘宝镜像,提高安装速度

cnpm --registry=https://registry.npm.taobao.org

step3:在流水线中使用

pipeline {
    agent any
    tools {
        nodejs  "node17.3.0"
    }
    stages {
        stage('Hello') {
            steps {
                echo 'Hello World'
                sh 'node -v'
            }
        }
    }
}

使用npm私服

step1:通过config-file-provider插件配置npm配置文件

config-file-provider这个插件一般情况下是已经安装好的。如果没装的话,自己先安装下。

image-20211223184029203

image-20211223184225156

image-20211223184706555

step2:在流水线中使用

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                nodejs(nodeJSInstallationName: 'node17.3.0', configId: 'npm-private') {
                      sh 'npm -v'
                      sh 'npm install'
                }
            }
        }
    }
}

用好NodeJS这个插件,还可以实现很多功能:

  • Provides NodeJS auto-installer, allowing to create as many NodeJS installations "profiles" as you want.
    The auto-installer will automatically install a given version of NodeJS, on every jenkins agent where it will be needed
  • Allows to install globally some npm packages inside each installations, these npm packages will be made available to the PATH
  • Allows to execute some NodeJS script, under a given NodeJS installation
  • Allows use custom NPM user configuration file defined with config-file-provider plugin to setup custom NPM settings
  • Add a lightweight support to DSL pipeline
  • Force 32bit architecture
  • Relocate npm cache folder using pre defined strategies
  • Allow use of a mirror repo for downloading and installing NodeJS.
posted @ 2021-12-24 13:21  程序员自由之路  阅读(947)  评论(0编辑  收藏  举报