说明

  • 本例均以docker进行安装

  • 系统环境

    1
    2
    3
    4
    5
    6
    7
    8
    # uname -a
    Linux code 5.4.0-159-generic #176-Ubuntu SMP Mon Aug 14 12:04:20 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
    # lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description: Ubuntu 20.04 LTS
    Release: 20.04
    Codename: focal
  • docker 与 docker-compose

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    # docker version
    Client: Docker Engine - Community
    Version: 23.0.1
    API version: 1.42
    Go version: go1.19.5
    Git commit: a5ee5b1
    Built: Thu Feb 9 19:46:56 2023
    OS/Arch: linux/amd64
    Context: default

    Server: Docker Engine - Community
    Engine:
    Version: 23.0.1
    API version: 1.42 (minimum version 1.12)
    Go version: go1.19.5
    Git commit: bc3805a
    Built: Thu Feb 9 19:46:56 2023
    OS/Arch: linux/amd64
    Experimental: false
    containerd:
    Version: 1.6.18
    GitCommit: 2456e983eb9e37e47538f59ea18f2043c9a73640
    runc:
    Version: 1.1.4
    GitCommit: v1.1.4-0-g5fd4c4d
    docker-init:
    Version: 0.19.0
    GitCommit: de40ad0

    # docker compose version
    Docker Compose version v2.16.0

gitlab

  1. 设定环境变量,在~/.bashrc中加入export GITLAB_HOME=/srv/gitlab,并生效source ~/.bashrc,详见Set up the volumes location

  2. 创建docker-compose.yml文件,内容如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #  gitlab/gitlab-ee:latest 版本信息
    # "gitlab/gitlab-ee@sha256:82e5d49574964bc0a5b8942ac2b92ac7f3618832d6eb24fc9c33a41d889b8d83"
    version: '3.6'
    services:
    web:
    image: 'gitlab/gitlab-ee:latest'
    restart: always
    hostname: '192.168.1.1' # 填本机IP或域名,localhost不行
    environment:
    GITLAB_OMNIBUS_CONFIG: |
    external_url 'http://192.168.1.1:8929'
    gitlab_rails['gitlab_shell_ssh_port'] = 2224
    ports:
    - '8929:8929'
    - '2224:22'
    volumes:
    - '$GITLAB_HOME/config:/etc/gitlab'
    - '$GITLAB_HOME/logs:/var/log/gitlab'
    - '$GITLAB_HOME/data:/var/opt/gitlab'
    shm_size: '256m'
  3. 启动,docker compose up

  4. 获得初始账密,24小时即过期

    1
    2
    root
    docker exec -it [启动容器名] grep 'Password:' /etc/gitlab/initial_root_password

gitlab-runner

  1. 在网页端创建runner,并获取runner authentication token,填写tag即可

    image-20231105151132726

  2. 创建成功后,如下

    image-20231105151356634

    image-20231105151720708

  3. 启动gitlab-runner容器,启动后,查看日志如下,报错是因为没有config.toml文件,创建runner后,即消失

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #  gitlab/gitlab-runner:latest 版本信息 
    # "gitlab/gitlab-runner@sha256:b846b7dec4f10fbe576709e4c74cbf2859c5a01267e7992b36d6643f52f6154d"

    # Option 1: Use local system volume mounts to start the Runner container
    # 示例采取方案
    docker run -d --name gitlab-runner --restart always \
    -v /srv/gitlab-runner/config:/etc/gitlab-runner \
    -v /var/run/docker.sock:/var/run/docker.sock \
    gitlab/gitlab-runner:latest

    # Option 2: Use Docker volumes to start the Runner container
    docker volume create gitlab-runner-config
    docker run -d --name gitlab-runner --restart always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v gitlab-runner-config:/etc/gitlab-runner \
    gitlab/gitlab-runner:latest

    image-20231105145920684

  4. 注册runner,内容会被记录在/srv/gitlab-runner/config/config.toml中,executor选择参见Executors

    1
    2
    # 注意 /srv/gitlab-runner/config:/etc/gitlab-runner 为第一步配置路径
    docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register

    image-20231105161008073

  5. 成功后,如下

    image-20231105152813538

  6. 测试 ci 功能

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # .gitlab-ci.yml
    stages:
    - compile

    compile:
    stage: compile
    tags:
    - first-gitlab-runner
    script:
    - echo "hello, world"
    - echo "this is my gitlab runner test"

    image-20231105162354242

  7. 删除现有runner

    1
    2
    3
    4
    5
    6
    7
    # 查看列表
    docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner list

    # 取消注册
    docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner unregister --name [name]
    # 以下命令实测不能删除
    # docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner unregister --url [url] --token [token]

问题及解决

  1. ERROR: Unregistering runner from GitLab client error status=only http or https scheme supported
    • 命令使用错误,unregister需要指定--url

参考