持续集成和持续开发(CI/CD)是一种新的方法论,因其特点在软件行业中获得了巨大的空间,并在较短的时间内得到了普及。但是,有许多公司已经使用这种方法开始了软件开发过程,而其他公司也在采用这种方法。 CI/CD 有很多优点,吸引了开发人员和软件行业,其中一些优点如下:
- 速度:持续集成意味着通过即时反馈快速
- 准确性:将自动化应用于部署过程是一个很好的起点
- 可靠性:拥有可靠的 CI/CD 管道可以显着提高构建和部署新提交的速度
- 较小的代码更改:使用持续测试,这些小片段一旦集成到代码存储库中就可以进行测试
- 更快的发布率:更快地检测到故障,因此可以更快地修复,从而提高发布率
CI/CD 的阶段
CI/CD 没有明确的阶段。但是,CI/CD 是一种非常灵活的方法,开发人员可以根据自己的选择设置这些阶段。以下是一些 CI/CD 阶段的标准选择,这些都在管道中,如果前一个阶段失败,则不会进入下一个阶段。
- 版本控制:用于管理代码、文档等的变化,例如 GitLab、GitHub、TFS 等。
- 构建:此阶段构建软件产品的解决方案并存储工件
- 单元测试:成功后 在第 2 阶段构建解决方案,如果有的话,它将进行单元测试。
- 部署:在成功构建和单元测试阶段后,将在临时环境中部署解决方案。
- 自动化测试:此阶段将运行所有自动化测试,以验证产品在部署到生产之前能够满足所有要求。
- 部署到生产:在成功运行所有测试用例和验证后,现在这个阶段将在生产环境中部署产品。
有许多可用的软件工具提供 CI/CD 的实现,下面是一些软件工具,开发人员或公司可以选择使用这些工具,每个工具都有自己的特点:
- Jenkins
- 圈子
- 团队城市
- 竹子
- GitLab
GitLab CI/CD 要求
可以有任何软件工具来实现如上所述的 CI/CD。然而,GitLab 以灵活的方式提供 CI/CD 实现,无需太多知识或其他额外软件,任何对软件开发有一些基本知识的人都可以轻松地使用 GitLab 设置 CI/CD 配置。以下是一些要求:
- 版本控制:GitLab 本身就是实现 CI/CD 的版本控制
- GitLab Runner:它是实现 CI/CD 的重要工具,需要在任何 CI/CD 配置之前安装它。当有人提交更改时,它会为 GitLab 挑选并执行作业。 Runner 有两种类型——共享 Runner 和特定 Runner。
- 共享运行器:这些运行器在同一个运行器上执行不同项目的代码,并在您有多个具有相似要求的作业时使用共享运行器。
- 特定运行器:它是一个单独的运行器,每个项目将由一个单独的运行器执行,并由唯一从事该特定项目的开发人员管理。
- GitLab Runner Executors: GitLab Runner 实现了许多可用于在不同场景中运行构建的执行器。 GitLab 中提供了几种执行器,可以根据项目的要求或软件工具的可用性来实现。一些执行者如下:
- SSH: SSH 执行器仅支持在 Bash 中生成的脚本,目前不支持缓存功能。这是一个简单的执行器,允许您通过 SSH 执行命令在远程机器上执行构建。
- Shell: Shell 是配置最简单的执行器。构建所需的所有依赖项都需要在安装 Runner 的同一台机器上手动安装。
- Parallels:此执行器配置与 Virtual Box 一起使用。
- VirtualBox:这种类型的执行器允许使用已经创建的虚拟机,该虚拟机被克隆并用于运行您的构建。
- Docker:一个很好的选择是使用 Docker,因为它允许一个干净的构建环境,并且具有简单的依赖项管理(用于构建项目的所有依赖项都可以放在 Docker 镜像中)。
- Docker Machine(自动缩放): Docker Machine 是一个特殊版本的 Docker 执行器,支持自动缩放。它的工作方式类似于普通的 Docker 执行器,但通过 Docker Machine 按需创建构建主机。
- Kubernetes executor: Kubernetes executor 允许使用现有的 Kubernetes 集群进行构建。
- 自定义执行器:自定义执行器允许指定您自己的执行环境。
- Yml 文件:运行 CI/CD 需要 Yml 文件,它需要存储在项目的源文件中,它包括每个技术和收益方法的配置。
亚搏体育应用跑步者窗口
按照以下步骤,在 Windows 上下载 GitLab Runner,并通过命令进行验证和注册。
1. 从 https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-windows-386.exe 下载 GitLab runner 2. 在本地目录中创建一个文件夹(例如 C :\GitLab-Runner) 并将下载的文件重命名为 gitlab-runner.exe,存放在此文件夹中。
3. 输入以下命令,验证并注册它。
GitLab 运行命令
如果系统中已经安装了GitLab Runner,则有很多命令,例如启动GitLab Runner、停止GitLab Runner、注册等。
Command | Description |
gitlab-runner.exe register | Register the project with CI/CD |
gitlab-runner.exe start | Start the runner |
gitlab-runner.exe stop | Stop the runner |
gitlab-runner.exe status | To know the status of gitlab-runner |
gitlab-runner unregister –name test-runner | Unregister Runner of a project and replace test-runner with your runner name and this name can be found inside the config.toml file (where your gitlab.exe) available. |
gitlab-runner unregister –url http://gitlab.example.com/ –token t0k3n | Remove Runner by URL and token |
gitlab-runner unregister –all-runners | Unregister All Runners |
gitlab-runner restart | This command stops and then starts the GitLab Runner service |
gitlab-runner uninstall | This command stops and uninstalls the GitLab Runner from being run as a service |
gitlab-runner exec | To see a list of available executors, run |
gitlab-runner –help | Check a recent list of commands by executing |
gitlab-runner run –help | can see the name of the environment variable |
gitlab-runner –debug | To run a command in debug mode |
gitlab-runner exec shell | To see a list of all available options for the shell executor, run |
GitLab Runner Linux
按照以下步骤在 Linux 环境中下载 GitLab Runner 并通过以下命令验证和注册项目。
- sudo curl -L –output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 [只需下载二进制文件之一为您的系统]
- sudo chmod +x /usr/local/bin/gitlab-runner [给它执行权限]
- sudo useradd –comment ‘GitLab Runner’ –create-home gitlab-runner –shell /bin/bash [创建一个 GitLab CI 用户]
- sudo gitlab-runner install –user=gitlab-runner –working-directory=/home/gitlab-runner [安装并作为服务运行]
- 须藤 gitlab-runner 开始
- 安装成功后,GitLab Runner 启动,可以执行存储库的注册。
Command | Description |
sudo gitlab-runner register | Register the project with CI/CD |
sudo gitlab-runner start | Start the runner |
sudo gitlab-runner stop | Stop the runner |
sudo gitlab-runner status | To know the status of gitlab-runner |
sudo gitlab-runner unregister –name test-runner | Unregister Runner of a project and replace test-runner with your runner name and this name can be found inside the config.toml file (where your gitlab.exe) available |
sudo gitlab-runner unregister –url http://gitlab.example.com/ –token | Remove Runner by Url and token |
sudo gitlab-runner unregister –all-runners | Unregister All Runners |
sudo gitlab-runner restart | This command stops and then starts the GitLab Runner service |
sudo gitlab-runner uninstall | This command stops and uninstalls the GitLab Runner from being run as a service |
sudo gitlab-runner exec | To see a list of available executors, run |
sudo gitlab-runner –help | Check a recent list of commands by executing |
sudo gitlab-runner run –help | Can see the name of the environment variable |
sudo gitlab-runner –debug | To run a command in debug mode |
sudo gitlab-runner exec shell | To see a list of all available options for the shell executor, run |
CI/CD Windows 项目配置
按照以下步骤使用 Windows 环境项目配置 CI/CD:
- 转到下载的 gitlab-runner .exe 路径,您将它存储在其中,然后打开命令提示符。 (按照上面的windows命令)
- 检查 gitlab-runner 状态,如果它已经在运行,则在使用 CI/CD 注册任何新项目之前停止它
- 现在输入 gitlab-runner.exe register 并填写以下详细信息
- 输入您的 GitLab 实例 URL:转到 GitLab 帐户 -> 选择要实施CI/CD 的项目 -> 设置 -> CI/CD
- 输入此运行程序的 gitlab-ci 令牌:转到 GitLab 帐户 -> 选择要实施CI/CD 的项目 -> 设置 -> CI/CD 。
- 输入此跑步者的 gitlab-ci 描述:输入任何名称(例如:MyRunner1),这只是为了记住哪个跑步者正在运行。
- 输入此运行程序的 gitlab-ci 标签:这是启动 CI/CD 的标签,可以输入任何名称或不需要名称(例如:my-tag、another-tag)
- 进入执行器:需要从上面给出的执行器列表中选择一个执行器,每个执行器都有自己的特点。
- 现在项目注册成功并启动GitLab runner。
CI/CD Linux 项目配置
按照以下步骤使用 Linux 项目配置 CI/CD。
- 转到您安装了 GitLab Runner 和 Git 的 Linux 机器
- 检查 GitLab 运行程序状态,如果它已经在运行,请在注册任何新项目之前停止它
- 输入 sudo gitlab-runner register -> 用 CI/CD 注册新项目
- 现在按照以下所有步骤,与 Windows 相同,并填写所需信息
在源代码中添加 Yml 文件
这是将 yml 文件包含到您的源代码目录中的重要步骤,如果您不包含它,CI/CD 将无法工作。此文件包含此项目将如何运行的配置。
For Example, .Net project Yml File format
variables:
NUGET_PATH: ‘C:\Tools\Nuget\nuget.exe’
MSBUILD_PATH: ‘C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\MSBuild.exe’
XUNIT_PATH: packages\xunit.runner.console.2.3.1\tools\net452
UNITTEST_FOLDER: ‘.\tests\CiCdExample.Tests\bin\Release\’
stages:
– build
– test
– deploy
build_job:
stage: build
only:
– branches
script:
– ‘& “$env:NUGET_PATH” restore’
– ‘& “$env:MSBUILD_PATH” /p:Configuration=Release /clp:ErrorsOnly’
– ‘& “$env:MSBUILD_PATH” src\CiCdExample\CiCdExample.csproj /p:DeployOnBuild=true /p:Configuration=Release /P:PublishProfile=FolderProfile.pubxml’
artifacts:
expire_in: 20 days
paths:
– ‘.\src\CiCdExample\bin\Release\Publish\’
– ‘$env:UNITTEST_FOLDER’
– ‘.\$env:XUNIT_PATH\*.*’
test_job:
stage: test
only:
– branches
script:
– ‘& “$env:XUNIT_PATH\xunit.console.exe” “$env:UNITTEST_FOLDER\CiCdExample.Tests.dll”‘
dependencies:
– build_job
deploy_job:
stage: deploy
only:
– branches
script:
– ‘xcopy /y /s “.\src\CiCdExample\bin\Release\Publish\*.*” “C:\Tools\inetpub\wwwroot\ci-cd-example”‘
dependencies:
– build_job
– test_job
C/C++ Yml Project format
image: gcc
stages:
– build
– test
build_job:
stage: build
only:
– master
script:
– cd sourcecode
– export CXX=/usr/bin/g++
– export CC=/usr/bin/gcc
– chmod -R 777 *
– ./compileproject.sh
artifacts:
expire_in: 365 days
paths:
– sourcecode/testdata_1.0
test_job:
stage: test
only:
– master
script:
– pwd
– ls -lrt sourcecode/testdata_1.0
– cd testDir
– chmod -R 777 *
– ./runtests.sh
dependencies:
– build_job