部署gitlab+gitrunner+nexus镜像仓库CI流水线配置

首先安装基础环境  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流程就成功了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值