Gitlab 相关的一些安装、命令、操作记录。

# 安装 gitlab

sudo apt update               // 更新软件源
sudo apt install docker.io -y // 安装docker
docker pull gitlab/gitlab-ee:latest  // 拉取镜像
docker run -d  -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ee:latest

gitlab结果:6e6b93f21e379e40a50a2468025d10d82067d9c0a6635ac0fe1090fc59fd4c4b

vim /home/gitlab/config/gitlab.rb
# 配置http协议所使用的访问地址,不加端口号默认为80
external_url 'http://47.103.58.85'
# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '47.103.58.85'
gitlab_rails['gitlab_shell_ssh_port'] = 22 # 此端口是run时22端口映射的22端口
docker restart gitlab

gitlab 用户名:root 初始密码:在config里

docker run -d  -p 443:443 -p 80:80 -p 222:22 --name gitlab-ce --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest

结果:3125c038a09574b76a390dcda2a895b2f2402b7b78b5451891ece17358a1b510

# 启动/重启 Runner

 docker run -d -p 8093:8093 --name gitlab-runner --restart always \
     -v /home/gitlab-runner/config:/etc/gitlab-runner \
     -v /var/run/docker.sock:/var/run/docker.sock \
     gitlab/gitlab-runner:latest

结果:bab6921ec13264ab84d364590f7c8bd3a3a969739a044a5abf1e67f249c043ab

# 注册runner

# 手动填写参数
docker run --rm -it -v /home/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register
# 或命令行预设参数
docker  run --rm -it gitlab/gitlab-runner register -n \
       --url http://47.103.58.85 \
       --registration-token tsiKxKgEm648JnzaSSMz \
       --tag-list saas-dev\
       --executor docker \
       --docker-image docker \
       --docker-volumes /home/gitlab-runner/.m2:/root/.m2 \
       --docker-volumes /home/gitlab-runner/.npm:/root/.npm \
       --docker-volumes /home/gitlab-runner/config:/etc/gitlab-runner \
       --docker-volumes /var/run/docker.sock:/var/run/docker.sock \
       --description "docker镜像saas-prod-elk2服务器"
# 上面两个都不行,要进入容器注册
docker exec -it gitlab-runner /bin/bash
gitlab-runner register

# 辣鸡runner,配置要写死docker版本,不然哭死你

/home/gitlab-runner/config/config.toml

concurrent = 4      # 并发运行数量,建议设置为CPU数量
check_interval = 0
[session_server]
  session_timeout = 1800
[[runners]]
  name = "docker镜像saas-dev服务器"
  url = "http://47.103.58.85"
  token = "tsiKxKgEm648JnzaSSMz"
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "docker:19.03.12"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock","/cache"]
    shm_size = 0

# 验证runner

docker run --rm -it -v /home/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner verify

# 清理gitlab prometheus 磁盘占用过大

# 清理 docker 日志
cat /dev/null > /var/lib/docker/containers/8bd86f42a9a4ec56bf08718f49cf939ad4fa038ca786deda6ae637f998addb0b/8bd86f42a9a4ec56bf08718f49cf939ad4fa038ca786deda6ae637f998addb0b-json.log
# 清理 gitlab 日志
docker exec -it gitlab /bin/bash
gitlab-ctl stop prometheus
rm -rf /var/opt/gitlab/prometheus/data/*
gitlab-ctl start prometheus

# Gitlab-CI 配置

.gitlab-ci.yml (opens new window)

# 默认
default:
  # 默认镜像
  image: ruby:3.0
  # 如果要启动运行命令或脚本
  image:
    # 镜像名称
    name: ruby:2.6
    # 命令或脚本
    entrypoint: ["/bin/bash"]
  # 额外的 Docker 镜像来运行脚本。services 镜像链接到 image 关键字中指定的镜像
  services:
    - name: my-postgres:11.7
      alias: db-postgres
      entrypoint: ["/usr/local/bin/db-postgres"]
      command: ["start"]
# 阶段
stages:
  # 阶段名称
  - build
  - test
# 自定义变量
variables:
  # 变量 key: value
  DEPLOY_VARIABLE: "default-deploy"
# 流水线
workflow:
  # 规则
  rules:
    # 具体规则
    - if: '$CI_PIPELINE_SOURCE == "schedule"'
      # 当 IF 为 true 时,是否执行流水线
      when: never
    - if: '$CI_PIPELINE_SOURCE == "push"'
      when: never
    # 除了上面指定的规则是 never,其他都是 always
    - when: always
# 作业/任务
job1:
  # 所属阶段
  stage: build
  # 镜像
  image: ruby:3
  # 规则
  rules:
    - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/ && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH'
      when: never
    - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/'
      when: manual
      allow_failure: true
    - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME'
  # 执行脚本
  script:
    - echo "Check the ruby version, then build some Ruby project files:"
    - ruby -v
    - rake
# 作业/任务
job2:
  stage: test
  script:
    - echo "If the files are built successfully, test other files with a different command:"
    - rake test2