GitLab

date
Dec 23, 2021
slug
gitlab
status
Published
tags
Gitlab
summary
GitLab
type
Post

GitLab-CE安装

选择centos7.x系统,yum安装
官方文档 https://about.gitlab.com/install/#centos-7

配置邮箱

配置

GitLab 备份

针对与yum安装用户,docker用户请直接更新镜像

数据备份

设置备份路径、权限、保留时常,防止每天执行备份,有目录被爆满的风险,打开开/etc/gitlab/gitlab.rb配置文件,找到如下配置
vim /etc/gitlab/gitlab.rb

gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"     #备份的路径,建议不要放到系统下
gitlab_rails['backup_archive_permissions'] = 0644           #备份文件的默认权限
gitlab_rails['backup_keep_time'] = 604800                   #保留时长,秒为单位
# 执行 gitlab-ctl reconfigure 或者 gitlab-ctl restart 重启服务生效
gitlab-ctl reconfigure
# 执行备份命令进行备份,这个时候一定要保持gitlab是启动状态
/opt/gitlab/bin/gitlab-rake gitlab:backup:create
# 新版备份命令
sudo gitlab-backup create
# 查看备份 
ls /var/opt/gitlab/backups
1585221706_2020_03_26_12.9.0_gitlab_backup.tar
可以到/var/opt/gitlab/backups找到备份包,解压查看,会发现备份的还是比较全面的,数据库、repositories、build、upload等分类还是比较清晰的。
备份完成,会在备份目录中生成一个当天日期的tar包。

数据恢复

特别注意:备份目录和gitlab.rb中定义的备份目录必须一致 GitLab的版本和备份文件中的版本必须一致,否则还原时会报错。 首先删除
gitlab-rake gitlab:backup:restore BACKUP=1585221706_2020_03_26_12.9.0

GitLab升级

升级前一定要记得备份
yum install -y gitlab-ce

GitLab迁移服务器

官方文档 https://docs.gitlab.com/ee/raketasks/backup_restore.html#restore-for-omnibus-gitlab-installations
记得备份
  • /etc/gitlab/gitlab-secrets.json
  • /etc/gitlab/gitlab.rb
 

安装GitLab-Runner

  1. 最新下载地址 也可以直接选择下载 gitlab-runner(opens new window)
  1. 安装程序
mv gitlab-ci-multi-runner-linux-amd64 /usr/local/bin/gitlab-runner
chmod +x /usr/local/bin/gitlab-runner
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/java/gitlab-runner
  1. gitlab中注册runner
sudo gitlab-runner register
注册过程中根据提示输入如下信息:
  • 输入gitlab的服务URL,获取方式参考下图
  • 输入gitlab-ciToekn,获取方式参考下图
  • 关于集成服务中对于这个runner的描述
  • 给这个gitlab-runner输入一个标记,这个tag非常重要,在后续的使用过程中需要使用这个tag来指定gitlab-runner
  • 是否运行在没有tagbuild上面。在配置gitlab-ci的时候,会有很多job,每个job可以通过tags属性来选择runner。这里为true表示如果job没有配置tags,也执行
  • 是否锁定runner到当前项目
  • 选择执行器,gitlab-runner实现了很多执行器,可用在不同场景中运行构建,详情可见GitLab Runner Executors,这里选用Shell模式
IP令牌从下图位置获取
notion image
注册完毕后 输入命令查看
cat /etc/gitlab-runner/config.toml
notion image
同时也可以在GitLab页面上查看
notion image

使用GitLab-CI

git报错

# 重新初始化现存的 Git 版本库于 /home/gitlab-runner/builds/yygZdKcz/0/root/api-adapter/.git/
#fatal: git fetch-pack: expected shallow list
#fatal: The remote end hung up unexpectedly
原因是git版本太老不持之新API,需要升级一下git:
# 重新配置安装源
yum install -y http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
# 安装git
yum install -y git
# 更新git
yum update git
在项目的根目录,创建CI脚本文件,文件名:.gitlab-ci.yml
stages:
  - test
  - build
  - deploy

test:
  stage: test
  script: echo "Running tests"

build:
  stage: build
  script: echo "Building the app"

deploy_staging:
  stage: deploy
  script:
    - echo "Deploy to staging server"
  environment:
    name: staging
    url: https://staging.example.com
  only:
  - master
notion image
上传CI脚本文件后,在GitLab上查看流水线作业
notion image
若流水线作业暂停,显示暂无可用runner
需要前往以下地方配置
notion image
notion image

gitlab-ci高级用法

在项目路径下建立 .gitlab/ci
如图:使用前缀标识隔离环境,后缀统一是*.gitlab-ci.yml
notion image
# 本次构建的阶段:build package
stages:
  - compile
  - test
  - package
  - dock


# 全局环境变量
variables:
  MY_NAME: ""

# 导入单个模版
include:
  - local: .gitlab/ci/*.gitlab-ci.yml
#  - remote: 'https://gitlab.com/gitlab-org/frontend/untamper-my-lockfile/-/raw/main/.gitlab-ci-template.yml'
 
# =========== 开发环境 ===========

# 开发环境啥也不干
dev-compile:
  stage: compile
  # 环境变量
  variables:
  script:
    - echo "=============== $MY_NAME ==============="
  only:
    - dev
# 这个名字不能和其他命名重复,所以建议是,"环境-操作" 来命名,比如 dev-package 代表dev环境打包
dev-package:
  stage: package
  # 环境变量
  variables:
  script:
    - echo "=============== $MY_NAME ==============="
  only:
    - dev

配置详解

推荐三篇文章,这里不过多解读

解决git clone后无代码的情况

问题描述

git clone代码后,发现没有文件

为什么会这样?

因为迁移代码时,默认的HEAD找不到啦,需要指向一个

修复建议

进入相对应的文件夹,查询所有分支
> git branch -a  remotes/origin/api
  remotes/origin/dev
  remotes/origin/jungong
  remotes/origin/master
  remotes/origin/sms
随便找一个分支(如remotes/origin/dev),然后敲入下面的命令
git checkout remotes/origin/dev
指令意思是制定dev分支为默认的HEAD,然后就可以看到相对应的文件.

完整代码

wangjiahao@wangjiahaodeiMac Downloads % git clone https://gitlab.remember5.top/wangjiahao/eladmin-template.git
Cloning into 'eladmin-template'...
remote: Enumerating objects: 4287, done.remote: Counting objects: 100% (4287/4287), done.remote: Compressing objects: 100% (1684/1684), done.remote: Total 4287 (delta 1999), reused 4287 (delta 1999), pack-reused 0
Receiving objects: 100% (4287/4287), 3.74 MiB | 1.68 MiB/s, done.Resolving deltas: 100% (1999/1999), done.warning: remote HEAD refers to nonexistent ref, unable to checkout.

wangjiahao@wangjiahaodeiMac Downloads % cd eladmin-template
wangjiahao@wangjiahaodeiMac eladmin-template % git branch -a  remotes/origin/api
  remotes/origin/dev
  remotes/origin/jungong
  remotes/origin/master
  remotes/origin/sms
wangjiahao@wangjiahaodeiMac eladmin-template % git checkout remotes/origin/dev
Note: switching to 'remotes/origin/dev'.You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to falseHEAD is now at de7aecf 修改runner的变量
wangjiahao@wangjiahaodeiMac eladmin-template %
notion image

解决gitlab迁移后runner无法使用

gitlab由ip+prot 更换为域名的访问方式,runner无法正常运行
更改方案
  1. linux下编辑/etc/gitlab-runner/config.toml
  1. 更换ip+port为域名
notion image
1. 执行 gitlab-runner restart 即重启gitlab-runner,然后到gitlab上看看状态吧!
 

© WangJiaHao 2022