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

这篇具有很好参考价值的文章主要介绍了【运维篇】基于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系统需要修改一下文件路径。容器卷共享一定要加,否则容器有什么问题,数据就全丢失了。改前面为宿主机路径即可。

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

# 使用官方的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,jenkins结合gitlab做自动部署,运维,docker,jenkins

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

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

三.修改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

找到该文件复制密码输入

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

选择安装推荐的插件

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

等待安装完毕

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

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

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

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

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

开始使用jenkins

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

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

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

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

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

jenkins找到这个位置配置pipeline libraries

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

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

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

五.创建一个pipeline项目

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

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

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

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

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

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

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

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

maven项目下需有Jenkinsfile文件

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

文件内容如下

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

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

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

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

先进入jenkins的docker容器

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

七.部署项目

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

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

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

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

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

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

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

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

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

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

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

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

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

最后输出success即成功

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

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

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

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

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

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

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

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

勾选使用最高权限运行

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

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

【运维篇】基于docker,jenkins结合gitlab做自动部署,运维,docker,jenkins文章来源地址https://www.toymoban.com/news/detail-794042.html

到了这里,关于【运维篇】基于docker,jenkins结合gitlab做自动部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于jenkins+gitlab+docker部署zabbix

    我现在已经在一台服务器上部署了jenkins和gitlab,现在有一个场景是需要在服务器上再部署一个zabbix,需要通过jenkins加上gitlab部署,并且要求zabbix是通过docker部署的 jenkins、gitlab已完成部署并能正常访问,服务器docker能够正常使用 1、创建Git仓库: 在GitLab上创建一个新的仓库,

    2024年04月13日
    浏览(27)
  • Jenkins+GitLab+Docker搭建前端自动化构建镜像容器部署

    前言 🚀 需提前安装环境及知识点: 1、Docker搭建及基础操作 2、DockerFile文件描述 3、Jenkins搭建及基础点 🚀 目的: 将我们的前端项目打包成一个镜像容器并自动发布部署,可供随时pull访问 1、在当前项目的根目录创建Dockerfile文件并写入如下代码: 代码片段详细描述: 注意

    2024年02月05日
    浏览(55)
  • Jenkins+GitLab+Docker搭建前端自动化构建镜像容器部署(无本地证书,映射证书)

    前言 🚀 需提前安装环境及知识点: 1、Docker搭建及基础操作 2、DockerFile文件描述 3、Jenkins搭建及基础点 🚀 目的: 将我们的前端项目打包成一个镜像容器并自动发布部署,可供随时pull访问 1、在当前项目的根目录创建Dockerfile文件并写入如下代码: 代码片段详细描述: 注意

    2024年02月15日
    浏览(37)
  • Jenkins结合gitlab自动化持续集成

    大家好,我是自动化测试老司机~ 最近在公司有负责搭建自动化测试环境,自动化脚本写好后,毋庸置疑是需要将自动化脚本进行持续集成测试,能够根据企业的定制化需求,通过Jenkins触发执行构建任务,定时执行自动化脚本等,今天就给大家介绍一下Jenkins结合gitlab进行自动

    2024年02月11日
    浏览(39)
  • 小白到运维工程师自学之路 第七十九集 (基于Jenkins自动打包并部署Tomcat环境)2

      拉到最后选择构建后操作 拉到最后点击保存   访问192.168.77.19:8080/probe 账户密码都是tomcat  

    2023年08月27日
    浏览(40)
  • 基于Jenkins自动打包并部署docker环境

    目录 1、安装docker-ce 2、阿里云镜像加速器 3、构建tomcat 基础镜像  4、构建一个Maven项目 实验环境 操作系统 IP地址 主机名 角色 CentOS 7.5 192.168.200.111 git git服务器 CentOS 7.5 192.168.200.112 Jenkins git客户端 jenkins服务器 CentOS 7.5 192.168.200.113 docker web服务器 在192.168.200.113上创建远程目录

    2024年02月11日
    浏览(35)
  • Jenkins + gitlab 自动部署

    作为后台开发,每次我们开发完或者修改一个bug后都要手动合并,打包或者连接服务器执行打包部署命令,每次手动操作,极大的影响了我们的开发效率,那么有没有一款工具能让我们只需要推送/合并代码到远端就能实现服务自动打包,发布,部署,通知呢。因此,今天介绍

    2024年02月12日
    浏览(43)
  • Jenkins+Gitlab实现代码自动构建部署

    一、环境准备 主机名 ip 安装软件 jenkins 192.168.75.149 jenkins gitlab 192.168.75.147 gitlab web 192.168.75.155 部署应用 二、jenkins服务器配置 1、生产公钥 (2)获取公钥信息 公钥信息在配置 Gitlab SSH Keys 时用到。 (3)获取私钥信息 私钥信息在配置 Jenkins Publish over SSH 时用到。 (4)复制公

    2024年02月16日
    浏览(45)
  • 【Jenkins+Gitlab自动化部署配置】

    以下为整理当初参照的博客 阿里云云服务器 ECS 手动搭建GitLab避坑教程 博客文中的镜像源地址已换 Gitlab忘记root用户密码的解决办法 Gitlab学习笔记(一):基于Ubuntu的gitlab的私有服务搭建(超详细) Jenkins 构建报错:Couldn‘t find any revision to build. Verify the repository and branch conf

    2024年02月21日
    浏览(33)
  • Jenkins+gitlab实现自动化部署

    Jenkins 是一个用 Java 编写的开源自动化工具,带有用于持续集成的插件。用于持续构建和测试您的软件项目,从而使开发人员更容易将更改集成到项目中,并使用户更容易获得新的构建。它还允许您通过与大量测试和部署技术集成来持续交付软件。 Jenkins 集成了各种开发生命

    2024年02月21日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包