外部Jenkins调用容器中Slave配置实践
1.Jenkins配置
实现动态生成的Slave节点并调用,解决构建项目出现slave节点任务堵塞或者是slave宕机问题。容器平台采用openshift。
参考配置文档:https://blog.csdn.net/felix_yujing/article/details/78725142
参考配置文档:https://www.imooc.com/article/35851
1.1 jenkins jnlp配置

1.2.Kubernetes配置
名称: 默认使用Kubernetes即可
Kubernetes地址: 填写paas平台地址
Kubernetes证书: 填写paas平台中名称空间中的jenkins的secret中的token,选择ca.crt内容。
Kubernetes命名空间: 填写jenkins的项目空间 。
凭据: 通证书一样的获取方式,只不过获取的不再试ca.crt内容,而是token。复制创建jenkins的凭据,凭据选择secret text格式。


2.Jenkins Slave配置
2.1 Dockerfile
镜像仓库:https://hub.docker.com/search/?q=openshift%20jenkins%20slave%20&type=image
FROM registry.it.com/openshift/jenkins-jnlp-slave:latest
USER root RUN rm -fr /usr/share/jenkins/slave.jar
RUN rm -fr /usr/local/bin/jenkins-slave COPY agent.jar /usr/share/jenkins/agent.jar
COPY jenkins-slave /usr/local/bin/jenkins-slave RUN chmod 777 /usr/share/jenkins/agent.jar
RUN chmod 777 /usr/local/bin/jenkins-slave
2.2 JenkinsSlave脚本
#!/bin/bash #env | grep "JENKINS" >>env.txt
#env | grep "JENKINS" echo "[DEBUG] ----nohup java -jar /usr/share/jenkins/agent.jar -jnlpUrl ${JENKINS_URL}/computer/${JENKINS_AGENT_NAME}/slave-agent.jnlp -secret ${JENKINS_SECRET} -workDir /home/jenkins/agent >slave.log & -----" java -jar /usr/share/jenkins/agent.jar -jnlpUrl ${JENKINS_URL}/computer/${JENKINS_AGENT_NAME}/slave-agent.jnlp -secret ${JENKINS_SECRET} -workDir "/home/jenkins/agent"
3.附加资料
jenkins slave pod的环境变量
SSO_PORT_8443_TCP_ADDR=172.30.49.148
JENKINS_SECRET=0d5d47fe01f40be6a8619f15658c7ceabfb572dc8d0eaff81f09e8b7b7bc21be
KUBERNETES_PORT=tcp://172.30.0.1:443
GITLAB_CE_PORT_22_TCP_ADDR=172.30.101.86
GITLAB_CE_REDIS_SERVICE_PORT=6379
KUBERNETES_SERVICE_PORT=443
GITLAB_CE_REDIS_PORT=tcp://172.30.96.128:6379
JENKINS_JNLP_PORT=tcp://172.30.203.97:50000
JENKINS_JNLP_SERVICE_PORT=50000
TOMCAT_SERVICE_PORT_8080_TCP=tcp://172.30.83.232:8080
GITLAB_CE_REDIS_SERVICE_PORT_6379_REDIS=6379
GITLAB_CE_REDIS_PORT_6379_TCP_ADDR=172.30.96.128
SSO_PORT_8443_TCP_PORT=8443
HOSTNAME=jenkins-slave-3x91r-jng3h
CUS_SERVICE_PORT_8080_TCP_ADDR=172.30.126.105
SSO_PORT=tcp://172.30.49.148:8443
SSO_SERVICE_PORT=8443
GITLAB_CE_PORT_22_TCP_PORT=22
SSO_PORT_8443_TCP_PROTO=tcp
CUS_SERVICE_SERVICE_HOST=172.30.126.105
DEVOPS_SERVICE_PORT_35357_TCP=tcp://172.30.100.200:35357
GITLAB_CE_PORT_80_TCP_ADDR=172.30.101.86
JENKINS_JNLP_PORT_50000_TCP=tcp://172.30.203.97:50000
GITLAB_CE_PORT_22_TCP_PROTO=tcp
HOME=/home/jenkins
GITLAB_CE_REDIS_PORT_6379_TCP_PORT=6379
KUBERNETES_PORT_53_TCP_ADDR=172.30.0.1
GITLAB_CE_REDIS_PORT_6379_TCP_PROTO=tcp
CUS_SERVICE_PORT_8080_TCP_PORT=8080
JENKINS_PORT_80_TCP=tcp://172.30.217.110:80
CUS_SERVICE_PORT_8080_TCP_PROTO=tcp
GITLAB_CE_PORT_80_TCP_PORT=80
CUS_WEB_SERVICE_HOST=172.30.234.55
GITLAB_CE_PORT_80_TCP_PROTO=tcp
KUBERNETES_PORT_53_UDP_ADDR=172.30.0.1
KUBERNETES_PORT_53_TCP_PORT=53
KUBERNETES_PORT_53_TCP_PROTO=tcp
CUS_SERVICE_SERVICE_PORT=8080
CUS_SERVICE_PORT=tcp://172.30.126.105:8080
SSO_PORT_8443_TCP=tcp://172.30.49.148:8443
EUREKA_SERVICE_SERVICE_HOST=172.30.235.146
KUBERNETES_PORT_53_UDP_PORT=53
GATEWAY_SERVICE_SERVICE_HOST=172.30.61.82
KUBERNETES_SERVICE_PORT_DNS=53
KUBERNETES_PORT_53_UDP_PROTO=udp
GITLAB_CE_PORT_22_TCP=tcp://172.30.101.86:22
JAVA_VERSION=8u181
GATEWAY_SERVICE_PORT_9090_TCP_ADDR=172.30.61.82
GITLAB_CE_POSTGRESQL_PORT_5432_TCP_ADDR=172.30.120.59
GITLAB_CE_REDIS_PORT_6379_TCP=tcp://172.30.96.128:6379
CUS_SERVICE_PORT_8080_TCP=tcp://172.30.126.105:8080
DEVOPS_WEB_PORT_9002_TCP_ADDR=172.30.51.98
CUS_WEB_PORT=tcp://172.30.234.55:8088
DEVOPS_SERVICE_SERVICE_HOST=172.30.100.200
CUS_WEB_SERVICE_PORT=8088
GATEWAY_SERVICE_PORT_9090_TCP_PORT=9090
GITLAB_CE_PORT_80_TCP=tcp://172.30.101.86:80
CUS_WEB_PORT_8088_TCP_ADDR=172.30.234.55
GITLAB_CE_POSTGRESQL_SERVICE_HOST=172.30.120.59
CA_CERTIFICATES_JAVA_VERSION=20170531+nmu1
TERM=xterm
GITLAB_CE_POSTGRESQL_PORT_5432_TCP_PORT=5432
GATEWAY_SERVICE_PORT_9090_TCP_PROTO=tcp
EUREKA_SERVICE_PORT_8761_TCP_ADDR=172.30.235.146
KUBERNETES_PORT_443_TCP_ADDR=172.30.0.1
GATEWAY_SERVICE_SERVICE_PORT=9090
GATEWAY_SERVICE_PORT=tcp://172.30.61.82:9090
GITLAB_CE_POSTGRESQL_PORT_5432_TCP_PROTO=tcp
EUREKA_SERVICE_SERVICE_PORT=8761
EUREKA_SERVICE_PORT=tcp://172.30.235.146:8761
KUBERNETES_PORT_53_TCP=tcp://172.30.0.1:53
DEVOPS_WEB_PORT_9002_TCP_PORT=9002
DEVOPS_WEB_PORT_9002_TCP_PROTO=tcp
CUS_WEB_PORT_8088_TCP_PORT=8088
GITLAB_CE_SERVICE_PORT_22_SSH=22
JAVA_DEBIAN_VERSION=8u181-b13-2~deb9u1
AGENT_WORKDIR=/home/jenkins/agent
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
KUBERNETES_PORT_53_UDP=udp://172.30.0.1:53
DEVOPS_WEB_SERVICE_HOST=172.30.51.98
CUS_WEB_PORT_8088_TCP_PROTO=tcp
EUREKA_SERVICE_PORT_8761_TCP_PORT=8761
JENKINS_SERVICE_HOST=172.30.217.110
EUREKA_SERVICE_PORT_8761_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_PORT=443
DEVOPS_SERVICE_SERVICE_PORT=35357
DEVOPS_SERVICE_PORT=tcp://172.30.100.200:35357
KUBERNETES_PORT_443_TCP_PROTO=tcp
JENKINS_URL=http://10.130.210.151:8080/
GITLAB_CE_POSTGRESQL_PORT=tcp://172.30.120.59:5432
GITLAB_CE_POSTGRESQL_SERVICE_PORT=5432
LANG=C.UTF-8
JENKINS_AGENT_NAME=jenkins-slave-3x91r-jng3h
GATEWAY_SERVICE_PORT_9090_TCP=tcp://172.30.61.82:9090
KUBERNETES_SERVICE_PORT_DNS_TCP=53
GITLAB_CE_POSTGRESQL_PORT_5432_TCP=tcp://172.30.120.59:5432
GITLAB_CE_SERVICE_PORT_80_HTTP=80
DEVOPS_WEB_PORT=tcp://172.30.51.98:9002
DEVOPS_WEB_PORT_9002_TCP=tcp://172.30.51.98:9002
DEVOPS_WEB_SERVICE_PORT=9002
JENKINS_SERVICE_PORT=80
JENKINS_PORT=tcp://172.30.217.110:80
TOMCAT_SERVICE_PORT_8080_TCP_ADDR=172.30.83.232
TOMCAT_SERVICE_SERVICE_HOST=172.30.83.232
CUS_WEB_PORT_8088_TCP=tcp://172.30.234.55:8088
EUREKA_SERVICE_PORT_8761_TCP=tcp://172.30.235.146:8761
JENKINS_NAME=jenkins-slave-3x91r-jng3h
GITLAB_CE_SERVICE_HOST=172.30.101.86
KUBERNETES_PORT_443_TCP=tcp://172.30.0.1:443
KUBERNETES_SERVICE_PORT_HTTPS=443
DEVOPS_SERVICE_PORT_35357_TCP_ADDR=172.30.100.200
JENKINS_JNLP_PORT_50000_TCP_ADDR=172.30.203.97
TOMCAT_SERVICE_PORT_8080_TCP_PORT=8080
KUBERNETES_SERVICE_HOST=172.30.0.1
TOMCAT_SERVICE_PORT_8080_TCP_PROTO=tcp
JENKINS_SERVICE_PORT_WEB=80
GITLAB_CE_REDIS_SERVICE_HOST=172.30.96.128
JAVA_HOME=/docker-java-home
PWD=/home/jenkins
JENKINS_PORT_80_TCP_ADDR=172.30.217.110
JENKINS_JNLP_SERVICE_HOST=172.30.203.97
JENKINS_JNLP_SERVICE_PORT_AGENT=50000
DEVOPS_SERVICE_PORT_35357_TCP_PORT=35357
JENKINS_JNLP_PORT_50000_TCP_PORT=50000
TOMCAT_SERVICE_SERVICE_PORT=8080
JENKINS_JNLP_PORT_50000_TCP_PROTO=tcp
DEVOPS_SERVICE_PORT_35357_TCP_PROTO=tcp
TOMCAT_SERVICE_PORT=tcp://172.30.83.232:8080
SSO_SERVICE_HOST=172.30.49.148
JENKINS_PORT_80_TCP_PORT=80
GITLAB_CE_POSTGRESQL_SERVICE_PORT_5432_POSTGRESQL=5432
JENKINS_PORT_80_TCP_PROTO=tcp
GITLAB_CE_PORT=tcp://172.30.101.86:22
GITLAB_CE_SERVICE_PORT=22
外部Jenkins调用容器中Slave配置实践的更多相关文章
- 配置django的环境实现外部脚本调用django中的模型类
通过导入os模块,os设置django的settings文件,配置好django项目的环境,然后执行django.set_up()使环境生效,然后就可以导入模型类,使用增删改查
- redis 在我做的容器中的配置路劲
配置 /etc/redis/redis.conf 数据库位置 /var/lib/redis/dump.rdb
- 7 -- Spring的基本用法 -- 5... Spring容器中的Bean;容器中Bean的作用域;配置依赖;
7.5 Spring容器中的Bean 7.5.1 Bean的基本定义和Bean别名 <beans.../>元素是Spring配置文件的根元素,该元素可以指定如下属性: default-la ...
- Java容器化参数配置最佳实践
Java是以VM为基础的,而云原生讲究的就是Native,天然的矛盾,虽然Quarkus是为GraalVM和HotSpot量身定制的K8s Native Java框架,生态原因切换成本太高,这种矛盾体 ...
- 5.云原生之Docker容器网络介绍与实践
转载自:https://www.bilibili.com/read/cv15185166/?from=readlist 例如, 当在一台未经过特殊网络配置的centos 或 ubuntu机器上安装完d ...
- 【Spring注解开发】组件注册-使用@Configuration和@Bean给容器中注册组件
写在前面 在之前的Spring版本中,我们只能通过写XML配置文件来定义我们的Bean,XML配置不仅繁琐,而且很容易出错,稍有不慎就会导致编写的应用程序各种报错,排查半天,发现是XML文件配置不对! ...
- 在容器中运行 Jenkins pipeline 任务
持续集成中的 pipeline 技术和 docker 都是当前正在发展的主流方向,当然把它们结合起来在 CI/CD 过程中发挥出更强大的威力也是大家共同的目标.本文将介绍如何在 Jenkins pip ...
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
- jenkins自动化构建iOS应用配置过程中遇到的问题
最近配置jenkins来自动构建iOS应用,期间遇上不少问题.在这里分享给大家,也给自己留个底,方便下次解决问题. 首先说明下基本情况,我们因为部署jenkins的机器不是Mac,所以不能安装Xcod ...
随机推荐
- base64加密和解码原理和代码
Base64编码,是我们程序开发中经常使用到的编码方法.它是一种基于用64个可打印字符来表示二进制数据的表示方法.它通常用作存储.传输一些二进制数据编码方法!也是MIME(多用途互联网邮件扩展,主要用 ...
- Linux常用系统命令
致歉:各位看到此博客的朋友们 因为命令的数量挺多的很多命令也都很简单 我就总结了一下具体的命令和这个命令是做什么的,主要的使用方法是链接到http://man.linuxde.net/的网站的,请各 ...
- Android RecycleView 自定义Item的使用
自定义布局的RecycleView需要自己实现Adapter,ViewHolder和布局: 自定义Adapter继承RecycleView.Adapter,重写getItemCount(),onBin ...
- 9.4、__del__、__doc__、__dict__、__module__、__getitem__、__setitem__、__delitem__、__str__、__repr__、__call__
相关内容: __del__.__doc__.__dict__.__module__.__getitem__.__setitem__.__delitem__.__str__.__repr__.__cal ...
- Oracle EBS FA 资产取值
SELECT fb.book_type_code, fth.ASSET_NUMBER, fdh.units_assigned, fdh.assigned_to, pf.FULL_NAME, fl.se ...
- Excel的快速录入
数据有效性: 1.选择要限制数据有效性的区域: 2.点开[数据]选项卡选择”数据验证“: 3.[设置]中选择”序列": 4.若手动输入则需要将内容使用英文符号分割开来(比如:A级,B级): ...
- EntityFramework Code-First 简易教程(十)-------多对多
配置Many-to-Many(多对多)关系: 这里有两个类,Student和Course,一个Student可以有多个Course,一个Course也可以有多个Student,所以这就成了多对多关系. ...
- 上下文管理器——with语句的实现
前言 with语句的使用给我们带来了很多的便利,最常用的可能就是关闭一个文件,释放一把锁. 既然with语句这么好用,那我也想让我自己写的代码也能够使用with语句,该怎么实现? 下面具体介绍怎样实现 ...
- .NET Core launch.json 简介
1.环境 Windows,.NET Core 2.0,VS Code dotnet> dotnet new console -o myApp 2.launch.json配置文件 { // Use ...
- 第3章 Git使用人门
[初识Github] 首先让我们大家一起喊一句“Hello Github”.YEAH!就是这样. Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理 ...