1.1 使用yum安装工具
#利用URL规则在命令行下工作的文件传输工具
yum -y install curl-devel
#expat就是SAX2模型的解析器 xml解析器
yum -y install expat-devel
#gettext是一种国际化与本地化系统,可以进行编程和翻译的操作
yum -y install gettext-devel
#众多的密码算法、公钥基础设施标准以及SSL协议
yum -y install openssl-devel
#zlib 适用于数据压缩的函式库
yum -y install zlib-devel
#全部安装
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
#安装git
yum -y install git-core
#查看git版本
git --verion
关于xml解析器的说明:
目前的xml解析器一般有两种解析的形式.一种是DOM模型的,一种是SAX2模型的.DOM模型是讲xml文件中的结构解析成一棵树,然后再进行各种操作;而SAX2模型是类似与事件处理的方式从头到位解析xml文件.两种方式各有优劣,不过在嵌入式设备上用DOM模型的解析器似乎太耗内存,所以一般都用SAX2的解析器。
2.1 安装依赖,配置系统防火墙,把HTTP和SSH端口开放
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
安装postfix发送通知邮件,如果想要使用另一种解决方案来发送电子邮件,则跳过该步骤,GitLab已安装后配置外部SMTP服务器。
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
在/usr目录下创建一个git文件夹,将给gitlab和gitlab-runner的安装依赖上传到该目录下,然后进入到该目录下。
rpm -i gitlab-ce-12.6.1-ce.0.el7.x86_64.rpm
安装成功后会出现一个狐狸的头像
GitLab安装完成后,修改GitLab的配置文件
vi /etc/gitlab/gitlab.rb
1、修改external_url ‘http://20.201.35.219’(自己的IP地址就行,我选的本机的ip)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t3RUFyGU-1632292364490)(F:/SunlineResourse/md文档/CICD_img/wps2.png)]
2、修改gitlab-rails[“backup_path”] = “/app/gitlab/backups”,大约在447行
3、修改gitlab-rails[“backup_keep_time”]= 604800,大约在455行
4、修改gitlab仓库目录,去掉注释,大约在501行
git_data_dirs({
"default"=> {
"path" => "/app/gitlab/gitData"
}
})
GitLab安装完成后需要初始化 GitLab
gitlab-ctl reconfigure
这一步等待的时间有点长,慢慢等待即可。
启动gitlab
gitlab-ctl start
查看GitLab启动状态
gitlab-ctl status
GitLab验证安装服务是否正确启动运行
gitlab-rake gitlab:check
定时任务备份
# 查看定时任务列表
crontab -l
# 编辑定时任务列表
crontab -e
# 重启定时任务
systemctl restart crond
定义执行计划
0 4 * * * /opt/gitlab/bin/gitlab-rake gitlab:bakup:create CRON=1
30 17 * * * /bin/bash /app/gitlab/bakups/auto_delete
auto_delete 脚本
find "/app/gitlab/backups" -ctime +1 -name "*.tar" -type f -exec rm -Rf {} \;
2.2 登录gitlab
在浏览器中输入直接IP地址(20.201.35.219)------登录地址是上面设置的url或者默认的url
第一次访问,会提示提示输入密码,此时的用户名是root。密码设置 完成后,自动跳转到登录界面
3.1 安装编译环境
3.1.1 安装jdk和maven
解压安装包
#安装jdk
mkdir –p /usr/java
# 将jdk-8u161-linux-x64.tar.gz上传到java目录下并解压
tar -zxvf jdk-8u161-linux-x64.tar.gz
#安装maven
cd /app/
# 将apache-maven-3.5.2.tar.gz上传到/app目录下并解压
tar -zxvf apache-maven-3.5.2.tar.gz
修改环境变量
vi /etc/profile
#输入以下参数
export JAVA_HOME=/usr/java/jdk1.8.0_161
export JAVA_HOME=/app/apache-maven-3.5.2
export PATH=$HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
检查java 和 maven版本
java -version
mvn -version
3.2 rpm安装
rpm -ivh gitlab-runner-12.6.0-1.x86_64.rpm
等待安装完成后重启服务
systemctl daemon-reload
systemctl enable gitlab-runner
systemctl restart gitlab-runner
3.3 gitlab-runner注册
gitlab-runner register
首先需要输入自己的IP地址:[http://20.201.35.219/]
然后输入:token,token在登录gitlab界面可以在管理中心中的runner里获得
然后输入名称:devops
然后输入tags:jdk1.8,这里我们写jdk1.8就可以了
注:这是一个标签用于分支管理
在需要测试的文件配置中修改tags的信息
然后输入:shell
注册成功后,刷新gitlab页面会显示runner节点
案例:
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://20.201.35.219
Please enter the gitlab-ci token for this runner:
KzRUYhCA3b3hLZcsqrQn
Please enter the gitlab-ci description for this runner:
[bob-k8s3]: runner-1
Please enter the gitlab-ci tags for this runner (comma separated):
mytag
Registering runner... succeeded runner=KzRUYhCA
Please enter the executor: virtualbox, docker+machine, docker, parallels, shell, ssh, docker-ssh, docker-ssh+machine, kubernetes:
shell
gitlab-runner配置
vi /etc/gitlab-runner/config.toml
配置文件如下所示:
concurrent = 8
check_interval = 0
[session_server」
session_timeout = 1800
[[runners]]
name ="gitlab-runner取名”
url="http://20.201.35.219/*
token ="Gitlab上的令牌"
executor ="shell”
output_limit = 40960
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs」
注:output_limit:日志输出上限大小,默认40960
concurren限制了整个GitLab Runner能并发处理job的数量,0并不意味着无限
check_interval 设置检查job时的时间间隔为多少秒,值为0,默认3秒
limit:限制这个runner可以同时处理多少个作业,0(默认)意味着不限制
修改pipeline文件传输大小限制
官网链接 https://docs.gitlab.com/ee/ci/examples/#gitlab-cicd-examples
官网CI链接 https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates
variables:
GIT_STARTEGY: clone
env: normal
#场景
stages:
- build
- deploy
- package
build-code-job:
stage: build
script:
- echo "开始构建项目"
- mvn clean compile -U
expect:
- release
tags:
- gitlab-runner-tag
job-deploy:
stage: deploy
script:
- echo "上传jar到私服"
- mvn clean deploy -U
job-pavkage:
stage: package
script:
- echo "打包项目"
- mvn clean install -U
- mvn install -Pdist
variables: 定义变量
GIT_STARTEGY: clone 流水线的Git策略,选择克隆(git clone)或拉取 (git fetcn)
stages:定义流水线所有的阶段
stage: 定义作业所处流水线的阶段(默认test阶段)
script:必须参数,运行器需要执行的脚本
expect:限制作业在什么时候创建
only:限制作业在什么时候不创建
tags: 作用使用的Runner运行器的标签列表
基本参数说明博客
https://www.cnblogs.com/wangshuyang/p/14110065.html
5.1 建立GITLAB_RUNNER服务器与应用服务器之间的互信
1、登录gitlab-runner服务器,建立公钥和私钥,执行命令后,回车三次
ssh-keygen -t rsa
2、使用ssh-copy-id命令
ssh-copy-id -i .ssh/id_rsa.pub user@192.168.xx.xx
如果没有这个命令,尝试使用
yum install openssh-clients*
3、如果安装不了ssh-copy-id,尝试使用
cat ~/.ssh/id_rsa.pub | ssh user@host "mkdir ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh"
输入密码后,即可尝试免密登录
ssh user@host
5.2 编写ci文件,配置脚本部署springboot应用
gitlab-ci.yml
variables:
GIT_STARTEGY: clone
env: normal
#场景
stages:
- build
- deploy-jar
- install
build-code-job:
stage: build
script:
- echo "开始构建项目"
- mvn clean compile -U
expect:
- master
tags:
- gitlab-runner-tag
job-deploy:
stage: deploy
script:
- echo "上传jar到私服"
- mvn clean deploy -U
only:
- master
tags:
- gitlab-runner-tag
job-install:
stage: install
script:
- echo "部署应用"
- pwd
- mvn clean install -U
- pakageName=$(ls ./target/<test-1.0.0-SNAPSHOT.jar>)
- scp -r $pakageName sunrise@192.168.31.166:/tmp/
- scp -r ./start.sh sunrise@192.168.31.166:/tmp/
- chmod +x install-to-server.sh
- sh install-to-server.sh
only:
- master
tags:
- gitlab-runner-tag
dependencies:
- job-deploy
PS:
dependencies :当前作业依赖的其他作业,你可以使用依赖作业的归档文件
start.sh springboot项目启动脚本,位于项目的根目录
#!/bin/bash
nohup java -Dcom.sun.management.jmxremote.port=8888 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.ssl=false -Xloggc:./gc.log -verbose:dc -XX:-TraceClassUnloading
-XX:+PrintGCDetails -XX:+PrintGCApplicationStoppedTime
-XX:+PrintGCApplicationConcurrentTime -XX: +PrintGCTimeStamps
-XX:+PrintGCDateStamps -XX:+HeapDumpOnOutOfMemoryError
-jar /home/<user>/test-1.0.0-SNAPSHOT.jar &
install-to-server.sh 执行部署程序脚本,位于项目的根目录
#!/bin/bash
echo "停止应用程序"
ssh -t sunrise@192.168.31.166 "sh /home/sunrise/stop.sh && sleep 2"
echo "检查应用运行状态"
ssh -t sunrise@192.168.31.166 "ps aus | grep <ProjectName>"
echo "移除jar包和启动脚本"
ssh -t sunrise@192.168.31.166 "rm -r /home/sunrise/test-1.0.0-SNAPSHOT.jar && sleep 2"
ssh -t sunrise@192.168.31.166 "rm -r /home/sunrise/test-1.0.0-SNAPSHOT.jar"
ssh -t sunrise@192.168.31.166 "mv /tmp/start.sh /home/sunrise/ && sleep 1"
ssh -t sunrise@192.168.31.166 "mv /tmp/test-1.0.0-SNAPSHOT.jar /home/sunrise/ && sleep 1"
ssh -t sunrise@192.168.31.166 "chmod +x /home/sunrise/start.sh && sleep 1"
ssh -t sunrise@192.168.31.166 "nphup /home/sunrise/start.sh>test.log && sleep 8"
echo "查看应用程序启动日志"
ssh -t sunrise@192.168.31.166 "cat /home/sunrise/test.log"
ssh -t sunrise@192.168.31.166 "ps aux | grep test"
stop.sh 停止应用脚本,提前放到应用服务器即可
#!/bin/bash
ps aux | grep test-* | grep -v grep | awk '{print $2}' | xargs kill
基本的流程为
1、项目编译,打包
2、将jar包和启动脚本传输到应用服务器的tmp目录
3、停止应用,移除原来位置的jar包(当然也可以进行备份)
4、从tmp目录复制jar包到原来部署应用的路径下,给启动脚本增加执行权限
5、启动程序,查看应用启动日志
该博客只用于个人项目测试,不适用的企业级的项目。
art.sh>test.log && sleep 8"
echo “查看应用程序启动日志”
ssh -t sunrise@192.168.31.166 “cat /home/sunrise/test.log”
ssh -t sunrise@192.168.31.166 “ps aux | grep test”
**stop.sh 停止应用脚本,提前放到应用服务器即可**
```shell
#!/bin/bash
ps aux | grep test-* | grep -v grep | awk '{print $2}' | xargs kill
基本的流程为
1、项目编译,打包
2、将jar包和启动脚本传输到应用服务器的tmp目录
3、停止应用,移除原来位置的jar包(当然也可以进行备份)
4、从tmp目录复制jar包到原来部署应用的路径下,给启动脚本增加执行权限
5、启动程序,查看应用启动日志
该博客只用于个人项目测试,不适用的企业级的项目。