在CentOS 7.5上使用GitLab CI/CD建立持续部署pipeline

CI(持续集成)和 CD(持续交付)是一种自动构建和部署代码的方法,CI 是将代码持续集成到存储库的主分支中,并对其进行自动测试的实践。CD 就是让代码达到可交付状态,这样只需点击一个按钮就可以部署它,或者在持续部署的情况下,如果所有测试都通过,则自动部署代码。

本文使用 GitLab 构建一个持续部署 pipeline,pipeline 将在每次提交到存储库时运行。完成本文的先决条件有两个:

  1. 一个运行 CentOS 7.5 的服务器
  2. GitLab 账号

注意:运行 gitlab 很费内存,请保障 4G 以上内存的机器

安装 Docker

在 CentOS 安装并运行 Docker 需要经过 3 个步骤

  1. 设置 Docker 存储库
cli 复制代码
yum install -y yum-utils

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

在新主机上首次安装 Docker 需要设置 Docker 存储库。之后,可以从存储库安装和更新 Docker。

  1. 安装 Docker 及相关软件
cli 复制代码
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. 运行 Docker
cli 复制代码
systemctl start docker

通过运行 hello-world 镜像来验证 Docker 是否成功安装,命令如下:

arduino 复制代码
docker run hello-world

上述命令将下载 hello-world 映像并在容器中运行它,如果得到下图所示的内容,则说明 Docker 成功安装且正在运行。

补充:安装docker的全部细节见 docs.docker.com/engine/inst...

注册 GitLab Runner

  1. 下载

执行下面的命令下载安装包

arduino 复制代码
curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/rpm/gitlab-runner_amd64.rpm"
  1. 安装安装包

执行下面的命令安装上一步下载的 gitlab runner 安装包

css 复制代码
rpm -i gitlab-runner_amd64.rpm
  1. 创建 runner

在 GitLab 中,runner 用于运行 CI/CD job,GitLab 有3种 runner,分别是 shared runner,group runner 和 project runner。这里我们创建 project runner,这类 runner 只能用于固定的项目,如下 3 个步骤:

a. 进入 GitLab 网页创建一个项目,命名为 Hello-CICD。 b. 进行 Hello-CICD,单击左侧栏的 Settings > CI/CD,展开主内容区的 Runners 部分,如下图所示:

c. 单击 New project runner,根据实际情况填写界面上显示的表单,填写完表单点击 Create runner 将得到如下图所示的内容:

创建完 runner 将得到一个 runner token,比如上图中的 glrt-sWq83HYCs27qczxxCsuh,该 token 将到注册 runner 的时候使用。

  1. 注册 runner

在服务器的命令行输入下述命令:

arduino 复制代码
gitlab-runner register \
  --non-interactive \
  --url "https://gitlab.com/" \
  --token "glrt-sWq83HYCs27qczxxCsuh" \
  --executor "docker" \
  --docker-image alpine:latest \
  --description "docker-runner"

上述操作执行完成,命令行将提示 runner 注册成功,其配置信息保存在 /etc/gitlab-runner/config.toml 文件中,内容如下:

ini 复制代码
[session_server]
  session_timeout = 1800
concurrent = 1
check_interval = 0
shutdown_timeout = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "test"
  url = "https://gitlab.com"
  id = 28656708
  token = "glrt-sWq83HYCs27qczxxCsuh"
  token_obtained_at = 2023-10-20T03:07:16Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "docker"
  [runners.cache]
    MaxUploadedArchiveSize = 0
  [runners.docker]
    tls_verify = false
    image = "alpine:latest"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0

进行 GitLab 的 Hello-CICD 项目,展开 Settings > CI/CD > Runners,将刚才注册的 runner 已分配给该项目,如下图所示:

创建 .gitlab-ci.yml 文件

在 Hello-CICD 项目创建 .gitlab-ci.yml 文件,它是一个 YAML 文件,可以在其中指定 GitLab CI/CD 的指令。下面是一个真实的 .gitlab-ci.yml 文件:

yaml 复制代码
# CICD 镜像
image: 'registry.xxxx.com/fe/node-yarn-zip-bash-git:10.19.0'

stages:
  - npm-publish

before_script:
  - npm install -s -g vitis-cli
  - npm install -g cross-env
  - npm install -g typed-css-modules
  - npm install -s -g vitis-material-parser
  - tcm --pattern ./packages/input/**/*.module.scss -c

publish-packages:
    stage: npm-publish
    script:
        - cd ./packages/input
        - tools-script publish-package ./ --ignore-uncommitted-changes yarn.lock
    only:
        - release
    tags:
        - kube-runner

创建 .gitlab-ci.yml 写入内容并提交该文件,进入 Hello-CICD 项目的 Build > Pipelines,界面将展示 Pipelines,如下图所示:

提示:获取完整的 .gitlab-ci.yml 语法,参见 docs.gitlab.com/ee/ci/yaml/...

到目前为止,最基本的 GitLab CI/CD 流程已介绍完毕,在实际项目中,最大的变量是 Docker 镜像,配置 CI/CD 流程应该提前准备好镜像。

推荐阅读

  1. 在腾讯云服务器上使用Verdaccio搭建npm私有仓库
相关推荐
海岛日记7 小时前
centos一键卸载docker脚本
linux·docker·centos
贰十六8 小时前
笔记:Centos Nginx Jdk Mysql OpenOffce KkFile Minio安装部署
笔记·nginx·centos
让生命变得有价值8 小时前
使用 helm 部署 gitlab
gitlab·helm
Kkooe8 小时前
GitLab|GitLab报错:PG::ConnectionBad: could not connect to server...
gitlab
pumpkin8451414 小时前
GitHub 和 GitLab
gitlab·github
lizz66615 小时前
gitlab:使用脚本批量下载项目,实现全项目检索
gitlab
脸ル粉嘟嘟15 小时前
GitLab使用操作v1.0
学习·gitlab
肖永威16 小时前
CentOS环境上离线安装python3及相关包
linux·运维·机器学习·centos
tian2kong17 小时前
Centos 7 修改YUM镜像源地址为阿里云镜像地址
linux·阿里云·centos
mengao123417 小时前
centos 服务器 docker 使用代理
服务器·docker·centos