在CI/CD环境中部署Jenkins
Posted 最懂产品的运维
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在CI/CD环境中部署Jenkins相关的知识,希望对你有一定的参考价值。
前言
我们此次要部署的Jenkins,主要用于CI/CD
, 因此除了要安装Jenkins
外, 还需要安装docker
。
本文含有代码块, 建议在电脑上阅读。
安装JAVA 1.8
每个节点都执行:
#使用rpm安装
rpm -ivh --prefix=/usr/local/java/ https://mirror.its.sfu.ca/mirror/CentOS-Third-Party/NSG/common/x86_64/jdk-8u144-linux-x64.rpm
cat >> /etc/profile << EOF
export JAVA_HOME=/usr/local/java/jdk1.8.0_144
export JRE_HOME=/usr/local/java/jdk1.8.0_144/jre
export PATH=$PATH:$JAVA_HOME/bin
EOF
source /etc/profile
java -version
安装Maven
访问Apache Maven
下载页面获取最新稳定版:
https://maven.apache.org/download.cgi
#下载二进制的tar.gz包
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz
mkdir /usr/local/maven
tar apache-maven-3.5.2-bin.tar.gz
mv apache-maven-3.5.2 /usr/local/maven
cat > /etc/profile << EOF
export MAVEN_HOME=/usr/local/maven/apache-maven-3.5.2
EOF
source /etc/profile
mvn --version
安装Docker
由于需要使用docker build
, 需要在Jenkins上安装docker。
设置Docker加速器
为什么要设置一个加速器? 国内无法通过
docker pull
或者docker run
直接下载dockerhub
上的镜像, 需要使用国内一些服务商的加速服务来提高下载镜像速度.
如果你没有自己的私有docker镜像仓库,比如harbor
, 那insecure-registries
这一行可以移除,同时删掉上一行末尾的,
(逗号)。insecure-registries
可以设置多个, 使用逗号分割:sudo mkdir -p /etc/docker
sudo cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://h9vtw6kz.mirror.aliyuncs.com"],
"bip": "10.0.0.1/16",
"ipv6": false,
"insecure-registries": ["172.20.10.10", "172.20.20.20"]
}
EOF
sudo systemctl daemon-reload注意: 如果是使用旧版的
docker
, 比如版本1.13.1
, 上述方式设置有差异, 有需要的童鞋可以留言。安装 Docker
# 对于Jenkins、harbor等, 可以安装新版docker
# yum 会查询并安装依赖
verion=17.12.1
yum -y install https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-${version}.ce-1.el7.centos.x86_64.rpm
systemctl enable docker && systemctl start docker
# 对于Rancher、 Kubernetes等,需要安装指定版本
安装Jenkins
访问Jenkins
官方下载页面获取最新稳定版:
https://jenkins.io/download/
#选择使用`war`包
wget http://mirrors.shu.edu.cn/jenkins/war-stable/2.89.3/jenkins.war
export JENKINS_HOME=/data/jenkins
mkdir -p /data/jenkins
nohup java -jar jenkins.war &
#对于C3项目来说, 需要给Jenkins加一些启动参数:
nohup java \
-Djava.awt.headless=true \
-Dpermissive-script-security.enabled=true \
-Dhudson.tasks.MailSender.SEND_TO_UNKNOWN_USERS=true \
-DJENKINS_HOME=/data/jenkins \
-jar /data/jenkins/jenkins.war \
--logfile=/data/jenkins/jenkins.log \
--webroot=/data/jenkins/war \
--httpPort=8081 --debug=5 \
--handlerCountMax=100 --handlerCountMaxIdle=20 &
配置Jenkins
在Web上配置Jenkins
登录 http://ip:8080 ,填写Jenkins启动时生成的临时密码, 登录Jenkins, 设置新的用户和密码, 再选择安装默认插件, 完成后进入到Jenkins管理页面
系统设置
在
系统管理
->系统设置
中配置Java
,maven
环境变量,如下:Ldap配置
我们这里对接的是openLDAP
。
如果要让用户能够通过域账户登录,我们需要配置Ldap
连接,需要在插件中心安装Ldap
的插件。
在系统管理
->全局安全配置
中,勾选启用安全
并在安全域
下点选LDAP
, 按照如下配置:
安装插件
推荐插件列表
Docker plugin
docker相关支持Git plugin
Git相关支持LDAP Plugin
LDAP相关支持Maven Metadata Plugin
从nexus等仓库获取jar包及版本号Simple Theme Plugin
提供扁平化主题支持Workspace Cleanup Plugin
清理WorkspaceParameterized Trigger plugin
参数化构建中将变量传递到下一个jobEnvironment Injector
注入环境变量,并在Job执行结束后提供查看环境变量的页面pipeline utility steps
可以使用readyml等工具类方法。Permissive Script Security Plugin
Role-based Authorization Strategy
基于角色的权限管理
shell设置
Jenkins
自带的shell
行为异常诡异, 经常出现出现文件存在, 但就是提示找不到相应的文件或目录, 因此我们在系统设置中, 修改了Jenkins的默认shell为系统的bash, 避免这些异常的问题.
以上是关于在CI/CD环境中部署Jenkins的主要内容,如果未能解决你的问题,请参考以下文章
CI/CD技术专题「Jenkins实战系列」全流程介绍Jenkins环境搭建+基础部署配置(Windows->Linux)
CI/CD之jenkins结合ansible部署apache
CI/CD之jenkins结合ansible部署apache