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

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>alimavenid>
      <name>aliyun mavenname>
      <url>http://maven.aliyun.com/nexus/content/groups/public/url>
      <mirrorOf>centralmirrorOf>
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地址,也可以修改此处地址。
GitLab通过CI/CD 实现流水线部署(演示主要是通过shell上传SpringBoot项目)_第1张图片

  • 配置邮箱
    • 需要安装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/)
      GitLab通过CI/CD 实现流水线部署(演示主要是通过shell上传SpringBoot项目)_第2张图片
    • runner注册令牌:Please enter the gitlab-ci token for this runner
      GitLab通过CI/CD 实现流水线部署(演示主要是通过shell上传SpringBoot项目)_第3张图片
    • 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注册完成了。
GitLab通过CI/CD 实现流水线部署(演示主要是通过shell上传SpringBoot项目)_第4张图片
GitLab通过CI/CD 实现流水线部署(演示主要是通过shell上传SpringBoot项目)_第5张图片

  • 查看已注册的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/CD 实现流水线部署(演示主要是通过shell上传SpringBoot项目)_第6张图片
  • 修改如下文件,就可以操作了:
    GitLab通过CI/CD 实现流水线部署(演示主要是通过shell上传SpringBoot项目)_第7张图片
    或者直接修改.gitlab-ci.yml文件
# 定义一些变量, 下面各阶段会使用
variables:
  server_ip: 192.168.44.129
  jar_name: demo-0.0.1-SNAPSHOT.jar
  java_path: /home/java/java1.8/bin
  upload_path: /home/gitlab-project/
  ssh_password: 111111
  repo_path: /home/soft/maven/repo
  jar_path: com/example/demo/0.0.1-SNAPSHOT

# 定义执行的各个阶段及顺序
stages:
  - build
  - upload
  - deploy
 
# 使用 maven 镜像打包项目
maven-build:
  stage: build
  script:
    - mvn clean install -Dmaven.test.skip=true
    - echo "打包结束"

# 将打包完成的jar包移动到指定的位置
upload-jar:
  stage: upload
  script:
    - echo "拷贝jar包到/home/gitlab-project中"
    - cd $repo_path/$jar_path
    - cp -r $jar_name $upload_path
# 启动 SpringBoot jar包
deploy-test:
  stage: deploy
  script:
    - echo "启动$jar_name"
    - cd $upload_path
    - nohup java -jar $jar_name >log.out &
  • stages:用于定义作何可以使用的阶段,并且是全局定义的。同一阶段的作业并行运行,不同阶段按照顺序进行
  • script:运行的脚本

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

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

GitLab通过CI/CD 实现流水线部署(演示主要是通过shell上传SpringBoot项目)_第8张图片
直接将上面的虚拟平台勾选上;

2.出现不兼容:

GitLab通过CI/CD 实现流水线部署(演示主要是通过shell上传SpringBoot项目)_第9张图片
查找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,gitlab,ci/cd,spring,boot)