首先安装基础环境 gitlab nexus git-runner docker mvn java
yum -y localinstall gitlab-ce-14.4.2-ce.0.el7.x86_64.rpm
下载的时候顺便把runner也下了,不然到时候找对应版本很麻烦
安装成功后会出现一个狐狸的头像
GitLab安装完成后,修改GitLab的配置文件
vi /etc/gitlab/gitlab.rb
1、修改external_url 'http://10.17.38.247'(自己的IP地址就行,或者你定好的域名)
比如 external_url 'http://gitlab.test.cn'
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-ctl status
都是ok就好了
定义一个自动清理备份的任务。时间长了 ,备份很多
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 {} \;
登录gitlab
在浏览器中输入直接IP地址------登录地址是上面设置的url 即你的ip或者域名
第一次访问,会提示提示输入密码,此时的用户名是root。密码设置 完成后,自动跳转到登录界面
安装nexus
下载之后解压缩到本地
cd nexus-3.14.0-04
bin/nexus start
如果需要修改端口
nexus-3.14.0-04/etc/nexus-default.properties
这个文件里修改
安装gitrunner
curl -s https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
yum install gitlab-runner-14.4.2-1.x86_64
和你的gitlab版本对应 我这是14.4.2
systemctl daemon-reload
systemctl enable gitlab-runner
systemctl restart gitlab-runner
启动runner
安装docker
安装docker
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
systemctl start docker
systemctl enable docker
安装mvn
解压缩到本地
下面都是根据自己环境去选择添加的
添加一下阿里mvn仓库
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
举个私服的例子
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.1.1:8051/repository/maven-public/</url>
</mirror>
</mirrors>
nexus有账密的话在下面直接加
<servers>
<server>
<id>nexus</id>
<username>admin</username>
<password>123456</password>
</server>
</servers>
顺便有个坑
mvn编译报错
cannot find symbol
610[ERROR] symbol: class Data
我是从windows复制过来的 这里是
<localRepository>d://java//maven-repo</localRepository>
centos上应该是
<localRepository>/java/maven-repo</localRepository>
这样的一个路径 路径按自己的填写
注意要让gitrunner 有操作这个目录的权限
或者直接777
chown -R gitlab-runner:gitlab-runner /java/maven-repo
在 /etc/profile 里添加路径
export MVN_HOME=/data/apache-maven-3.5.2
export PATH=$PATH:$JAVA_HOME/bin:$MAV_HOME/bin:
不过不知道为什么我环境变量出不来
我做了一个软连接解决
ln -s /data/apache-maven-3.5.2/bin/mvn /usr/bin/mvn
安装java
这个就百度一下吧。。网上很多
进入配置阶段
首先配置nexus
创建一个镜像仓库
点击齿轮图标
点击create
选择 docker hosted类型
name 里输入仓库名称 一般就直接
docker-release
第一个红框填入选择的端口
第二个红框勾保留。强制要求密码验证增加安全性
第三个红框勾取消。方便上传别的类型
第四个红框 点击建立仓库
点击上面的立方体图标。回到首页 可以看到我们的仓库
nexus配置完成 可以等待上传镜像了
配置gitlabrunner
首先添加权限 避免dial unix /var/run/docker.sock: connect: permission denied报错
usermod -aG docker gitlab-runner
让gitrunner 有操作mvn仓库目录的权限
或者直接777
chown -R gitlab-runner:gitlab-runner /java/maven-repo
我这放在这里了 按需修改
在setting.xml 最上面几行看
注册你的gitlab-runner到gitlab
gitlab-runner register
例子
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://20.201.35.219 <--这里输入你的访问地址 ip或者域名 可以直接在gitlab上--菜单--管理员--runner上查看
Please enter the gitlab-ci token for this runner:
KzRUYhCA3b3hLZcsqrQn <--这个token直接在gitlab上--菜单--管理员--runner上查看
Please enter the gitlab-ci description for this runner:
[bob-k8s3]: runner-1 <--给runner起个名字 比如节点名
Please enter the gitlab-ci tags for this runner (comma separated):
mytag <--做个标记,这个标记用来给项目去适配合适的runner
Registering runner... succeeded runner=KzRUYhCA
Please enter the executor: virtualbox, docker+machine, docker, parallels, shell, ssh, docker-ssh, docker-ssh+machine, kubernetes:
shell <--看起来好像是命令模式之类的,我用了shell
去gitlab上调整一下gitrunner的配置
两个箭头顺便标识一下之前的网址token在哪里
点击修改
上面的勾打上 。有需要的话勾 一般没必要 这样做的话把下面的哪个标签也去掉
runner配置完了
配置docker
在/etc/docker/下添加一个文件
daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
],
"insecure-registries": ["10.17.1.1:7000"]
}
最下面写上nexus的地址 不然不能用http
然后重启docker
systemctl daemon-reload
systemctl restart docker
确认可以在服务器上登录docker 仓库
docker login -u admin -p admin123 http://10.17.1.1:7000
返回
Login Succeeded
就可以了
然后开始配置git代码
在你的代码仓库里需要进行cicd的分支下添加一个yml文件 定义打包流程
文件目录以及配置文件说明
├── Dockerfile # 构建Docker镜像的配置文件
├── .gitlab-ci.yml # 构建Gitlab CI/CD的配置文件
├── pom.xml # 项目maven依赖
└── src # 项目代码
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── demo
│ │ └── DemoApplication.java
│ └── resources
│ └── application.properties
└─────────────────────────────────────
举个例子
#stages:定义流水线的阶段
stages:
- deploy
deploy:
#stage: 定义作业所处流水线的阶段
stage: deploy
script:
#script:必须参数,运行器需要执行的命令或者脚本
- mvn clean install -Dmaven.test.skip=true
- "if docker images | grep app-tcloud-label | awk '{ print $1}';then
docker rmi $(docker images | grep app-tcloud-label | awk '{ print $3}');
fi"
- docker login -u admin -p admin123 10.17.1.1:7000
- docker build -t 10.17.1.1:7000/test:test-v2.5.0 .
- docker push 10.17.1.1:7000/test:test-v2.5.0
上面用到了dockerfile
举个例子
FROM 10.17.38.247:7000/openjdk-alpine-skywalking:v1.0.0
#从什么基础镜像打包
COPY ./label-server/target/test.jar /tmp/test.jar
#把打好的jar包放进去
#这个./的位置就是之前gitrunner编译好之后的当前目录
#定义启动命令
ENTRYPOINT [ "sh","-c","java -javaagent:/opt/agent/skywalking-agent.jar -Dskywalking.agent.service_name=tcloud-crm-label -Dskywalking.collector.backend_service=$skywalkingIpAdress -jar tmp/test.jar" ]
然后每次修改代码,都会触发一次ci流程 自动打包自动上传镜像
有问题可以在左边的栏目里点击cicd 然后点击你出问题的流水线id来排查
最后去nexus查看一下 镜像上传成功、整个ci流程就成功了