ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

jenkins集群部署

2022-08-10 14:02:52  阅读:228  来源: 互联网

标签:git slave 部署 集群 ssh node1 jenkins root


jenkins部署集群

环境:

两台Centos7.3系统

master:172.16.1.227

slave:172.16.1.228

其中一台作为master,另一台为slave(slave服务器上无需安装jenkins)

1.master:安装java环境,本博客里有,省略

2.master:安装配置好jenkins。下载jenkins的war包,直接执行java -jar jenkins.war &

3.master;配置免密登录slave

ssh-keygen

ssh-copy-id 172.16.1.228

4.添加一个节点(slave)

4.1点击manage jenkins

img

 

4.2下拉找到以下选项

img

 

4.3 点击左边的新建节点

 

img

 

4.4输入名称,选择permanent agent,点击确定

img

 

4.5 继续配置。按下图进行配置。注意:Credentials的配置在下一张图里:点添加-》jenkins-》按下一张图配置

img

4.6配置凭证,私钥是master上面ssh-keygen时生成的id_rsa里的内容

img

 

将如图所示内容复制进上图的私钥中即可

img

4.7配置好之后,还需要选中这个新增的凭证,如图

img

4.8配置好之后,发现slave是离线的。点击slave-1进去

 

img

4.9 点击以下位置,确认信任

img

img

4.10 接着还需要启动代理

img

4.11 成功的话会如下所示(我遇到过一种情况,就是我的java环境不是按照标准配置的,我的java安装到/usr/local/jdk中,导致无法识别报错,正常情况应该是安装到/usr/local/java中,改过目录名后修改系统环境变量后就可以了)

img

img

 


jenkins分布式部署 1.jenkins分布式概念 jenkins分布式就是有多个slave节点,当需要构建的项目非常多时,slave会承担master的工作量,在slave在上创建项目。

slave的环境要和master一致,master上安装了什么软件在slave上要准备相同的,并且路径最好保持一致,与master的区别在于不用安装jenkins

在这里插入图片描述

2.jenkins分布式部署

2.1.增加slave节点

jenkins分布式其实就是在页面上点击manage nodes and clouds新增一个节点即可

在这里插入图片描述

点击新增节点—输入节点名称即可

在这里插入图片描述

2.2.填写节点配置信息 填写节点名称:jenkins-node1-192.168.81.230

执行器数量:5(执行器数量就是执行任务的并发数)

远程工作目录:/home/jenkins(任意目录即可,不存在就会创建)

标签:node1(一定要写清楚)

用法:use this node as mush as possible

启动方式:lauch agents via shh

主机写上slave节点的ip地址,然后添加一个凭据,类型就写password即可,填写上用户名密码即可

在这里插入图片描述

配置信息截图

在这里插入图片描述

2.3.配置节点属性添加软件路径

此步骤配置主要是为了master与slave上的环境保持一致

在slave1上安装依赖软件
[root@jenkins-node1 ~]# yum -y install git java maven curl-devel expat-devel gettext-devel openssl-devel zlib-devel

[root@jenkins-node1 ~]# scp root@192.168.81.220:/usr/local/sonar-scanner-4.0.0.1744-linux/ /usr/local/


查看git安装位置
[root@jenkins-node1 ~]# rpm -ql git | less
/usr/libexec/git-core/git

查看jdk、maven路径
[root@jenkins-node1 ~]# mvn --version
Apache Maven 3.0.5 (Red Hat 3.0.5-17)
Maven home: /usr/share/maven #maven路径
Java version: 1.8.0_262, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/jre #jdk路径
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"


将脚本目录拷贝至slave1
[root@jenkins-node1 ~]# scp -r root@192.168.81.220:/script /

将路径信息填写到下图中

在这里插入图片描述

点击重启代理

在这里插入图片描述

配置成功

在这里插入图片描述

总结

如果遇到git拉取代码失败,如下图,请将git工具变量删除

在这里插入图片描述

解决方法:将git从下面移除

在这里插入图片描述

3.多运行几个项目看下是否在slave1上有执行

配置slave1连接gitlab、web集群、jenkins
[root@jenkins-node1 ~]# ssh-keygen
[root@jenkins-node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.81.210
[root@jenkins-node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.81.220
[root@jenkins-node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.81.240
[root@jenkins-node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.81.250

配置hosts
[root@jenkins-node1 ~]# vim /etc/hosts
192.168.81.210 gitlab.jiangxl.com

配置与gitlab进行连接

[root@jenkins-node1 ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDqngv/x8mgqLC7/p2Zekzpue3VzxIcQc8iEWAumrF+r1qaCOihdBRrT6njWzLZJXx1ngAaCjtcJd59tUjFzU+VrPNqKGO4tHfFXrRWEJ8NonHIc0Yj8yq0rbVcab5urujjIZEOsjLOkPNtdOfuwCJhh3BiCMnF+0HWSpN4PyH9ALFRzzGDgMREHGwKG8pwu/F0ccTk/IGBUnGgWCt0I/8ah93kRxNxsUy+P9CQRkP6P2gNWsUo9vqhN0HnejGiBVcSEZdsSkFDwo3rZcRbsO1xNy0zpvdbfhSQ/C9AlEG099Qgp0LOl3RWWklqAqBfzYEl15D3ycevl5QJ0z7xITyT root@jenkins-node1

在gitlab上添加私钥

在这里插入图片描述

运行多个项目查看分布式结果,查看是master和slave都会执行任务

在这里插入图片描述

slave1上会把从gitlab拉取的代码保存到/home/jenkins/workspace中

这个/home/jenkins是我们配置的工作目录

在这里插入图片描述

4.配置pipeline项目指定在slvae1上运行

4.1.编写pipeline脚本

pipeline{
agent { label 'node1' } //指定在node1上执行

parameters {
      string(name: 'git_version', defaultValue: 'v1.0', description: '输入tag版本')
  }

stages { //一个大的任务合集 (部署代码)
stage('获取代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '${git_version}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '9847113e-e313-4dc6-9302-dc4dec14804b', url: 'git@gitlab.jiangxl.com:root/monitor.git']]])
}
}
stage('质量扫描'){
steps {
withSonarQubeEnv('sonarqube') {
sh '/usr/local/sonar-scanner-4.0.0.1744-linux/bin/sonar-scanner -Dsonar.projectKey=${JOB_NAME} -Dsonar.sources=.'
}
}
}
stage('编译代码'){
steps {
echo "build code ok"
//sh 'mvn package'
}
}
stage('部署代码'){
steps {
sh 'sh -x /script/monitor_deploy_tag.sh'
}
}
}
}

4.2.将代码集成到项目中

pipeline{
agent { label 'node1' } //指定在node1上执行

parameters {
      string(name: 'git_version', defaultValue: 'v1.0', description: '输入tag版本')
  }

stages { //一个大的任务合集 (部署代码)
stage('获取代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '${git_version}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '9847113e-e313-4dc6-9302-dc4dec14804b', url: 'git@gitlab.jiangxl.com:root/monitor.git']]])
}
}
stage('质量扫描'){
steps {
withSonarQubeEnv('sonarqube') {
sh '/usr/local/sonar-scanner-4.0.0.1744-linux/bin/sonar-scanner -Dsonar.projectKey=${JOB_NAME} -Dsonar.sources=.'
}
}
}
stage('编译代码'){
steps {
echo "build code ok"
//sh 'mvn package'
}
}
stage('部署代码'){
steps {
sh 'sh -x /script/monitor_deploy_tag.sh'
}
}
}
}

在这里插入图片描述

4.3.构建项目

会看到在slave1上在执行

 

标签:git,slave,部署,集群,ssh,node1,jenkins,root
来源: https://www.cnblogs.com/root-123/p/16572134.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有