企业级devops自动化部署学习

一:安装jdk

Jenkins需要依赖JDK,检查机器是否安装了JDK,可以使用 javac -version

所以先安装JDK11

Centos 先检查是否有安装JDK的版本,如有安装,则需要删除旧版本;

命令行 rpm -qa | grep java 会显示已经安装的JAVA package;

devops 构建信模块 devops环境搭建_linux


若已经安装了就版本,则需要先删除,删除方法是通过如下命令:

rpm -qa nodeps [java package]

检查 yum 原的 Java 11 版本:

devops 构建信模块 devops环境搭建_jvm_02


其实我们通常不用都安装这些包,只要安装如下三个就可以了;

java-11-openjdk-headless-11.0.16.0.8-1.el7_9.x86_64

java-11-openjdk-11.0.16.0.8-1.el7_9.x86_64

java-11-openjdk-devel-11.0.16.0.8-1.el7_9.x86_64

若你不清楚,建议考虑安装所有的包;安装命令如下:

yum install -y java-11-openjdk* -y

我是指安装了三个软件包,安装方法如下:

yum install -y java-11-openjdk-headless-11.0.16.0.8-1.el7_9.x86_64 java-11-openjdk-11.0.16.0.8-1.el7_9.x86_64 java-11-openjdk-devel-11.0.16.0.8-1.el7_9.x86_64

devops 构建信模块 devops环境搭建_java_03


安装完成,安装目录为:/usr/lib/jvm

devops 构建信模块 devops环境搭建_Jenkins_04


安装好后,编辑配置文件,设置环境变量:vi /etc/profile

在profile文件中添加如下内容

#set java environment

JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.16.0.8-1.el7_9.x86_64

JRE_HOME=$JAVA_HOME

CLASS_PATH=.:$JRE_HOME/lib

PATH=$PATH:$JAVA_HOME/bin

export JAVA_HOME JRE_HOME CLASS_PATH PATH

保存退出

让修改生效:source /etc/profile

验证 Java 安装版本及结果,显示如下表明已经成功安装;

devops 构建信模块 devops环境搭建_jvm_05

二:安装jenkins

1、获取jenkins的rpm包

这里我们用阿里云镜像拉取
wget https://mirrors.aliyun.com/jenkins/redhat/jenkins-2.350-1.1.noarch.rpm

2、安装jenkins

rpm -ivh jenkins-2.350-1.1.noarch.rpm

devops 构建信模块 devops环境搭建_Jenkins_06


到这里,jenkins已经安装完,

默认安装目录: /usr/lib/jenkins

工作目录: /var/lib/jenkins(对应于环境变量 JENKINS_HOME)

3、修改Jenkins配置

打开配置文件:vi /etc/sysconfig/jenkins

修改内容如下:

JENKINS_USER=“root”

JENKINS_PORT=“8888”

JENKINS_USER 必须修改,否则权限不足

JENKINS_PORT可以不修改,为了避免与tomcat服务器端口冲突,此处建议还是要改

devops 构建信模块 devops环境搭建_linux_07

4、修改jenkins.service 中的端口号

systemctl enable Jenkins

vi /usr/lib/systemd/system/jenkins.service

devops 构建信模块 devops环境搭建_devops 构建信模块_08


启动jenkins来查看jenkins所运行的端口

systemctl start jenkins

systemctl status jenkins

devops 构建信模块 devops环境搭建_Jenkins_09


jenkins端口修改成功,但此时因为防火墙问题,jenkins启动超时;

需要开放防火墙,才可以访问 Jenkins;

5、防火墙开放http服务以及8888端口

firewall-cmd --add-service=http --permanent

firewall-cmd --zone=public --add-port=8888/tcp --permanent

firewall-cmd --reload

devops 构建信模块 devops环境搭建_jvm_10

6、访问jenkins:http://192.168.19.50:8888/

devops 构建信模块 devops环境搭建_jvm_11

7、获取admin账户初始化密码并登录

cat /var/lib/jenkins/secrets/initialAdminPassword

devops 构建信模块 devops环境搭建_linux_12


将密码COPY 后输入解锁Jenkins 版面;完成解锁。

devops 构建信模块 devops环境搭建_linux_13

8、跳过插件安装

devops 构建信模块 devops环境搭建_jvm_14


devops 构建信模块 devops环境搭建_java_15

9、添加管理员账户

devops 构建信模块 devops环境搭建_linux_16


devops 构建信模块 devops环境搭建_jvm_17


devops 构建信模块 devops环境搭建_Jenkins_18


devops 构建信模块 devops环境搭建_java_19


至此,jenkins的安装配置已经完成

三、jenkins的基本使用

插件管理

Jenkins本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从Gitlab拉取代码,使用Maven构建项目等功能需要依靠插件完成。

1、安装中文汉化插件,可以使jenkins汉化

Manage Jenkins->Manage Plugins->在"available"tab列搜索"Chinese"->下载后重启

devops 构建信模块 devops环境搭建_devops 构建信模块_20


devops 构建信模块 devops环境搭建_Jenkins_21


重启jenkins后,可以看到汉化成功,不过只能支持部分汉化,没有做到全量汉化;

当然,你也可以不用汉化;

devops 构建信模块 devops环境搭建_java_22

2、Jenkins用户权限管理

安装[Role-based Authorization Strategy]插件

Jenkins用户权限管理需要使用到【Role-based Authorization Strategy】插件,下面进行安装

devops 构建信模块 devops环境搭建_java_23


安装重启后,在Manage Jenkins管理页面就会看到多出个Configure Glogal Security的安全配置选项

devops 构建信模块 devops环境搭建_linux_24


开启权限全局安全配置,授权策略选择为【Role-Based Strategy】后保存

devops 构建信模块 devops环境搭建_Jenkins_25

创建角色

devops 构建信模块 devops环境搭建_java_26


devops 构建信模块 devops环境搭建_java_27


devops 构建信模块 devops环境搭建_devops 构建信模块_28


这里有三种角色,分别对三种角色进行介绍。

Global roles(全局角色):管理员等高级用户可以创建基于全局的角色

Item role(项目角色):针对某个或者某些项目的角色

Node role(节点角色):针对节点相关的权限接下来我们创建三个角色。

baseRole:该角色为全局角色。这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑定最基本的Jenkins访问权限。注意:如果不给后续用户绑定这个角色,则会报错误

role1:该角色为项目角色。使用正则表达式绑定"auto.",意思是只能操作auto开头的项目。
role2:该角色也为项目角色。使用正则表达式绑定"test.
",意思是只能操作test开头的项目。

devops 构建信模块 devops环境搭建_Jenkins_29


devops 构建信模块 devops环境搭建_linux_30

创建用户

devops 构建信模块 devops环境搭建_Jenkins_31


分别新增zhangsan,lisi两个用户

devops 构建信模块 devops环境搭建_devops 构建信模块_32

用户绑定角色

为zhangsan绑定role1角色,为lisi绑定role2角色

devops 构建信模块 devops环境搭建_Jenkins_33


devops 构建信模块 devops环境搭建_Jenkins_34


devops 构建信模块 devops环境搭建_java_35

创建项目测试

管理员创建两个项目,auto001,test001

devops 构建信模块 devops环境搭建_devops 构建信模块_36


devops 构建信模块 devops环境搭建_java_37


用zhangsan用于登录的结果:

devops 构建信模块 devops环境搭建_jvm_38


用lisi用户登录的结果:

devops 构建信模块 devops环境搭建_Jenkins_39

3、Jenkins凭证管理

凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。
要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件。

安装Credentials Binding插件

devops 构建信模块 devops环境搭建_devops 构建信模块_40


devops 构建信模块 devops环境搭建_Jenkins_41


安装好后,在manage Jenkins中就多了【凭据配置】和【Manage Credentials】选项

devops 构建信模块 devops环境搭建_java_42

进行【凭据配置】

devops 构建信模块 devops环境搭建_Jenkins_41

5种凭据的解析:

Username with password:用户名和密码
SSH Username with private key: 使用SSH用户和密钥
Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。
Secret text:需要保存的一个加密的文本串,如钉钉机器人或Github的api token
Certificate:通过上传证书文件的方式
常用的凭据有:Username with password(用户密码)和SSH Username with private key(SSH秘钥)

Jenkins如何自动获取代码打包及部署。

为了让Jenkins支持从Gitlab拉取源码,需要在Jenkins汇总安装Git插件以及在CentOS7服务上安装Git工具

1、Jenkins 上安装git插件

devops 构建信模块 devops环境搭建_Jenkins_44

2、Jenkins添加凭证,选择用户密码类型

devops 构建信模块 devops环境搭建_Jenkins_45


devops 构建信模块 devops环境搭建_devops 构建信模块_46


devops 构建信模块 devops环境搭建_linux_47


devops 构建信模块 devops环境搭建_devops 构建信模块_46


devops 构建信模块 devops环境搭建_Jenkins_49


devops 构建信模块 devops环境搭建_linux_50

3、测试凭证是否可用

(1)配置前面新建的test001项目

devops 构建信模块 devops环境搭建_Jenkins_51


devops 构建信模块 devops环境搭建_devops 构建信模块_52

(2)在源码管理处选择Git,其中Repository URL为gitlab项目中复制出来的URL

devops 构建信模块 devops环境搭建_java_53


devops 构建信模块 devops环境搭建_devops 构建信模块_54

(3)构建项目

devops 构建信模块 devops环境搭建_jvm_55


devops 构建信模块 devops环境搭建_java_56

(4)检查构建日志

devops 构建信模块 devops环境搭建_jvm_57


devops 构建信模块 devops环境搭建_linux_58


(5)查看/var/lib/jenkins/workspace/ 目录,发现已经从Gitlab成功拉取了代码到Jenkins中。

devops 构建信模块 devops环境搭建_devops 构建信模块_59

4、Maven安装与配置

在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目。

4.1、服务器安装maven

wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

devops 构建信模块 devops环境搭建_java_60


下载完后解压

tar -zxvf apache-maven-3.6.3-bin.tar.gz

将解压文件copy 到 /opt 目录下:

mv apache-maven-3.6.3 /opt

配置环境变量

vi /etc/profile

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk

export MAVEN_HOME=/opt/apache-maven-3.6.3

export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

devops 构建信模块 devops环境搭建_java_61


查看配置是否生效

source /etc/profile #使配置生效

mvn -v #查看Maven版本

devops 构建信模块 devops环境搭建_java_62

4.2、在jenkins中全局工具配置中关联JDK和Maven

devops 构建信模块 devops环境搭建_linux_63

devops 构建信模块 devops环境搭建_jvm_64


devops 构建信模块 devops环境搭建_devops 构建信模块_65

4.3、添加jenkins全局变量

devops 构建信模块 devops环境搭建_linux_66

devops 构建信模块 devops环境搭建_devops 构建信模块_67


devops 构建信模块 devops环境搭建_Jenkins_68

4.4、修改maven的setting文件

mkdir /opt/repository #创建本地仓库目录

chmod +777 /opt/repository # 给路径加权限

vi /opt/apache-maven-3.6.3/conf/settings.xml

(1) 将本地仓库地址修改为:/opt/repository

devops 构建信模块 devops环境搭建_jvm_69


(2)追加maven仓库镜像

<mirror>
            <id>alimaven</id>
            <mirrorOf>*</mirrorOf>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/repositories/public/</url>
        </mirror>

devops 构建信模块 devops环境搭建_Jenkins_70

4.5、测试Maven配置是否成功

使用jenkins前面测试的test002项目进行配置

devops 构建信模块 devops环境搭建_java_71


构建->增加构建步骤->Execute Shell

devops 构建信模块 devops环境搭建_devops 构建信模块_72


输入命令:mvn clean package

devops 构建信模块 devops环境搭建_java_73


完成后进行构建项目:

devops 构建信模块 devops环境搭建_Jenkins_74


查看项目构建日志(控制台输出)

devops 构建信模块 devops环境搭建_devops 构建信模块_75


devops 构建信模块 devops环境搭建_java_76


构建成功了,接下来到/opt/repo目录下查看是否下载依赖包成功,可以看到相关的依赖包下载成功

devops 构建信模块 devops环境搭建_linux_77


再查看jenkins工作空间下jar包是否生成成功

ls /var/lib/jenkins/workspace/test002/target/

devops 构建信模块 devops环境搭建_jvm_78


成功访问到了项目,自此,jenkins调用maven编译打包已完成

截止到目前已经完成如下四项工作:第一:建立虚拟机第二:建立 k8s 集群第三:建立 gitlab 代码仓库第四:建立 jenkins 及 maven 打包 第五:制作镜像并发布到 k8s 集群()