离线可否搭建 GitLab 环境?
作者:卡卷网发布时间:2024-11-25 19:09浏览数量:109次评论数量:0次
背景:
为什么要使用GitLab CI/CD?
统一工作流程:GitLab CI/CD 为开发、测试和运维团队提供了一个统一的工作流程。开发人员提交代码后,测试人员可以清楚地看到代码的构建和测试情况,运维人员也可以了解软件的部署进度。例如,在一个大型企业级项目中,不同部门的人员可以通过 GitLab CI/CD 的界面查看各个阶段的任务状态,避免了沟通不畅和信息孤岛的问题。
快速可靠的部署:持续交付允许将经过测试的软件版本快速、可靠地发布到测试环境或预生产环境。例如,在一个移动应用开发项目中,开发团队可以通过 CD 管道将新的应用版本自动部署到内部测试平台,供测试人员进行功能测试和验收测试。持续部署则更进一步,在满足一定条件(如所有测试通过、经过人工审批等)后,可以将软件自动部署到生产环境。这大大缩短了从代码提交到软件上线的周期,使企业能够更快地响应市场需求。
快速反馈:开发人员可以频繁地将代码提交到版本控制系统(如 GitLab)。每次提交后,GitLab CI/CD 会自动触发构建和测试过程。例如,在一个 Web 应用开发项目中,当开发人员修改了某个功能模块的代码并提交后,CI 管道会立刻检查代码是否能够正确编译,以及单元测试是否通过。如果有问题,开发人员可以及时得到反馈并进行修复,避免了问题在代码库中积累,大大减少了集成阶段的错误。
代码质量保证:通过在 CI 过程中运行各种自动化测试,包括单元测试、集成测试和代码规范检查等,可以确保代码质量。以一个 Python 项目为例,在 CI 管道中可以使用工具如 pytest 进行单元测试,使用 flake8 进行代码风格检查。这样可以强制开发团队遵循统一的代码质量标准,提高整个项目的代码质量。
环境搭建:ubuntu 22.04
安装包下载:(国内清华源镜像)
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/jammy/main/g/gitlab-ce/
https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/ubuntu/pool/jammy/main/g/gitlab-runner/
gitlab ce环境搭建:
将安装包拷贝到Ubuntu主机上:
使用命令安装:
sudo dpkg -i gitlab-ce_17.5.2-ce.0_amd64.deb
;如有依赖项目,使用命令补全
sudo apt install -f
安装完成后,使用命令:
sudo vim /etc/gitlab/gitlab.rb
;配置gitlab 主文件
;主要是修改:external_url:
修改完成后,运行命令:
sudo gitlab-ctl reconp
登录用户名为:root
密码在这个文件里面,使用cat命令查看: sudo cat /etc/gitlab/initial_root_password
到此,gitlab ce 环境已经搭建完毕。
最后查看服务器状态:
gitlab runner 环境搭建及注册:
- 登录系统,来到:Admin area -> CI/CD -> Runners
点击,打开安装指引,这里有各个系统的安装、注册指引;
不过这里的下载地址是aws上面的,下载速度比较慢,可以下载上述的第二个 链接;
教程采用离线安装包安装runner:
首先将安装文件copy到目标主机,目标主机也是ubuntu2204的系统,也可以用其他的系统,比如windows或者macos,依据你自己的需要来定;
使用如下两个命令来安装,期间有提示需要安装docker,如果需要使用docker,需要先安装;
sudo dpkg -i gitlab-runner_17.6.0-1_amd64.deb
sudo apt install -f
这里有一个问题:
默认使用的账号是:GitLab Runner,windows使用的是System账号;这里比较坑。
最好换成当前的账号,例如我当前的账号是ubuntu,可以这样操作:
# 先下载原来的runner
sudo gitlab-runner uninstall
# 以当前用户来安装服务;
sudo gitlab-runner install --user=ubuntu --working-directory=/home/ubuntu
# 查看状态
sudo gitlab-runner status
# 启动runner
sudo gitlab-runner start
# 注册runner
sudo gitlab-runner register --url http://192.168.2.14/ --registration-token _TADoyyiTEyncuDssAJN
这里按照提示一步一步来,Executor 我选的shell
注册成功后,可以到Runners下面看:
注意这里的tag,要和.gitlab-ci.yml里面的tag对应起来,否则Job会一直pending,找不到Runner,我是有4个环境,比如c++ / golang / Rust ,还有Linux环境和Windows环境,每个项目打包的环境独立的VM。所以我会指定tag,具体的根据你 自己的需求来定。
测试项目:
测试C++文件:
#include <iostream>
using namespace std;
int main(int argc, char const *argv[])
{
std::cout << "hello world cpp" << std::endl;
return 0;
}
测试yml文件:
stages:
- build
- deploy
build:
stage: build
tags:
- cpp
script:
g++ -Wall -g main.cpp -o app
artifacts:
paths:
- app
untracked: false
when: on_success
access: all
expire_in: "30 days"
deploy:
stage: deploy
tags:
- cpp
script:
- whoami
- hostname
- echo "Create Directory"
- mkdir -p /home/ubuntu/utools
- echo "Begin to copy files"
- cp ./app /home/ubuntu/utools/app
如果job成功,会看到如下提示:
点击 ‘Passed’可以看到详情:
总结:
这只是一个非常简单的PIPELINE,还可以完善很多,具体可以参考官方文档。
免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。
相关推荐

你 发表评论:
欢迎