【运维篇】基于docker,jenkins结合gitlab做自动部署

Windows上使用Docker部署GitLab和Jenkins的详细指南
本文详细介绍了如何在Windows系统上使用DockerDesktop创建GitLab和Jenkins容器,包括环境配置、镜像定制、docker-compose文件应用、GitLab和Jenkins的配置,以及SSH免密连接和项目部署的过程。

我的环境是windows系统,使用Docker Desktop制作了gitlab容器和jenkins容器,也可以在虚拟机上使用docker。

一.环境准备

gitlab有镜像我们直接使用即可,jenkins镜像有一些环境没有,我们在它的基础上添加一些环境。

需要准备的文件比较多,我百度网盘共享一下。

链接:https://pan.baidu.com/s/1K7FD-ngQQip0rgEjxQy7TA?pwd=q3ec 
提取码:q3ec

docker-compose文件中,容器卷共享,我是windows系统,如果你是linux系统需要修改一下文件路径。容器卷共享一定要加,否则容器有什么问题,数据就全丢失了。改前面为宿主机路径即可。

# 使用官方的Jenkins基础镜像
FROM jenkins/jenkins
# 切换用户为root
USER root
# 定义变量
ENV MAVEN_VERSION="3.6.3" \
    NODE_VERSION="14.21.3" 
# 设置工作目录
WORKDIR /usr/local/
ADD ./zipFile/apache-maven-${MAVEN_VERSION}-bin.tar.gz /usr/local/
ADD ./zipFile/node-v${NODE_VERSION}-linux-x64.tar.gz /usr/local/
# 建立maven软连接
RUN ln -s /usr/local/apache-maven-${MAVEN_VERSION}/bin/mvn /usr/bin/mvn
# 建立nodejs软连接
RUN ln -s /usr/local/node-v${NODE_VERSION}-linux-x64/bin/node /usr/bin/node
# 建立npm软连接
RUN ln -s /usr/local/node-v${NODE_VERSION}-linux-x64/bin/npm /usr/bin/npm

# 设置Jenkins的工作目录
ENV JENKINS_HOME /var/jenkins_home

# 暴露Jenkins的HTTP端口
EXPOSE 8080

二.制作镜像并运行docker容器

进入jenkins目录,运行docker-compose -f docker-compose.yml build制作镜像。

制作成功后使用docker-compose -f docker-compose.yml up -d运行容器,然后进去gitlab目录使用docker-compose -f docker-compose.yml up -d运行容器。

运行成功后,使用docker ps查看是否运行正常。

三.修改gitlab配置信息

进入gitlab目录下映射的data文件夹,找到config下的gitlab.rb文件,在文件中加入以下内容:

gitlab_rails['gitlab_email_from'] = "123456@qq.com"
gitlab_rails['smtp_enable'] = true 
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "123456@qq.com"
gitlab_rails['smtp_password'] = "你对应qq的smtp密码"
gitlab_rails['smtp_domain'] = "smt.qq.com"
gitlab_rails['smtp_authentication'] = 'login'
gitlab_rails['smtp_tls'] = true 
user['git_user_email'] = "123456@qq.com"

配置这个之前,需要你的邮箱开启smtp协议。配置这个之后,就可以给他人发送邮件了。

四.配置jenkins

找到该文件复制密码输入

选择安装推荐的插件

等待安装完毕

创建用户或者使用admin用户继续

配置地址供他人使用,然后点击保存并完成

开始使用jenkins

添加凭据,供jenkins拉取gitlab的项目,用户名是gitlab中存在的用户即可,密码是对应用户的密码

配置Global Pipeline Libraries库,供所有部署的项目使用一套脚本即可。gitlab创建一个项目存放脚本文件

jenkins找到这个位置配置pipeline libraries

选择刚才的凭据然后点击保存

五.创建一个pipeline项目

输入名字,选择流水线,然后点击确定

找到流水线,选择如下内容

如果不配凭据,会报如下内容,配置一个在git上的项目

maven项目下需有Jenkinsfile文件

文件内容如下

六.与远程主机建立ssh免密连接

由于没有远程主机可使用,现在使用jenkins所在的容器去连接宿主机进行部署,步骤是一样的,如果需要改别的服务器,只需把ip地址一换就可以,其它步骤是一样的。

本文宿主机是windows系统,所以使用windows系统进行演示

先进入jenkins的docker容器

输入ssh-keygen,一路回车即可。

在远程服务器先安装openssh,双击即可完成

使用cmd查看是否安装成功,出现以下信息即成功安装

也输入ssh-keygen命令,一路回车即可。因为我生成过了,我就不做演示了。

进入下图所示的文件夹,修改sshd_config文件

将最下面的这两行注释掉,这一步关系到能否免密连接

 进入jenkins服务器映射的.ssh文件夹,复制id_rsa.pub这个文件并改名为authorized_keys,然后放到目标服务器,下面截图下的.ssh文件夹下。

net stop sshd
net start sshd
使用这两个命令重启服务器的sshd服务

再次进入到jenkins容器里,使用ssh 12289@192.168.2.178连接远程服务器,第一次输入yes,有的会让你输入该用户的密码,第二次可直接进入

现在一切准备就绪,可以开始部署了。

如果还是没有免密,可以将StrictModes改为no,再重新启动服务就好。

七.部署项目

修改刚刚创建的pipeline项目,选择选项参数

看一下我配的,根据自己的项目和服务器进行配置

点击这个build with paramerters,看一下参数,没问题点击build进行部署

点击变更历史中的console output,看看是否有报错

最后输出success即成功

第一次程序会运行失败,因为没有添加任务计划程序,但是jenkins会运行成功,此时手动添加任务计划程序,windows在搜索中找到任务计划程序。

为什么不是用命令行内的方式运行是因为jenkins在断开ssh连接的时候,会将它所创建的衍生进程都关掉,所以只能使用任务计划程序这种方式。

D:\study\selfGitlabProject\jenkins\startJar.bat  7081 mail-1.0-SNAPSHOT.jar D:\study\deploymail-1.0-SNAPSHOT 

按照自己的项目修改即可,脚本文件是后台运行java程序的,所以日志得在脚本里修改一下

勾选使用最高权限运行

查看项目下是否有日志生成,如果有就说明运行成功了。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值