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

我的环境是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程序的,所以日志得在脚本里修改一下

勾选使用最高权限运行

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

  • 42
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面我将为您详细介绍一个运维工程师常用的 JenkinsGitLab 项目,包括项目的名称、描述、使用场景、配置方法和运行流程等方面的内容。 1. 项目名称:DevOpsPipeline 2. 项目描述:该项目是一个基于 JenkinsGitLab 的 DevOps 自动流水线,用于管理和协调多个开发团队的代码变更,并确保这些变更能够顺利地部署到生产环境中。 3. 使用场景: - 代码管理:使用 GitLab 托管代码仓库,并使用 Jenkins 进行持续集成和持续交付。 - 构建:使用 Jenkins 构建工具进行应用程序的编译和打包,生成可执行文件和 Docker 镜像。 - 测试:使用 Jenkins 调用测试工具进行自动测试,包括单元测试、集成测试、性能测试等。 - 部署:使用 Jenkins 部署工具将应用程序部署到测试环境、预发布环境和生产环境中。 4. 项目配置: - GitLab:创建一个 GitLab 代码仓库,并将代码推送到该仓库中。 - Jenkins:创建一个 Jenkins 项目,配置 Jenkinsfile 文件,定义构建、测试和部署的流程,并设置触发器和构建参数等。 - 测试工具:根据项目需要选择合适的测试工具,如 JUnit、Selenium、JMeter 等,并在 Jenkins 中安装和配置相应的插件和工具。 - 部署工具:根据项目需要选择合适的部署工具,如 Ansible、Docker、Kubernetes 等,并在 Jenkins 中安装和配置相应的插件和工具。 5. 项目运行流程: - 提交代码:开发人员将代码推送到 GitLab 代码仓库中。 - 自动构建:Jenkins 检测到代码变更,自动触发构建流程,编译应用程序并生成可执行文件和 Docker 镜像。 - 自动测试:Jenkins 调用测试工具进行自动测试,包括单元测试、集成测试、性能测试等。 - 自动部署Jenkins 调用部署工具将应用程序部署到测试环境、预发布环境和生产环境中。 具体实现过程如下: 1)在 GitLab 中创建一个空项目,并将项目代码上传到该项目中。 2)在 Jenkins 中创建一个新的 Pipeline 项目,将 GitLab 项目的仓库地址添加到 Jenkinsfile 文件中,定义了一系列的 stages,例如代码拉取、构建、测试、部署等,如下所示: ``` pipeline { agent any stages { stage('Code Checkout') { steps { git branch: 'master', url: 'https://gitlab.example.com/username/project.git' } } stage('Build') { steps { sh 'mvn clean package' } } stage('Test') { steps { sh 'mvn test' } } stage('Deploy') { steps { sh 'ansible-playbook deploy.yml' } } } } ``` 3)在 Jenkins 中安装并配置相应的插件和工具,如 Maven、JUnit、Ansible 等。 4)在 Jenkins 中配置触发器,可以选择定时触发、代码变更触发、手动触发等方式。 5)在 Jenkins 中配置构建参数,如构建环境、构建版本等。 6)运行 Jenkins Pipeline 项目,Jenkins自动拉取 GitLab 项目中的代码,执行构建、测试和部署的操作,并生成构建报告和部署日志。 总之,该项目的目的是为了实现 DevOps 自动流程,减少人工干预,提高应用程序的发布速度和质量,从而使开发团队能够更加专注于应用程序的开发和创新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值