GitLab通过CI/CD 实现实现流水线部署(演示主要是通过shell上传SpringBoot项目)
环境准备
安装包已经准备好,可以直接下载: 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
- 需要安装postfix邮箱
还是要修改上方的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地址:Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/)
看到如下信息,恭喜你,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.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虚拟机点开就蓝屏:
直接将上面的虚拟平台勾选上;
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版的,如果是直接升级即可。