DevOps,字面意思是Development &Operations的缩写,也就是开发&运维。DevOps的方式可以让公司能够更快地应对更新和市场发展变化,开发可以快速交付,部署也更加稳定。
整体的软件开发流程包括:
PLAN–》CODE --》BUILD --》 TEST --》DEPLOY --》OPERATE --》MONITOR --》INTEGRATE
技术栈准备:
Linux
JDK
Git
Github/Gitee/GitLab
Maven
Jenkins
Docker
Docker-compose
安装docker
和docker-compose
环境:略
docker-compose 下载地址:https://github.com/docker/compose
可以使用Github
或者Gitee
作为远程Git代码仓库,可以自己部署GitLab
。
新建远程Git仓库:
(需要部署好docker和docker-compose环境)
准备docker-compose.yml 文件:
端口8080,并且将容器内/var/jenkins_home/
目录挂载到宿主机当前目录的data
目录。
version: "3.1"
services:
jenkins:
image: jenkins/jenkins
container_name: jenkins
ports:
- 8080:8080
- 50000:50000
volumes:
- ./data/:/var/jenkins_home/
使用docker-compose up -d
命令执行docker-compose.yml 文件。
使用docker-compose logs -f
命令查看docker-compose日志:
或者使用/var/jenkins_home/secrets/initialAdminPassword
命令查看密码:
note:不是在宿主机目录,而是容器内目录。
启动成功后,在浏览器访问:服务器IP+8080:
选择 选择插件来安装:
搜索 Git 勾选Git Parameter
:
搜索 publish 勾选Publish Over SSH
:
点击安装:
创建一个用户:
配置Jenkins URL,完成部署:
由于Jenkins需要从Git仓库拉取代码、需要本地构建、甚至需要直接发布自定义镜像到Docker仓库,所以Jenkins需要配置大量内容。
创建Jenkins任务:
选择源码管理 --》选择Git ,输入Git远程仓库的地址,点击保存。
点击立即构建:
可以看到源码已经拉取带Jenkins本地,可以根据第三行日志信息,查看Jenkins本地拉取到的源码。
查看Jenkins容器中/var/jenkins_home/workspace/test
的源码:
代码拉取到Jenkins本地后,需要在Jenkins中对代码进行构建,这里需要Maven的环境,而Maven需要Java的环境,接下来需要在Jenkins中安装JDK和 Maven,并且配置到Jenkins服务
。
note: 在宿主机目录,在使用docker-compose部署Jenkins的时候已经将jenkins容器内的/var/jenkins_home/
目录映射到了宿主机./data/
目录:
所以只需要把jdk和maven的压缩包上传到此目录即可。
使用tar -zxvf jdk-8u351-linux-aarch64.tar.gz
解压压缩包即可。(无需配置环境变量)
Note:
oracle jdk 官网地址:https://www.oracle.com/java/technologies/downloads/#java8-linux
Oracle下载jdk是需要登录的,这个Oracle账号亲测可用:
账号:bnptrhinldfoguijh@mytrashmailer.com
密码:#&qRfvE7rg37GhjEfDJy
使用tar -zxvf apache-maven-3.8.6-bin.tar.gz
命令解压Maven压缩包,并配置Maven的settings.xml
:
<mirror>
<id>alimavenid>
<name>aliyun mavenname>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
<mirrorOf>centralmirrorOf>
mirror>
<profile>
<id>jdk-1.8id>
<activation>
<activeByDefault>trueactiveByDefault>
<jdk>1.8jdk>
activation>
<properties>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
<maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
properties>
profile>
上面两步已经准备了jdk和maven环境,现在需要配置到Jenkins中。
JAVA_HOME:/var/jenkins_home/jdk1.8.0_351
MAVEN_HOME:/var/jenkins_home/apache-maven-3.8.6
在test项目中,配置构建环境:
选择调用底层Maven目标
,目标为package
,点击保存。
点击立即构建:
查看控制台日志:
jar包构建好之后,就可以根据情况发布到测试或生产环境,这里需要用到之前下载好的插件Publish Over SSH
。
配置远程服务器信息:
配置test任务的构建后操作,发布jar包到目标服务:
选择Send build artifacts over SSH
Source files 填写 target/*.jar
点击立即构建,查看控制台日志,并去目标服务器查看:
在服务器指定目录查看构建的jar包:
到此为止,我们实现了本地代码上传到远程仓库,通过Jenkins拉去代码,使用Maven构建打包,并将jar包发送到服务器指定目录。
基于Jenkins拉取远程Git仓库的代码进行构建发布到测试环境实现持续集成。
基于Jenkins拉取Git仓库指定发行版本的代码进行构建发布到生产环境实现CD实现持续部署。
为了让程序代码可以自动推送到测试环境基于Docker服务运行,需要添加Docker配置和脚本文件让程序可以在集成到主干的同时运行起来。
FROM adoptopenjdk/openjdk8
COPY app.jar /usr/local
WORKDIR /usr/local
CMD java -jar app.jar
version: '3.1'
services:
app:
build: ./
image: app:v1.0.0
container_name: app
ports:
- 8888:8080
在Jenkins test项目的构建后操作的Source files 增加target/*.jar,docker/*
。
Exec command 添加脚本命令:
cd /data/jenkins_project/docker
mv ../target/*.jar ./app.jar
docker-compose down
docker-compose up -d --build
docker image prune -f
点击 立即构建
进入目标服务器,使用docker ps
命令,查看容器是否启动:
浏览器访问:
到此步骤,我们完成了:
本地IDE --》远程Git仓库 --》Jenkins拉取代码 --》Jenkins使用Maven构建打包 --》发布到服务器 --》执行脚本命令启动Docker容器。
下一篇文章我们继续学习DevOps
的CI/CD
流程。