点击上方蓝字关注我们
时光流逝GitLab演化十多年,今天我们将向你展示如何在15分钟安装 GitLab 服务器,并在其中运行第一个 CI/CD 过程。在本文中,将向你展示如何安装 CI/CD 工具,以及如何准备基于 Maven 构建和测试一个简单项目的流程。
什么是 GitLab?
Gitlab是一款支持使用持续集成和持续交付流程进行软件开发的工具。它的主要组件是 Git 版本控制系统。此外,它还提供许多功能,支持程序员在各种环境下持续构建、测试和自动安装项目。本文使用GitLab 17版本, 其他版本UI可有差别。
所需工具
开始工作前,请准备好所需工具。你可以在网站上找到这些工具的说明:如何使用 Docker Compose 安装 Jenkins?
Docker Compose 的配置
我们将创建一个专门的目录来存储数据和 Gitlab 配置,然后开始安装工作。下一步,我们创建包含以下内容的 docker-compose.yml 文件:
version: "3.7"
services:
web:
image: "gitlab/gitlab-ce:latest"
restart: always
hostname: "localhost"
container_name: gitlab-ce
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.0.107:8080'
ports:
- "8080:80"
- "8443:443"
volumes:
- "/home/docker/gitlabce/config:/etc/gitlab"
- "/home/docker/gitlabce/logs:/var/log/gitlab"
- "/home/docker/gitlabce/data:/var/opt/gitlab"
networks:
- gitlab
gitlab-runner:
image: gitlab/gitlab-runner:alpine
container_name: gitlab-runner
restart: always
depends_on:
- web
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- "/home/docker/gitlabce/gitlab-runner:/etc/gitlab-runner"
networks:
- gitlab
networks:
gitlab:
name: gitlab-network
按实际部署环境修改 external_url 'http://192.168.0.107:8080', 其中192.168.0.107在这儿是我的虚拟机IP
该配置定义了我们要运行的容器。在我们的例子中,将是 GitLab 服务和一个 GitLab runner(运行 CI / CD 任务的独立模块)。最重要的配置参数有
image - 我们想在服务器中使用的 docker 镜像
端口--我们在容器外提供的端口列表。在我们的配置中,我们提供了 80、443(网站)端口container_name - 容器名称
volumes - 指定容器使用的卷。在我们的配置中,我们有与系统共享的目录($ GITLAB_HOME 中的子目录)和一个允许从 GitLab 运行程序访问 Docker 环境的额外卷。
networks - 定义容器运行的虚拟网络。在我们的例子中,www 门户和运行程序在一个 “gitlab-network ”中运行。
安装 Gitlab
使用以下命令启动容器
docker-compose up –d
启动后,Docker 会从服务器上下载 GitLab 和 GitLab Runner 映像。在我的电脑上是这样的
首次登录 GitLab 需要一个临时密码,该密码在安装过程中自动生成。我们使用以下命令获取密码
docker exec -it gitlab-ce grep 'Password:' /etc/gitlab/initial_root_password
GitLab 启动
我们的 GitLab 网址是:http://192.168.0.107:8080。访问该地址后,会出现以下界面:
注意:首次启动门户网站可能需要几分钟时间。要登录门户,我们必须在用户名一栏输入 “root”,并在密码一栏输入之前获得的临时密码。
登录后,会出现以下界面:
恭喜您,GitLab 已成功启动!
门户的初始配置
在继续之前,我们需要更改一些门户设置。首先,我们要关闭所有人的开放注册。为此,请单击上栏带有警告的 “查看设置 ”按钮(面板地址;http://localhost:8080/admin/application_settings/general#js-signup-settings )。在新页面上,取消选中已启用注册,然后保存更改。
下一步应该是更改根用户。为此,请访问网站:http://localhost:8080/-/profile/account 然后在更改用户名字段中输入名称。点击 “更新用户名 ”进行批准
最后一项更改是修改密码。为此,请进入以下页面:OST:8080/-/profile/password/edit 并输入临时密码和新密码。点击 “保存密码 ”批准更改。
GitLab Runner配置
要在 GitLab 中使用 GitLab 运行程序,需要对其进行配置。为了正确配置,我们需要从门户网站复制一个令牌。为此,请访问地址:http://localhost:8080/admin/runners
点击 “复制令牌 ”按钮。
下一步,它将进入控制台并运行以下命令:
docker exec -it gitlab-runner gitlab-runner register --url "http://192.168.0.107:8080" --clone-url "http://192.168.0.107:8080" --token glrt-QPPVLqd7-ZD7eFwAXVbZ
启动后,将出现一个配置模块。该模块提供以下信息:
输入 GitLab 实例 URL:确认输入值(点击回车键)
输入注册令牌:输入之前复制的令牌。
输入运行程序的描述:输入运行程序的名称,例如 docker-runner
输入运行程序的标记:此处留空
输入执行器:在此处输入 docker
输入默认的 Docker 镜像:在这里我们提供默认的 Docker 镜像,例如 maven: latest
正确配置后,我们应该会看到 Runner 注册成功的确认信息:
Gitlab runner config配置文件
config.toml 节中增加如下 network_mode = "gitlab-network", 重启Gitlab runner容器实例
concurrent = 1
check_interval = 0
connection_max_age = "15m0s"
shutdown_timeout = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "devu\bbu\b\b"
url = "http://192.168.0.107:8080"
id = 1
token = "glrt-C7xexPtY4yfa39wHo3pn"
token_obtained_at = 2024-10-15T01:07:57Z
token_expires_at = 0001-01-01T00:00:00Z
executor = "docker"
clone_url = "http://192.168.0.107:8080"
[runners.custom_build_dir]
[runners.cache]
MaxUploadedArchiveSize = 0
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "ruby:2.7"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
network_mode = "gitlab-network"
shm_size = 0
network_mtu = 0
[[runners]]
name = "javv3"
url = "http://192.168.0.107:8080"
id = 3
token = "glrt-QPPVLqd7-ZD7eFwAXVbZ"
token_obtained_at = 2024-10-15T01:47:35Z
token_expires_at = 0001-01-01T00:00:00Z
executor = "docker"
clone_url = "http://192.168.0.107:8080"
[runners.custom_build_dir]
[runners.cache]
MaxUploadedArchiveSize = 0
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "maven:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
network_mtu = 0
network_mode = "gitlab-network"
注册成功可以在Runner控制台查看
Runner http://n/runners
配置runner
http://192.168.0.107:8080/admin/runners/3/edit
勾选 Run untagged jobs: Use the runner for jobs without tags in addition to tagged jobs.
创建第一个仓库
设置运行程序后,我们就可以创建第一个仓库了。为此,请转到 http://localhost:8080/projects/new 页面,然后单击导入项目在下一个屏幕中,选择从以下地址导入项目:Repo from URL。然后提供 Git 仓库 URL 地址:https://github.com/czerniga/helloworld.git
最后点击 “创建项目 ”确认
创建 CI/CD 管道
要为项目创建 CI/CD 管道,请单击左侧主菜单的 CI/CD,然后点击编辑器。屏幕上将显示创建 .gitlab-ci.yml 文件的选项,该文件将包含我们的管道定义。该文件将在 Git 仓库中创建
image: maven:latest
stages:
- build
- test
build-job:
stage: build
script:
- echo "Compiling the code..."
- mvn clean package
- echo "Compile complete."
artifacts:
paths:
- target
test-job:
stage: test
dependencies:
- build-job
script:
- ls -al
- echo "Running tests"
- java -cp target/helloworld-1.1.jar com.coveros.demo.helloworld.HelloWorld
上述定义描述了 CI / CD 流程应如何运作。其中最重要的元素是
image:用于构建项目的 docker 映像
stage:流程步骤列表
build-job:构建项目流程的第一步。此外,我们还要保存工件,以便在下一步中使用
test-job:运行项目的第二步
粘贴文件后,单击 “提交更改 ”确认更改。批准后,GitLab 将启动流程。要查看其结果,请转到左侧菜单中的 CI/CD -> Pipelines。在屏幕上,我们会看到第一个任务已经启动
CI中Build构建成功
恭喜您,您刚刚在 GitLab 中创建了第一个 CI/CD 作业!
停止容器
包含我们服务的容器是通过开关在后台启动的。如果你想停止门户,请执行以下命令:
docker-compose down
总结
在本教程中,介绍了如何使用一个 GitLab 运行程序来运行 GitLab。这里给出的配置会导致所有网站数据都保存在你的计算机/服务器上的目录中。因此,当容器停止或移除时,数据不会被删除。