gitlab+jenkins+docker自动化搭建部署
gitlab+jenkins+docker自动化搭建部署
目录
一、安装Jenkins插件
Credentials # 签名证书管理插件
Gitlab # 安装后从GitLab获取代码
Git和Git Client # 用于Jenkins在GitLab中拉取源码
Gitlab Authentication # GitLab和Jenkins认证插件
Publish Over SSH # 用于通过SSH部署应用
Maven Integration # 提供Jenkins和Maven之间的深度集成
Docker # 此插件将Jenkins与Docker集成
docker-build-step # 该插件允许将各种docker命令作为构建步骤添加到您的作业中
Yet Another Docker # 又一个Docker插件。提供docker云供应
Git Parameter # 增加了从项目中配置的git存储库中选择分支、标记或修订的功能。
安装完成后重启Jenkins
二、创建gitlab账号
登录The DevSecOps Platform | GitLab官网,注册属于自己的Gitlab账号信息。
三、配置gitlab私钥,jenkins公钥。
安装Git
yum install git
安装完成后输入 git --version 查看是否安装成功,如下图所示则安装成功!
设置Git的用户名和邮箱
git config --global user.name "gitlab用户名"
git config --global user.email "你的邮箱"
输入git config --list查看是否配置成功。
生成私钥,公钥
ssh-keygen -t rsa -C "你的邮箱"
文件生成时会自定义文件名(文件路径保持不变),默认为id_rsa,因为本人还有gitHub、gitee等仓库,所以此处定义为id_rsa_gitlab,便于区分。
然后将私钥通过命令ssh-add ~/.ssh/id_rsa_gitlab添加到ssh-agent,但是会报下述错误Could not open a connection to your authentication agent,需要执行命令ssh-agent bash,然后再执行命令ssh-add ~/.ssh/id_rsa_gitlab即可。
在/root/.ssh下创建config文件:vi config 输入以下配置信息,保存退出。
Host gitlab.com
HostName gitlab.com
IdentityFile ~/.ssh/id_rsa_gitlab
配置sshd_config,vi /etc/ssh/sshd_config
UsePAM yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
重启sshd:systemctl restart sshd
配置gitlab私钥
将id_rsa_gitlab.pub私钥拷贝,点击添加新密钥,
黏贴进密钥,最后点击添加密钥添加。
输入 ssh -T git@gitlab.com 验证电脑是否与gitlab建立连接,如下图所示则连接成功!
配置jenkins公钥
进入Jenkins配置凭据。
选择存储Jenkins。
点击全局凭据。
添加凭据
配置ssh密钥类型凭据。
配置用户名密码模式类型凭据。
配置jdk、maven、git路径
Manage Jenkins -> Global Tool Configuration,开始jdk、maven、git配置
- JDK
- Maven
- Git
最后应用保存。
配置Maven加速镜像
vi /home/maven/apache-maven-3.9.4/conf/settings.xml,添加如下配置信息:
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
四、自动化搭建部署
新建任务
构建Maven项目
添加选择分支构建
前面装的Git Parameter,就是为了增加从项目中配置的git存储库中选择分支、标记或修订的功能。
添加Git参数
参数配置
源码构建
添加Git仓库链接、选择凭证。
指定分支,输入自定义的Git参数名称。
构建触发器
build
添加clean package -Dmaven.test.skip=true,清除并编译打包,不执行测试用例,也不编译测试用例
Post Steps
只会在项目build成功后执行shell脚本。
shell脚本如下(包含docker删除容器、删除镜像、打镜像、部署镜像、查看日志脚本)
echo "进入镜像路径"
cd /var/lib/jenkins/workspace/docker打包镜像测试
# 镜像名称
CONTAINER_NAME='animalhomecs'
# Checking if docker container with $CONTAINER_NAME name exists.
# 查看是否有animalhomecs容器在运行,若有则先停再删,反之不操作。
COUNT=$(docker ps -a | grep "$CONTAINER_NAME" | wc -l)
if (($COUNT > 0)); then
echo 'container exists'
docker stop ${CONTAINER_NAME}
docker rm ${CONTAINER_NAME}
fi
# 查看是否有animalhomecs镜像,若有则删除,反之不操作。
COUNT1=$(docker images | grep "$CONTAINER_NAME" | wc -l)
if (($COUNT1 > 0)); then
echo 'container exists'
docker rmi ${CONTAINER_NAME}
fi
# 构建animalhomecs镜像,这个.的作用是在构建时会去找项目下的Dockerfile文件执行。
docker build -t animalhomecs .
# 开启8081端口,运行animalhomecs项目
docker run -d -p 8081:8081 --name animalhomecs animalhomecs:latest
# 打印日志查看启动情况
docker logs --tail 1000 animalhomecs
将shell脚本添加进去即可。
因为docker build -t animalhomecs .会去找项目下的Dockerfile文件,所以我们需要在项目下添加Dockerfile,并写入shell脚本。
Dockerfile脚本如下:
# 基础镜像
FROM openjdk:8-jre
# 挂载目录(可更换)
VOLUME /root
# 创建目录(可更换和上面保持一致)
RUN mkdir -p /home/luo
# 指定路径(可更换和上面保持一致)
WORKDIR /home/luo
# 复制jar文件到路径(YouName=换成你的=jar包名称)
COPY ./target/animalHome-0.0.1-SNAPSHOT.jar /home/luo/animalHome.jar
# 启动认证服务
ENTRYPOINT ["java","-jar","/home/luo/animalHome.jar"]
最后应用再保存。
项目选择分支构建
开始构建
查看日志
构建成功
访问项目,正常访问!
更多推荐
所有评论(0)