jenkins学习与实战
软件开发生命周期
软件开发生命周期又叫做SDLC(Software Development Life Cycle),它是集合了需求分析、设计、开发、测试和部署等过程的集合。
软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。但随着新的面向对象的设计方法和技术的成熟,软件生命周期设计方法的指导意义正在逐步减少。
生命周期的每一个周期都有确定的任务,并产生一定规格的文档(资料),提交给下一个周期作为继续工作的依据。按照软件的生命周期,软件的开发不再只单单强调“编码”,而是概括了软件开发的全过程。软件工程要求每一周期工作的开始只能必须是建立在前一个周期结果“正确”前提上的延续;因此,每一周期都是按“活动-结果-审核-再活动-直至结果正确”循环往复进展的。
大致分为如下各个阶段:
-
需求分析
这是生命周期的第一阶段,根据项目需求,团队执行一个可行性计划的分析。项目需求可能是公司内部或者客户提出的。这阶段主要是对信息的收集,也有可能是对现有项目的改善和重新做一个新的项目。还要分析项目的预算多长,可以从哪方面受益及布局,这也是项目创建的目标。
-
设计
第二阶段就是设计阶段,系统架构和满意状态(就是要做成什么样子,有什么功能),和创建一个项目计划。计划可以使用图表,布局设计或者文者的方式呈现。
-
实现
第三阶段就是实现阶段,项目经理创建和分配工作给开者,开发者根据任务和在设计阶段定义的目标进行开发代码。依据项目的大小和复杂程度,可以需要数月或更长时间才能完成。
-
测试
测试人员进行代码测试 ,包括功能测试、代码测试、压力测试等。 在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。
-
运行及维护
最后进阶段就是对产品不断的进化改进和维护阶段,根据用户的使用情况,可能需要对某功能进行修改,bug修复,功能增加等。
服务器规划
所有服务器都需要安装docker
主机名 | 主机IP | 备注 |
---|---|---|
jenkins-153 | 192.168.198.153 | 安装jenkins主节点 |
agent-154 | 192.168.198.154 | 安装jenkins工作节点 |
gitlab-152 | 192.168.198.152 | 安装gitlab |
harbor-155 | 192.168.198.155 | 需提前安装harbor |
jenkins安装
jenkins官网
https://www.jenkins.io/zh/
中文文档
https://www.jenkins.io/zh/doc/
window系统(不推荐)
自动部署
下载官网提供的msi文件即可
https://www.jenkins.io/download/thank-you-downloading-windows-installer-stable/
手动部署一
java -jar jenkins.war
手动部署二
1.部署tomcat9
2.在官网下载jenkins.war
http://mirrors.jenkins.io/war-stable/2.235.5/jenkins.war
3.将war包放入apache-tomcat-9.0.34\webapps\目录中
4.启动tomcat
cmd
cd apache-tomcat-9.0.34\bin\
执行 startup.bat 启动tomcat
5.访问jenkins
http://localhost:8080/jenkins
linux系统
直接安装jenkins(不推荐)
1.安装JDK8
yum install java-1.8.0-openjdk* -y
2.yum方式安装
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
3.或者采用rpm方式安装:在清华大学镜像源下载jenkins的rpm文件:jenkins-2.253-1.1.noarch.rpm
https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/
上传centos服务器进行安装:
rpm -ivh jenkins-2.190.3-1.1.noarch.rpm
配置jenkins
1.修改Jenkins配置
vi /etc/syscofig/jenkins
修改内容如下:
JENKINS_USER="root"
JENKINS_PORT="8888"
2.启动Jenkins服务
systemctl start jenkins
systemctl enable jenkins
3.打开浏览器访问
http://192.168.198.153:8888
获取密码
获取并输入admin账户密码
cat /var/lib/jenkins/secrets/initialAdminPassword
容器化安装(推荐)
官方版
基础镜像最新版
docker pull jenkins/jenkins:2.347
docker pull jenkins/jenkins:2.347-alpine
运行镜像
给映射目录授权
mkdir -p /data/jenkins && chown -R 1000:1000 /data/jenkins
运行容器
docker run -itd --name jenkins -p 8080:8080 -p 50000:50000 -u root -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai --restart=always -v /data/jenkins/:/var/jenkins_home/ jenkins/jenkins:2.347-alpine
查看容器启动日志并找到jenkins初始化密码
docker logs -f jenkins
浏览器测试
http://192.168.198.153:8080
中文版
中文社区
官网地址:
https://bintray.com/jenkins-zh/generic/jenkins
docker官网地址:
https://hub.docker.com/r/jenkinszh/jenkins-zh
github官网地址:
https://github.com/jenkins-zh/jenkins-formulas
基础镜像
最新版本:790MB
docker pull jenkinszh/jenkins-zh:2.267
推荐版本:618MB
docker pull jenkinszh/jenkins-zh:2.221
安装jenkins
给映射目录授权
mkdir -p /data/jenkins && chown -R 1000:1000 /data/jenkins
启动
docker run -itd --name jenkins -p 8080:8080 -p 50000:50000 -u root -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai --restart=always -v /data/jenkins:/var/jenkins_home jenkinszh/jenkins-zh:2.267
查看容器启动日志并找到jenkins初始化密码
docker logs -f jenkins
浏览器测试
http://192.168.198.153:8080
制作jenkins镜像
由于jenkins默认插件下载地址都是国外,所以国内下载插件很困难,所以就需要手动制作jenkins镜像修改插件下载地址为中文社区的地址
制作步骤
制作步骤:
1.编写Dockerfile文件。
2.从下一步骤开始。所有文件都在jenkins中文社区寻找。但是不能在windows系统创建。因为系统文
件格式不同。jenkins启动时会报错。
3.创建init.groovy文件。
4.创建hudson.model.UpdateCenter.xml
5.创建mirror-adapter.crt
6.制作镜像
7.启动容器,试运行镜像
8.jenkins工作台操作,检验插件下载速度
9.停止容器
10.删除容器
备份镜像
基础镜像
docker pull jenkins/jenkins:2.221-alpine
配置文件准备
下载文件https://github.com/jenkins-zh/jenkins-formulas/tree/2.221
将init.groovy、hudson.model.UpdateCenter.xml、mirror-adapter.crt复制到/data目录下
Dockerfile
在基础镜像中增加时区修正。安装常用软件。更新jenkins插件为中文社区地址
FROM jenkins/jenkins:2.221-alpine
#自定义jenkins镜像
# 作者信息
MAINTAINER docker jenkins
# 修改源
USER root
RUN echo "https://mirrors.aliyun.com/alpine/v3.9/main/" > /etc/apk/repositories && \
echo "https://mirrors.aliyun.com/alpine/v3.9/community/" >> /etc/apk/repositories
# 安装需要的软件,解决时区问题
RUN apk --update add curl bash tzdata && \
rm -rf /var/cache/apk/*
#修改镜像为东八区时间
ENV TZ Asia/Shanghai
ENV JENKINS_UC https://updates.jenkins-zh.cn
ENV JENKINS_UC_DOWNLOAD https://mirrors.tuna.tsinghua.edu.cn/jenkins
ENV JENKINS_OPTS="-Dhudson.model.UpdateCenter.updateCenterUrl=https://updates.jenkins-zh.cn/update-center.json"
ENV JENKINS_OPTS="-Djenkins.install.runSetupWizard=false"
COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/init.groovy
COPY hudson.model.UpdateCenter.xml /usr/share/jenkins/ref/hudson.model.UpdateCenter.xml
COPY mirror-adapter.crt /usr/share/jenkins/ref/mirror-adapter.crt
制作镜像
docker build --rm -t edu/jenkins:2.221-alpine .
启动容器
创建映射目录
mkdir -p /data/jenkins && chown -R 1000:1000 /data/jenkins
运行容器
docker run -itd --name jenkins -p 8080:8080 -p 50000:50000 -u root -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai --restart=always -v /data/jenkins/:/var/jenkins_home/ edu/jenkins:2.221-alpine
查看容器启动日志并找到jenkins初始化密码
docker logs -f jenkins
测试镜像并安装插件
http://192.168.198.153:8080
更换插件下载地址
如果插件无法安装就更新插件下载地址
清华大学:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
阿里云:https://mirrors.aliyun.com/jenkins/updates/update-center.json
华为云:https://mirrors.huaweicloud.com/jenkins/updates/update-center.json
更换步骤:
1.Manage Jenkins–>Manage Plugins->选择Advanced
2.Update Site处修改地址
3.点击submit
4.点击check now
删除镜像
停止容器
docker stop jenkins
删除容器
docker rm jenkins
备份镜像
docker save edu/jenkins:2.204.5-alpine -o edu.jenkins:2.204.5-alpine.tar
或者将镜像上传harbor私服
jenkins插件离线安装
清华大学镜像下载站:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/
jenkins节点安装
jenkins分布式
master节点负责调度任务,agent节点负责执行任务。
配置固定节点
jenkins工作台->系统管理->节点管理->新增从节点
agent节点安装软件
进入opt目录
cd /opt
JDK8
下载地址:
https://download.oracle.com/otn/java/jdk/8u331-b09/165374ff4ea84ef0bbd821706e29b123/jdk-8u331-linux-x64.tar.gz?AuthParam=1652254982_becfd6af2ef4d07b772255e25aeabcf1
tar -zxf jdk-8u331-linux-x64.tar.gz
mv jdk1.8.0_331 jdk1.8
maven3.6
下载地址:
https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -zxf apache-maven-3.6.3-bin.tar.gz
mv apache-maven-3.6.3 maven
git2.28
1.安装依赖环境:
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
2.删除yum方式安装的git:
添加依赖时自动yum安装了git1.8版本。需要先移除git1.8版本。
yum -y remove git
官网下载速度非常慢。国内加速地址大部分为windows版本。登录
https://github.com/git/git/releases查看git的最新版。不要下载带有-rc的,因为它代表了一个候选发布版本。
https://www.kernel.org/pub/software/scm/git/git-2.28.0.tar.gz
tar -zxvf git-2.28.0.tar.gz
cd git-2.28.0
配置git安装路径
./configure --prefix=/opt/git/
编译并且安装
make && make install
统一配置
vi /etc/profile
export PATH
export JAVA_HOME=/opt/jdk1.8
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export MAVEN_HOME=/opt/maven
export PATH=$MAVEN_HOME/bin:$PATH
export PATH=$PATH:/opt/git/bin
source /etc/profile
配置软连接
master节点ssh连接agent节点时需要/usr/bin/有java命令。配置java的软连接、同理配置maven、git的软连接。如果软件是yum安装的,则需要检查/usr/bin中是否有相关命令。如果没有,也需要做软连接。
ln -s /opt/jdk1.8/bin/java /usr/bin/
ln -s /opt/maven/bin/mvn /usr/bin/
ln -s /opt/git/bin/git /usr/bin
java方式连接agent
下载jar包
mkdir -p /data/workspaces
cd /data/workspaces
在google浏览器中复制jar地址
wget http://192.168.198.153:8080/jnlpJars/agent.jar
如果没有安装wget命令,选择yum方式安装:
yum install -y wget
启动连接
复制google浏览器中的启动命令:
java -jar agent.jar -jnlpUrl http://192.168.198.153:8080/computer/agent-154/slave-agent.jnlp -secret db7f1e3fc92b1d57af545cae7d836c110d3994f73b618abd94ab0d63c29cfe20 -workDir "/data/workspaces"
自由风格项目测试
配置好master和agent节点,创建一个自由风格项目,测试agent节点各种环境是否正常。
java -version
mvn -v
git version
docker version
jar包后台启动
vi jenkinsagentstart.sh
#!/bin/bash
nohup java -jar agent.jar -jnlpUrl http://192.168.198.153:8080/computer/agent-154/slave-agent.jnlp -secret db7f1e3fc92b1d57af545cae7d836c110d3994f73b618abd94ab0d63c29cfe20 -workDir "/data/workspaces" &
chmod +X jenkinsagentstart.sh
./jenkinsagentstart.sh
查看nohup启动日志:
tail -f nohup.out
SSH方式连接agent
免密配置
master节点要免密登录agent节点
生成秘钥
ssh-keygen -t rsa
按回车3次
复制公钥
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.198.154
免密登录测试
ssh 192.168.198.154
配置凭据
jenkins工作台->系统管理->凭据管理(manager credentials)
类型:SSH Username with private key
选择类型
SSH Username with private key
输入描述
agent-154-ssh
Username
root
Passphrase
123456
复制私钥到Private Key
cat /root/.ssh/id_rsa
添加agent节点
jenkins工作台->系统管理->节点管理->选择agent节点->新建从节点
Number of executors->5
远程工作目录-