在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私有仓库
相关推荐
Ven%4 小时前
centos查看硬盘资源使用情况命令大全
linux·运维·centos
上辈子杀猪这辈子学IT5 小时前
【Zookeeper集群搭建】安装zookeeper、zookeeper集群配置、zookeeper启动与关闭、zookeeper的shell命令操作
linux·hadoop·zookeeper·centos·debian
minihuabei5 小时前
linux centos 安装redis
linux·redis·centos
A ?Charis16 小时前
Gitlab-runner running on Kubernetes - hostAliases
容器·kubernetes·gitlab
IT-民工2111019 小时前
CI/CD 实践总结
运维·ci/cd·自动化
Diamond技术流20 小时前
从0开始学习Linux——远程连接工具
linux·学习·centos·ssh·xshell·ftp
秋说1 天前
开源代码管理平台Gitlab如何本地化部署并实现公网环境远程访问私有仓库
gitlab·源代码管理
极小狐1 天前
驭码上新,AI Code Review、基于代码库的知识问答,让研发起飞
gitlab·devsecops·devops·极狐gitlab·安全合规
188_djh1 天前
# Python基础到实战一飞冲天(一)--linux基础(一)
linux·开发语言·python·ubuntu·centos·os·operationsystem
Jeffrey侠客1 天前
.Net Core 6.0 WebApi在Centos中部署
linux·centos·.netcore