DevOps
| 软件开发过程&涉及工具 |
| :----------------------------------------------------------: |
| |
DevOps强调的是高效组织团队之间如果通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件
Code阶段
gitlab github gitee都可以
Build阶段
maven安装
官方下载地址:https://maven.apache.org
上传到虚拟机
[root@jenkens ~]# ls
anaconda-ks.cfg apache-maven-3.8.6-bin.tar.gz jdk-8u341-linux-i586.tar.gz
解压压缩包
[root@jenkens ~]# tar -zxf apache-maven-3.8.6-bin.tar.gz -C /usr/local/bin/
[root@jenkens ~]# tar -zxf jdk-8u341-linux-i586.tar.gz -C /usr/local/bin/
[root@jenkens ~]# mv /usr/local/bin/jdk1.8.0_341/ /usr/local/bin/jdk8
[root@jenkens ~]# mv /usr/local/bin/apache-maven-3.8.6/ /usr/local/bin/maven
配置maven
配置下载镜像源
[root@jenkens ~]# cd /usr/local/bin/maven/conf
[root@jenkens conf]# vim settings.xml
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
配置maven的jdk插件
<profiles>
<profile>
<id>jdk8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
#激活插件
<activeProfiles>
<activeProfile>jdk8</activeProfile>
</activeProfiles>
Jenkins
Jenkins介绍
Jenkins是一个integrate工具,是一个开源的持续集成平台、持续部署CI、CD的工具
Jenkins涉及到将编写完毕的代码发布到测试环境和生产环境的任务,并且涉及到了构建项目等任务
Jenkins需要大量的插件保证工作,安装成本较高,此次实验给予Docker搭建Jenkins
Jenkins最强大的就在于差劲,Jenkins官方提供了大量的插件库,来自动化CI/CD过程中的各种琐碎功能。
| 未安装插件 | 安装插件后 |
| :----------------------------------------------------------: | :----------------------------------------------------------: |
| |
|
Jenkins最主要的工作就是将GitLab(github、Gitee)上可以构建的工程代码拉取并且进行构建,再根据流程可以选择发布到测试环境或是生产环境
一般是Git仓库上的代码经过大量的测试后,确定发行版本,再发布到生产环境。
CI/CD可以理解为:
- CI过程即是Jenkins将代码拉取、构建、制作镜像交给测试人员测试。
- 持续集成:让软件代码可以持续的集成到主干上,并自动构建和测试。
- CD过程即是Jenkins将打好标签的发行标签的发行版本代码拉取、构建、制作交给运维人员部署。
- 持续交付:让经过持续集成的代码可以进行手动部署。
- 持续部署:让可以持续交付的代码随时随地的自动化部署。
| CI、CD |
| :----------------------------------------------------------: |
| |
Jenkins安装
使用docker安装jenkins
docker的安装过程看docker系列文档
下载jenkins的docker镜像
当前2022.9.29最新镜像
[root@jenkens ~]# docker pull jenkins/jenkins:2.361.1-lts
编写docker-compose.yaml
准备挂载目录
[root@jenkens ~]# mkdir /usr/local/docker/jenkins_docker/data -p
[root@jenkens jenkins]# chmod 777 -R /usr/local/docker/jenkins_docker/data
docker-compose.yaml
version: "3.1"
services:
jenkins:
image: jenkins/jenkins:2.361.1-lts
ports:
- 8080:8080
- 50000:50000
container_name: jenkins
volumes:
- /usr/local/docker/jenkins_docker/data:/var/jenkins_home/
启动容器
[root@jenkens jenkins]# docker-compose up -d
查看日志
观察是否启动成功,还可以查看到登录jenkins的初始密码
[root@jenkens jenkins]# docker-compose logs -f jenkins
配置Jenkins的国内镜像站
由于Jenkins需要下载大量内容,但是由于默认下载地址下载速度较慢,需要重新设置下载地址为国内镜像站(修改数据卷中hudson.model.UpdateCenter.xml)
镜像源列表:
首选: https://jenkins-zh.gitee.io/update-center-mirror/tsinghua/update-center.json
Jenkins 所有镜像列表: http://mirrors.jenkins-ci.org/status.html
日本的镜像:http://mirror.esuni.jp/jenkins/
http://ftp.yz.yamagata-u.ac.jp/pub/misc/jenkins/
http://ftp.tsukuba.wide.ad.jp/software/jenkins/
德国的镜像:http://jenkins.mirror.isppower.de/
http://mirror.yandex.ru/mirrors/jenkins/
官方的镜像:http://mirrors.jenkins-ci.org/
http://archives.jenkins-ci.org/
清华大学镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
演示:
#进入到你挂载到的目录下
[root@jenkens jenkins]# cd /data/jenkins/data/
#修改hudson.model.UpdateCenter.xml文件
[root@jenkens data]# vim hudson.model.UpdateCenter.xml
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://updates.jenkins.io/update-center.json</url>
</site>
</sites>
将文中的https://updates.jenkins.io/update-center.json替换成国内镜像源地址
替换后效果
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://jenkins-zh.gitee.io/update-center-mirror/tsinghua/update-center.json</url>
</site>
</sites>
#重启Jenkins
初始化Jenkins
第一次先点击这个
直接点击安装
下载时间可以会有点久,耐心等待
如果下载失败了直接继续就行了
安装必要插件
Git Parameter和Publish Over SSH
配置Jenkins
将jdk和maven移动到挂载目录中
[root@jenkens jenkins_docker]# mv /usr/local/bin/jdk8/ ./data/
[root@jenkens jenkins_docker]# mv /usr/local/bin/maven/ ./data/
#进入容器中查看是否同步进容器内
[root@jenkens jenkins_docker]# docker exec -it jenkins bash
jenkins@3c4dae34f663:/$ cd /var/jenkins_home/
#可以看到已经同步进容器内
jenkins@3c4dae34f663:~$ ls
config.xml jenkins.install.InstallUtil.installingPlugins nodeMonitors.xml secret.key userContent
copy_reference_file.log jenkins.telemetry.Correlator.xml nodes secret.key.not-so-secret users
hudson.model.UpdateCenter.xml jobs plugins secrets war
jdk8 maven queue.xml.bak updates
配置jenkins的jdk
填写完需要apply和save
配置jenkins的maven
填写完需要apply和save
配置push的服务器
填写完需要apply和save
Jenkins实现基础CI操作
首先创建一个简单的spring boot项目
进行测试
访问
创建gitee仓库(创建公共的仓库)
配置全局设置(仓库创建成功会有这两条命令)
PS C:\Users\Administrator\IdeaProjects\demo> git config --global user.name "浩爵迹"
PS C:\Users\Administrator\IdeaProjects\demo> git config --global user.email "hj580231@126.com"
使用idea自带的git插件push到仓库
push到仓库
就push上来了
Jenkins创建一个item
登录到容器中查看是否有push到Jenkins中
[root@jenkens ~]# docker exec -it jenkins bash
jenkins@3c4dae34f663:~$ cd workspace/
jenkins@3c4dae34f663:~/workspace$ ls
test test@tmp
jenkins@3c4dae34f663:~/workspace$ ls test
README.md mvnw mvnw.cmd pom.xml src
在java项目中添加一个docker目录里面存放Dockerfile和docker-compose.yaml
Dockerfile
FROM daocloud.io/library/java:8u40-jdk
COPY mytest.jar /usr/local/
WORKDIR /usr/local/
CMD java -jar mytest.jar
docker-compose.yaml
version: "3.1"
services:
mytest:
build:
context: ./
dockerfile: Dockerfile
image: mytest:v1.0.0
container_name: mytest
ports:
- 8081:8080
修改pom.xml使其构建的时候可以固定jar文件名称
修改Jenkins中创建的项目配置
修改了记得要apply和save
修改完成后,Build Now
查看容器启动情况
测试是否成功
Jenkins实现基础CD操作
posh两个版本到git仓库中并打上标签
#打标签操作
修改jenkins
测试
SonarQube
SonarQube介绍
SonarQube
是一款用于代码质量管理的开源工具,是静态代码检查工具,采用 B/S 架构它主要用于管理源代码的质量,可以支持众多计算机语言,比如 php,java, C#, go,C/C++, Cobol, JavaScrip, Groovy 等。sonar 可以通过 PMD,CheckStyle,Findbugs 等等代码规则检测工具来检测你的代码,帮助你发现代码的漏洞,Bug,异味等信息。
架构
SonarQube安装
这里使用docker进行安装
进入官网查看版本
由于sonarqube在7.8版本之后不再支持mysql,所以这里使用的是Postgre数据库
准备相关的文件夹
[root@jenkens ~]# mkdir /usr/local/docker/sonarQube_docker
拉取相关docker镜像
[root@jenkens ~]# docker pull sonarqube:8.9.9-community
[root@jenkens ~]# docker pull postgres
编写docker-compose.yaml
docker-compose.yaml
version: "3.1"
services:
db:
image: postgres
container_name: db
ports:
- 5432:5432
networks:
- sonarnet
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
sonarqube:
image: sonarqube:8.9.9-community
container_name: sonarqube
ports:
- 9000:9000
networks:
- sonarnet
depends_on:
- db
environment:
SONARQUBE_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONARQUBE_JDBC_USERNAME: sonar
SONARQUBE_JDBC_PASSWORD: sonar
networks:
sonarnet:
driver: bridge
启动容器
[root@jenkens sonarQube_docker]# docker-compose up -d
#查看日志
[root@jenkens sonarQube_docker]# docker logs -f sonarqube
如出现如下错误:
ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决办法:
[root@jenkens sonarQube_docker]# vi /etc/sysctl.conf
vm.max_map_count=262144
[root@jenkens sonarQube_docker]# sysctl -p
[root@jenkens sonarQube_docker]# docker-compose up -d
访问网页测试
默认账号密码都是admin
重置一下密码
我这里设置的新密码为sonarqube
文章评论