使用Gitlab从0到1搭建流水线环境

670 阅读4分钟

挑选合适的服务器

⚠️ 本文以aws作为例子🌰,其他的云服务器配置方面可能有细小区别

⚠️ 出于安全和性能原因,您不应该在托管GitLab 实例的机器上安装极狐GitLab Runner

Gitlab 服务器配置

确保GitLab能够流畅运行。基本要求通常包括:

  • CPU:至少需要4核心
  • 内存:至少需要4GB RAM
  • 硬盘:20GB的存储空间也够了

刚开始使用过2核4GB的华为云和aws的EC2,虽然都能打开网站,不仅很慢,而且经常500,升级配置之后就没有这些问题了,所以我建议是4核4GB以上的硬件配置

Gitlab-runner 服务器配置

GitLab Runner 对系统要求差异很大,只是基本搭建和运行,如下配置即可:

  • CPU:2核心
  • 内存:4GB RAM

安装配置Gitlab

为了方便,这里使用的是Docker拉取Gitlab镜像安装

0. 安装Docker

如果用的是aws的云服务器,可以点击如下链接进行安装

docs.aws.amazon.com/serverless-…

1. 创建目录,本地系统卷挂载

文件名称和路径可以不和我一样,在第三步挂载的时候,用你自己创建的文件能挂载即可

mkdir -p ~/data/gitlab/config ~/data/gitlab/logs ~/data/gitlab/data

2. 拉取Gitlab Docker镜像

docker pull gitlab/gitlab-ce

3. 启动并挂载Gitlab

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

修改gitlab.rb相关配置

如果不修改,那么你的git仓库的url就会是类似这样 git@bc03aa040021:url/repo.git 的地址, ip 地址是一串乱码,代码就拉取不了

打开gitlab.rb配置文件(文件在挂载的config文件夹中)

vim data/gitlab/config/gitlab.rb

修改配置如下

# 设置Clone with HTTP中的IP(我这里设置的是公网ip)
external_url 'http://120.46.xxx.xx'

# 设置Clone with SSH中的IP
gitlab_rails['gitlab_ssh_host'] = '120.46.xxx.xxx'
# 修改主机端口映射(这一步很重要,不然会拉取不了代码)
gitlab_rails['gitlab_shell_ssh_port'] = '222' # 此端口是宿主机映射到 Gitlab 22的端口

登录Gitlab

  • 到网页上,输入主机Ip即可访问如下登录页面
  • 首次登录github,账号名是:root,密码在 data/gitlab/config/initial_root_password(你config的文件夹里面)该临时文件夹里面(进去之后记得先改密码哦) image.png

安装Gitlab-Runner

gitlab-runner的安装方式有很多,这里使用的直接安装,不想在docker里面再安装gitlab-runner,直接安装的方式有很多,本文选择的安装方式是包管理进行进行安装

其他安装方式:docs.gitlab.com/runner/inst…

1. 添加官方仓库

curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash

2. 安装最新版本的 GitLab Runner

sudo yum install gitlab-runner

3. 创建runner

登录gitlab(root用户),点击左下角的 Admin Area -> CI/CD -> Runners -> New instance runner

填上Tags,点击Create runner

image.png

4. 注册runner

当我们创建好之后,就会到注册页面,这里会列举出详细步骤(如下图)

image.png

执行结果如下:

image.png

值得注意的是,Gitlab注册地址给的是公有IP,但是如果我们的两台机器都是属于同一个VPC下的时候,我们可以使用私有IP进行注册,这样直接内网通信,就会非常快

5. Gitlab-runner,启动!

因为我上面用的executor是shell,所以直接使用如下命令

gitlab-runner run

image.png

5. Gitlab上查看注册的Runners

如下图表示我们就注册成功了

image.png

校验,运行一个最简单的项目

  1. 在Gitlab上创建一个空项目即可,拉到本地,然后创建一个 .gitlab-ci.yml 文件, 配置如下:
image: node:latest

cache:
  paths:
    - node_modules/
test_async:
  tags:
    # 这里是用创建runner的tag
    - shared
  script: echo "lalala~~~~~~"
deploy:
  tags:
    - shared
  stage: deploy
  script: echo "Successfully deployed."
  environment: production
  1. push代码,然后就会可以在Gitlab看构建情况,至此,我们的流水线就搭建起来了

image.png

运行Todo-List项目

这个todo-list项目需要docker和docker-compose,所以我们需要在有gitlab-runner的机器上安装docker和docker-compose

  1. 安装docker(如上)
  2. 安装docker-compose
# docker-compose (latest version)  
$-> sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose  
# Fix permissions after download  
$-> sudo chmod +x /usr/local/bin/docker-compose
# Verify success
docker-compose version
  1. 创建项目并上传代码,代码可以从如下链接拉取:github.com/FrontEndZha…
  2. 查看pipeline

image.png

  1. 访问Todo-list页面,ip就是gitlab-runner的ip,端口就是8080

image.png