GitLab通过CI/CD 实现实现流水线部署(演示主要是通过shell上传SpringBoot项目)

  • 环境准备
    • 1.JDK:
    • 2.maven:
    • 3.Git
    • 4.Docker (本次安装没有使用到,仅做了解使用)
  • GitLab安装
    • 1.安装:
    • 2.安装gitlab-runner
    • 3.gitlab-runner 注册:
    • 3.编辑流水线配置:
  • 三、安装的时候遇到的问题:
    • 1.window11虚拟机点开就蓝屏:
    • 2.出现不兼容:

环境准备

安装包已经准备好,可以直接下载: https://download.csdn.net/download/a_rukh/87102966

1.JDK:

  • 将包上传到对应的目录下
  • 使用tar -zxvf jdk-8u161-linux-x64.tar.gz 进行解压包
  • 修改配置文件:vi /etc/profile
export JAVA_HOME=/home/soft/java8/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  • 通过source /etc/profile 进行重新编译
  • 通过java -version查看是否已经安装成功

2.maven:

  • 包解压跟jdk一样
  • 找到localRepository,并进行修改本地仓库地址(conf/setting.xml文件下)
  • 添加mirror:
<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>
</mirror>
  • 修改配置文件
export MAVEN_HOME=/home/soft/maven/maven
export PATH=$PATH:$MAVEN_HOME/bin
  • 通过source /etc/proflie进行重新编译
  • 通过mvn -version查看是否已经安装成功

3.Git

  • 解压跟jdk一样
  • 安装编译所需要的依赖

提示:安装编译源码所需要依赖的时候,yum自动安装了git(版本为1.8),这个时候需要卸载旧版的git(yum remove git)

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
  • 编译git源码 make prefix=/home/soft/git/git all (/home/soft/git为文件所在的路径)
  • 安装git的路径 make prefix=/home/socf/git/git install
  • 配置环境变量:vi /etc/profile
export PATH=$PATH:/home/soft/git/git

4.Docker (本次安装没有使用到,仅做了解使用)

  • 安装: yum install -y docker
  • 查看状态:systemctl status docker
  • docker启动:systemctl start docker/systemctl start docker.service
  • service docker start
  • 重启docker服务:systemctl restart docker
  • sudo service docker restart
  • 关闭docker:systemctl stop docker
  • service docker stop
  • 查看所有镜像:docker images
  • 生成镜像:docker build -t 镜像名称:
  • 删除镜像:docker rmi 镜像名称
  • 启动镜像并实现端口映射:docker run -p 192.168.211.128:8081:8081 镜像名称
  • 生成容器并且启动镜像:docker run -d -p --name 容器名称 镜像名称

GitLab安装

前置条件:关闭防火墙,查看防火墙的状态:
systemctl status firewalld.service
systemctl stop firewalld 关闭防火墙

1.安装:

  • 配置yum源: vi /etc/yum.repos.d/gitlab-ce.repo

复制以下内容然后保存退出

[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
  • 更新本地源:yum makecache
  • 安装gitlab社区版:yum install gitlab-ce
  • 安装完成后的默认目录:
gitlab组件日志路径:/var/log/gitlab
gitlab配置路径:/etc/gitlab/  路径下有gitlab.rb配置文件
应用代码和组件依赖程序:/opt/gitlab
各个组件存储路径: /var/opt/gitlab/
仓库默认存储路径   /var/opt/gitlab/git-data/repositories
版本文件备份路径:/var/opt/gitlab/backups/
nginx安装路径:/var/opt/gitlab/nginx/
redis安装路径:/var/opt/gitlab/redis
  • 修改默认ip和端口: vi /etc/gitlab/gitlab.rb

只需要修改external_url 的地址就行,如果是window系统的话,需要修改hosts地址,也可以修改此处地址。

  • 配置邮箱

    • 需要安装postfix邮箱

      • 安装:yum install -y postfix
      • 设置开机自启:systemctl enable postfix
      • 启动:systemctl start psotfix

还是要修改上方的gitlab.rb (本次测试没有使用到,新建用户的时候,如果没有添加邮件是不会添加成功的,执行失败还是会发送邮件的)

#修改以下内容
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '发信邮箱'
gitlab_rails['gitlab_email_display_name'] = 'xxx'gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "发信邮箱"
gitlab_rails['smtp_password'] = "smtp客户端授权码"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'none'
  • 修改完成后,重新加载配置文件:gitlab-ctl reconfigure
  • 如果修改了邮箱配置,测试邮箱是否开启:gitlab-rails console
  • 性能优化:

同样,也是修改gitlab.rb文件

unicorn['worker_processes'] = 2                         #官方建议值为CPU核数+1(服务器只部署gitLab的情况下),可提高服务器响应速度,此参数最小值为2,设为1服务器可能卡死
unicorn['work_timeout'] = 60                            #设置超时时间
unicorn['worker_memory_limit_min'] = "200 * 1 << 20"    #减少最小内存
unicorn['worker_memory_limit_max'] = "300 * 1 << 20"    #减少最大内存
postgresql['shared_buffers'] = "128MB"                  #减少数据库缓存
postgresql['max_worker_processes'] = 6                  #减少数据库并发数
sidekiq['concurrency'] = 15                             #减少sidekiq并发数由于GitLab核心功能是代码托管,所以有些额外的组件比较浪费资源,所以可以考虑关闭。
prometheus['enable'] = false
prometheus['monitor_kubernetes'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
gitlab_exporter['probe_sidekiq'] = false
prometheus_monitoring['enable'] = false
grafana['enable'] = false
  • 重新启动:sudo gitlab-ctl restart
  • 其他命令:
gitlab-ctl start #启动全部服务
gitlab-ctl restart#重启全部服务
gitlab-ctl stop #停止全部服务
gitlab-ctl restart nginx #重启单个服务,如重启nginx
gitlab-ctl status #查看服务状态
gitlab-ctl reconfigure #使配置文件生效
gitlab-ctl show-config #验证配置文件
gitlab-ctl uninstall #删除gitlab(保留数据)
gitlab-ctl cleanse #删除所有数据,从新开始
gitlab-ctl tail <service name>查看服务的日志
gitlab-ctl tail nginx  #如查看gitlab下nginx日志
gitlab-rails console  #进入控制台
gitlab-ctl help                  #查看gitlab帮助信息
  • 安装完成后,默认的用户是root,密码需要查看: cat /etc/gitlab/initial_root_password

2.安装gitlab-runner

  • 到清华园中找到gitlab-runner:https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/yum/el7/
  • 上传到服务器中
  • 通过rpm -ivh gitlab-runner-12.9.1-1.x86_64.rpm --nodeps --force 去安装
  • 启动服务:systemctl start gitlab-runner
  • 查看服务状态:systemctl status gitlab-runner
  • 验证是否安装成功:gitlab-runner -h

3.gitlab-runner 注册:

  • 注册共享型的runner:gitlab-runner register (下方是注册的时候,需要填写的内容)

    • gitlab地址:Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/)
    • runner注册令牌:Please enter the gitlab-ci token for this runner
    • gitlab-runner的注释:Please enter the gitlab-ci description for this runner
    • gitlab-runner的标签:Please enter the gitlab-ci tags for this runner (comma separated)
    • 执行器使用的方式:Please enter the executor: custom, docker, parallels, docker+machine, kubernetes, docker-ssh, shell, ssh, virtualbox, docker-ssh+machine

看到如下信息,恭喜你,gitlab-runner注册完成了。

  • 查看已注册的runner列表:gitlab-runner list
  • 取消所有注册列表:gitlab-runner unregister --all-runners

3.编辑流水线配置:

首先:需要通过git生成私钥,然后上传到项目中:

  • 生成ssh秘钥:ssh-keygen -t rsa
    查看生成的秘钥: cat ~/.ssh/id_rsa
    将私钥的值放到项目内的CICD变量中,命名为:SSH_PRIVATE_KEY
  • 修改如下文件,就可以操作了:

    或者直接修改.gitlab-ci.yml文件
# 定义一些变量, 下面各阶段会使用
variables:server_ip: 192.168.44.129jar_name: demo-0.0.1-SNAPSHOT.jarjava_path: /home/java/java1.8/binupload_path: /home/gitlab-project/ssh_password: 111111repo_path: /home/soft/maven/repojar_path: com/example/demo/0.0.1-SNAPSHOT# 定义执行的各个阶段及顺序
stages:- build- upload- deploy# 使用 maven 镜像打包项目
maven-build:stage: buildscript:- mvn clean install -Dmaven.test.skip=true- echo "打包结束"# 将打包完成的jar包移动到指定的位置
upload-jar:stage: uploadscript:- echo "拷贝jar包到/home/gitlab-project中"- cd $repo_path/$jar_path- cp -r $jar_name $upload_path
# 启动 SpringBoot jar包
deploy-test:stage: deployscript:- echo "启动$jar_name"- cd $upload_path- nohup java -jar $jar_name >log.out &
  • stages:用于定义作何可以使用的阶段,并且是全局定义的。同一阶段的作业并行运行,不同阶段按照顺序进行
  • script:运行的脚本

三、安装的时候遇到的问题:

1.window11虚拟机点开就蓝屏:


直接将上面的虚拟平台勾选上;

2.出现不兼容:


查找windows管理中是否存在Hyper-v ,取消勾选即可,如果找不到,可以执行一下脚本。(需要使用管理员运行,存放位置随意,名称需要为Hyper-V.cmd)

pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

取消勾选之后,还需要执行下面的操作。(需要管理员的方式打开)

bcdedit /set hypervisorlaunchtype off

如果还是不行的话,需要检查VMWare使用的是否使用的14版的,如果是直接升级即可。

GitLab通过CI/CD 实现流水线部署(演示主要是通过shell上传SpringBoot项目)相关推荐

  1. Docker + GitLab CI/CD 实现自动化部署

    使用Docker+gitlab ci/cd 实现自动化部署 文章目录 使用Docker+gitlab ci/cd 实现自动化部署 1. Docker 1.1 Docker是什么? 1.2 Docker ...

  2. GItLab入门级CI/CD环境搭建(适用于小微企业或个人)

    相关 什么是CI/CD CI - Continuous Integrarion - 持续集成 现代应用开发的目的是能够让多个开发人员在同时进行同一应用的不同功能.但是这样需要企业在某一天将不同开发人员 ...

  3. 模拟部署FTP服务器并提供文件的上传及下载

    FTP(File Transfer Protocol:文件传输协议)是TCP/IP协议组中的协议之一,主要是提供文件共享服务. 数据端口20:用于传输数据: 控制端口21:用于传输指令: 操作环境:V ...

  4. edusoho 内网部署问题(视频播放,文件上传 无法使用)

    edusoho 网络课堂 /edusoho 企业大学(企业培训版) 纯内网部署.课程视频播放 和课程上传文件 问题. 原因是: 播放器和上传的sdk是访问云端的,内网部署的话需要本地化. 注意: 1. ...

  5. Linux上搭建SpringBoot项目部署环境和流程分享

    Linux上搭建SpringBoot项目部署环境和流程分享 背景介绍 环境搭建 1.JDK 2.Mysql 数据库 3.Redis 4.Nginx 项目部署 总结 背景介绍 最近在开发一个 Sprin ...

  6. 实战:从 0 到 1 极狐GitLab CI/CD 前端持续部署

    文章目录 写在前面 服务器配置 环境安装 安装 Docker 安装 极狐GitLab 测试 极狐GitLab 极狐GitLab Runner 前端项目 CI/CD 流程的设计 正式开始编写 .gitl ...

  7. 还在用Jenkins?试试Gitlab的CI/CD功能吧,贼带劲!

    前言 Docker和Spring Boot是非常流行的组合,我们将利用GitLab CI的优势,并在应用程序服务器上自动构建,推送和运行Docker镜像. GitLab CI Gitlab CI/CD ...

  8. git(gitlab)子模块功能在团队协同开发和生产环境中的应用(git,gitlab,TortoiseGit,CI/CD,Jenkins,docker-compose,分支合并,开发环境,测试环境)

    git(gitlab)子模块功能在团队协同开发和生产环境中的应用 目录 git(gitlab)子模块功能在团队协同开发和生产环境中的应用 一.前言 二.先决条件 三.创建gitlab项目(项目管理员操 ...

  9. 持续集成 持续交付 - CI CD | Jenkins 安装部署

    目录 零.Jenkins介绍 1.Jenkins功能 2.Jenkins概念 3.Jenkins目的 4.Jenkins特性 5.产品发布流程 一.Jenkins CI/CD 流程 二.GitLab安 ...

最新文章

  1. 用Python构建网页抓取器
  2. 异步函数带来的另一好处—不用混淆代码了?
  3. TypeScript的推介与应用
  4. php数组格式化显示,php 打印数组格式化显示
  5. linux oracle脚本编写,Linux 脚本编写基础(一)--语法
  6. VMware安装Centos7后有线线缆被拔出
  7. LeetCode 709. 转换成小写字母
  8. RequireJS API
  9. Android:JNI 与 NDK的区别(含实例教学)
  10. Linux 系统编程技巧与概念 第11章 不透明指针
  11. 你会买新款 Macbook Pro 么?
  12. 多屏系统上播放幻灯片的设想
  13. R语言从github安装recharts包
  14. SAS Visual Analytics(VA)安装教程
  15. 系统还原点设置被系统管理员禁用
  16. 如何把用Word文档转换成PNG图片
  17. plot画图颜色设置
  18. trimmed ICP及其在PCL代码解析与使用
  19. Shifting Stacks【题解】
  20. Python(十三)IO编程

热门文章

  1. 绝对路径${pageContext.request.contextPath}的使用
  2. Oracle使用同义词
  3. 深入理解 vue DOM 更新时机
  4. 计算机图形学【GAMES-101】2、光栅化(反走样、傅里叶变换、卷积)
  5. JWT验证机制【刘新宇】【Django REST framework中使用JWT】
  6. matlab做干涉,matlab模拟干涉衍射 | 学步园
  7. Matlab中的lower函数
  8. 鸡啄米vc++2010系列27(列表视图控件List Control 上)
  9. HTML——014file控件,实现文件上传专用; hidden隐藏用户id指令
  10. 自己实现Dubbo Invoker