gitlab安装与基本使用


这里会使用一个前端项目自动化部署的方式来进行了解

  • Node 安装项目依赖、打包都需要
  • Nginx web 项目部署必须「正向代理、方向代理、负载均衡等等」、 GitLab 也会用到 Nginx(默认自动安装)
  • Git 自动化部署,需要拉取代码。
  • GitLab 没啥好说
  • GitLab-Runner 配合 GitLab CI/CD 使用的应用程序

[Node]

安装

# 下载安装包,需要哪个版本,在url中修改就可以了
wget https://nodejs.org/dist/v12.9.0/node-v12.9.0-linux-x64.tar.xz 

# 解压
tar xf node-v12.9.0-linux-x64.tar.xz

# 复制
cp -rf /root/node-v12.9.0-linux-x64 /usr/local/node

添加配置与环境变量

# 打开编辑配置文件
vim /etc/profile


在文件的最后,加上下面的内容
export PATH=$PATH:/usr/local/node

重载系统配置文件
source /etc/profile

测试 node 环境变量是否生效

运行下面的代码,看到版本号,就说明环境变量生效了。

node -v

[Git]

使用yum默认安装的是1版本, 推荐使用2版本

安装:

# 安装依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y
在github上下载包:  https://github.com/git/git/releases
tar -zxvf git-2.25.5.tar.gz cd git-2.25.5 make prefix=/usr/local/git all make prefix=/usr/local/git install /usr/local/git/bin/git --version # 加入全局环境变量 vim /etc/profile # 添加软链接 ln -sf /usr/local/git/bin/git /bin/git

[gitlab]

安装

yum -y install https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.3.0-ce.0.el7.x86_64.rpm

修改配置文件:vim /etc/gitlab/gitlab.rb

找到,external_url, 修改 gitlab 访问地址。可以是域名(请确保确定域名正确解析了),服务器IP,也可以加上端口。设置端口时,请确保自己开放了对应的端口

# 192.168.26.139 对应的就是服务器的IP,端口为 1874 

external_url 'http://192.168.26.139:1874'





关闭防火墙:
service iptables stop
永久关闭
chkconfig iptables off

开房80端口
firewall-cmd --permanent --zone=public --add-port=80/tcp

firewall-cmd --reload

配置修改完成之后, 需要进行重载配置与启动

#重载配置文件,需要的时间比较长
gitlab-ctl reconfigure

# 开放 1874 端口
firewall-cmd --permanent --zone=public --add-port=1874/tcp

# 重载防火墙
firewall-cmd --reload

常用命令:

# 启动gitlab服务

sudo gitlab-ctl start

# gitlab服务停止

sudo gitlab-ctl stop

# 重启gitlab服务

sudo gitlab-ctl restart

[使用]

1.修改密码

修改密码也可以:gitlab-rails console production
irb(main):001:0> user = User.where(id: 1).first // id为1的是超级管理员
irb(main):002:0>user.password = 'yourpassword' // 密码必须至少8个字符,最好是数字
irb(main):003:0>user.save! // 如没有问题 返回true
exit // 退出

在浏览器中打开对应的web页面,需要做的几个事情

1.去掉用户的自动注册功能

admin are -> settings -> Sign-up Restrictions 去掉钩钩,然后拉到最下面保存,重新登录

2.为用户添加group  然后新增用户并添加到组中

PM在gitlab创建任务,分配给开发人员
开发人员领取任务后,在本地使用git clone拉取代码库
开发人员创建开发分支(git checkout -b dev),并进行开发
开发人员完成之后,提交到本地仓库(git commit )
开发人员在gitlab界面上申请分支合并请求(Merge request)
PM在gitlab上查看提交和代码修改情况,确认无误后,确认将开发人员的分支合并到主分支(master)
开发人员在gitlab上Mark done确认开发完成,并关闭issue。这一步在提×××并请求时可以通过描述中填写"close #1"等字样,可以直接关闭issue

测试仓库项目是否可以正常提交和拉取

这个步骤就不演示了,用过 GitHub 的应该基本都清楚,创建个新项目 -> 通过http仓库链接克隆项目 -> 修改项目的内容 -> 提交 ->推送

我们的重点的是 CI/CD,至于 SSL、邮箱等等,GitLab 一些其他的配置和功能我就不赘述了,大家可以网上了解下。

 

配置CI/CD

 1.安装gitlab-runner

# 下载
wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

# 分配运行权限
chmod +x /usr/local/bin/gitlab-runner

# 创建用户
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

# 安装
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner

# 运行
gitlab-runner start

2.新建runner

# 注册 runner
gitlab-runner register


# 输入 gitlab 的访问地址
http://192.168.26.139:1874 

# 输入 runner token,把开 http://192.168.26.139:1874/admin/runners 页面查看
63AyFAthj7s7sNy3JDwu

# runner 描述,随便填
测试webpack-vue项目部署

# runner tag
webpack-vue-cicd

# 输入(选择) shell
shell

在 xxx.com/admin/runners 可查看创建的runner

3.创建一个测试项目

#使用Vue图形化界面创建新项目vue-docker
vue ui

# 运行项目
npm run serve


添加Dockerfile文件


FROM node:10 COPY ./ /vue-docker WORKDIR /vue-docker RUN npm install && npm run build FROM nginx RUN mkdir /vue-docker COPY --from=0 /vue-docker/dist /vue-docker COPY nginx.conf /etc/nginx/nginx.conf

创建.dockerignore文件

**/node_modules
**/dist

在项目根目录创建nginx.conf文件

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
  worker_connections  1024;
}
http {
  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;
  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
  access_log  /var/log/nginx/access.log  main;
  sendfile        on;
  keepalive_timeout  65;
  server {
    listen       80;
    server_name  localhost;
    location / {
      root   /vue-docker;
      index  index.html;
      try_files $uri $uri/ /index.html;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
      root   /usr/share/nginx/html;
    }
  }
}

其他命令:

构建docker镜像
docker build . -t vue-docker

# 运行docker镜像
docker run -d -p 9090:80  vue-docker

编写.gitlab-ci.yml文件

.gitlab-ci.yml 文件是存放在项目的根目录下的,要提交到gitlab上面,runner 会根据 .gitlab-ci.yml 编写的规则自动部署项目。

# 阶段
stages:
  - build
  - deploy
  # 缓存 node_modules 减少打包时间,默认会清除 node_modules 和 dist 
cache:
  paths:
    - node_modules/

# 拉取项目,打包
build:
  stage: build # 阶段名称 对应,stages
  tags: # runner 标签(注册runner时设置的,可在 admin->runner中查看)
    - webpack-vue-cicd
  script: # 脚本(执行的命令行)
    - cd ${CI_PROJECT_DIR} # 拉取项目的根目录
    - npm install # 安装依赖
    - npm run build # 运行构建命令
  only:
    - main #拉取分支
  artifacts:   # 把 dist 的内容传递给下一个阶
    paths:
        - dist/

# 部署
deploy:
  stage: deploy # 阶段名称 对应,stages
  tags: # runner 标签(注册runner时设置的)
    - webpack-vue-cicd
  script: # 脚本(执行的命令行)
    - rm -rf /www/wwwroot/webpack_vue_cicd/*
    - cp -rf ${CI_PROJECT_DIR}/dist/* /www/wwwroot/webpack_vue_cicd/ # 把包完成,复制 dist 下的文件到对应的项目位置

4.部署

server {
    listen       3001; # 端口号
    server_name  localhost; # 服务器地址

    location / {
        root   /www/wwwroot/webpack_vue_demo; # 项目存放目录
        index  index.html index.htm; # 默认访问的主页
    }
}

# 重新加载配置文件
nginx -s reload

然后提交下文件试试吧

注意点:

1.如果使用的Git@xxx.com方式拉取代码, 如果ssh链接不是默认22的话, 需要进行参数配置

vim /etc/gitlab/gitlab.rb


gitlab_rails[gitlab_shell_ssh_port] = 36000

2.如果想要修改默认的端口

external_url 'http://192.168.1.146:8081'  #绑定监听的域名或IP(企业中最好是域名)
nginx['listen_port'] = 8081         #修改nginx的port


需要重新加载配置
gitlab-ctl reconfigure
#<生成 /var/opt/gitlab/ 各种子配置, 该命令建议仅在初始化时使用一次>

常见问题:

1.gitlab内置的node_exporter与监控硬件指标的服务端口冲突,需要进行修改

# vim $GITLAB_HOME/embedded/cookbooks/cache/cookbooks/gitlab/attributes/default.rb
default['gitlab']['node-exporter']['listen_address'] = 'localhost:9100'    # 改为需要给定的端口

# 重新初始化配置
# gitlab-ctl stop
# gitlab-ctl reconfigure
# gitlab-ctl start

参考:

  • https://blog.csdn.net/lixiaotao_1/article/details/113068650
  • https://zhuanlan.zhihu.com/p/420977457