专业编程基础技术教程

网站首页 > 基础教程 正文

怎么使用 GitLab CI 构建 Docker 镜像

ccvgpt 2025-01-21 15:35:02 基础教程 1 ℃

与 GitLab 进行持续集成

GitLab CI/CD 是一种软件开发解决方案,使企业能够实施“持续”方法,例如持续集成(CI)、持续交付(CD)和持续部署(CD)。您可以使用 GitLab CI/CD 在软件开发生命周期 (SDLC) 的早期检测代码缺陷和错误。它可以帮助您确保部署到生产的任何代码都遵守应用程序所需的合规性法规和编码标准。了解如何取消注册 GitLab Runner。有时可能需要归档、取消归档或删除 GitLab 项目。在这篇文章中,我将向您展示如何使用 GitLab CI 构建 Docker 镜像。

怎么使用 GitLab CI 构建 Docker 镜像

CI 管道最常用的案例之一是构建 Docker 映像并使用它们来部署应用程序。这是一个很棒的选择,因为它包含一个内置注册表来存储生成的图像和一个集成的拉代理服务,从而可以更快地构建管道。如果您运行的是 Windows 机器,您可能需要安装 Docker Desktop 并向 Docker-windows 执行器注册 GitLab-Runner 才能顺利完成本文。

You can use GitLab to create Docker images and push them to the integrated container registry by adding a job to your pipeline.

如何使用 GitLab CI 构建 Docker 镜像

位于项目根目录下的一个名为 .gitlab-ci.yml 的文件用于配置 GitLab CI。这是自动使用的。使用 GitLab,可以将作业添加到管道中,该作业将创建 Docker 映像并将其提交到内置容器注册表。

当然,具体如何设置将在很大程度上取决于您和您的要求。请参阅如何修复“执行器需要 OSType=windows,但 Docker Engine 仅支持 OSType=linux”、如何从 Windows 设备卸载 GitLab,以及在 Windows 上安装和注册 GitLab Runner。

构建 Docker 镜像的先决条件

要成功做到这一点,您需要一个配置了 docker-in-docker (dind) 的 gitlab-runner 和一个可用的 Dockerfile。您可以轻松地在 Windows WSL 上设置 GitLab Runner,让您的 gitleb-runner 使用 Docker 作为执行器。

执行的第一步是建立工作。

第 1 步:克隆项目存储库

找到要为其构建映像的项目的 Git 存储库。在存储库的根目录中创建一个 .gitlab-ci.yml 文件。此文件定义了当您将更改推送到项目时将运行的 GitLab CI 管道。

我们有一个名为 testci 的项目,我们需要将其从 GitLab 克隆到本地计算机。

克隆远程存储库

步骤 2:使用 Docker 登录设置注册表身份验证

配置注册表身份验证的最简单方法是使用 docker login 命令。在 GgitLab 项目的根目录中,找到 Deploy>Container Registry

GitLab 容器注册表身份验证

步骤 3:将 GitLab 预定义变量注入到您的 .gitlab-ci.yml 文件中

您可以将 GitLab 预定义变量映射到 Yaml 文件中的 Docker 登录名。要查找 GitLab CI/CD 预定义变量,请单击此处。对于本文,我们仅在 .gitlab-ci.yml CI_REGISTRY_PASSWORDCI_REGISTRY_USERCI_REGISTRY 预定义变量。 /b4> 文件传入 docker loginbuild push 变量。

GitLab 预定义变量

GitLab 预定义变量对于控制作业和管道非常有用,它们可以帮助您避免在 .gitlab-ci.yml 配置文件中硬编码值。

第 4 步:准备好 .gitlab-ci.yml 和 Dockerfile

在这里,我们想要使用 Python 构建一个简单的 Docker 镜像,我们定义了 .gitlab-ci.yml 文件和 Dockerfile 如下:

.gitlab-ci.yml file

Building a Docker Image:    image: python:3.11    script:        - python --version        - pip --version        - pip install pytest        - pytest --version        - echo "My first GitLab CI"build image:    image: docker    services:     - docker:dind    script:     - echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER $CI_REGISTRY --password-stdin     - docker build -t $CI_REGISTRY_IMAGE .      - docker push $CI_REGISTRY_IMAGE

在上面的.gitlab-ci.yml中,我们只是告诉Docker登录从标准输入(stndin)获取密码。

Dockerfile

FROM python:3.11RUN pip install pytest

第 5 步:提交更改并将更改推送到远程项目存储库

通过运行 git add . 命令,然后运行 git commi t 命令来添加文件,指定分支,然后将其推送到远程存储库,如下面的屏幕截图所示:

提交更改并将更改推送到远程存储库

推送完成后,将 .gitlab-ci.yml 文件和 Dockerfile 推送到远程存储库将自动从 GitLab 容器注册表中的 Docker 镜像触发构建。从下面的截图可以看出,作业已经成功了。

将有一封电子邮件警报显示管道已成功通过。

建立电子邮件警报

如果您检查 GitLab 容器注册表,您现在应该会在容器注册表内看到该映像。

容器注册表中的 Docker 镜像

扩展构建作业

现在,我们通过向 .gitlab-ci.yml 文件添加一些附加步骤来扩展作业以按计划运行,如下所示:

在 GitLab CI/CD 上创建计划

前往您的 GitLab 项目并创建一个时间表。要创建计划,请从 GitLab 项目概述页面 > 构建 > 管道计划 > 新计划

创建管道计划

最后,提交并推送更改以在 GitLab 项目上自动构建新的管道作业。

最近发表
标签列表