在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环境变量,如下: 

    image
  • Ldap配置 
    我们这里对接的是openLDAP
    如果要让用户能够通过域账户登录,我们需要配置Ldap连接,需要在插件中心安装Ldap的插件。
    系统管理 -> 全局安全配置中,勾选启用安全并在安全域下点选LDAP, 按照如下配置: 

    image

安装插件

推荐插件列表

  • Docker plugin 
    docker相关支持

  • Git plugin 
    Git相关支持

  • LDAP Plugin 
    LDAP相关支持

  • Maven Metadata Plugin 
    从nexus等仓库获取jar包及版本号

  • Simple Theme Plugin 
    提供扁平化主题支持

  • Workspace Cleanup Plugin 
    清理Workspace

  • Parameterized Trigger plugin 
    参数化构建中将变量传递到下一个job

  • Environment 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

Jenkins企业应用

CI/CD技术专题「Jenkins实战系列」Jenkins实现自动化部署+自动化合并其他分支

Jenkins——Jenkins构建企业CI/CD持续集成持续发布平台