.gitlab-ci.yml说明

GitLab CI/CD 是一种内置工具,用于实现持续集成、交付和部署。它通过.gitlab-ci.yml文件配置,包含CI/CD流程的脚本,由GitLab Runner执行。该文件定义了构建、测试和部署的步骤,帮助在早期发现错误,确保代码质量。在每次代码推送后,GitLab会自动运行pipeline,包括构建、测试和可能的部署。Auto DevOps则提供了预设的CI/CD配置,简化了从验证到监视的完整工作流程。

Gitlab官方文档:https://docs.gitlab.com/ee/ci/yaml/README.html

https://docs.gitlab.com/ee/ci/yaml/gitlab_ci_yaml.html

https://docs.gitlab.com/ee/ci/docker/using_docker_images.html

GitLab CI/CD 是一个内置在GitLab中的工具,用于通过持续方法进行软件开发:

  • Continuous Integration (CI)  持续集成
  • Continuous Delivery (CD)     持续交付
  • Continuous Deployment (CD)   持续部署

持续集成的工作原理是将小的代码块推送到Git仓库中托管的应用程序代码库中,并且每次推送时,都要运行一系列脚本来构建、测试和验证代码更改,然后再将其合并到主分支中。

持续交付和部署相当于更进一步的CI,可以在每次推送到仓库默认分支的同时将应用程序部署到生产环境。

这些方法使得可以在开发周期的早期发现bugs和errors,从而确保部署到生产环境的所有代码都符合为应用程序建立的代码标准。

GitLab CI/CD 由一个名为 .gitlab-ci.yml 的文件进行配置,改文件位于仓库的根目录下。文件中指定的脚本由GitLab Runner执行。

1. GitLab CI/CD 介绍

软件开发的持续方法基于自动执行脚本,以最大程度地减少在开发应用程序时引入错误的机会。从开发新代码到部署新代码,他们几乎不需要人工干预,甚至根本不需要干预。 

它涉及到在每次小的迭代中就不断地构建、测试和部署代码更改,从而减少了基于已经存在bug或失败的先前版本开发新代码的机会。

Continuous Integration(持续集成)

假设一个应用程序,其代码存储在GitLab的Git仓库中。开发人员每天都要多次推送代码更改。对于每次向仓库的推送,你都可以创建一组脚本来自动构建和测试你的应用程序,从而减少了向应用程序引入错误的机会。这种做法称为持续集成,对于提交给应用程序(甚至是开发分支)的每项更改,它都会自动连续进行构建和测试,以确保所引入的更改通过你为应用程序建立的所有测试,准则和代码合规性标准。 

Continuous Delivery(持续交付)

持续交付是超越持续集成的更进一步的操作。应用程序不仅会在推送到代码库的每次代码更改时进行构建和测试,而且,尽管部署是手动触发的,但作为一个附加步骤,它也可以连续部署。此方法可确保自动检查代码,但需要人工干预才能从策略上手动触发以必输此次变更。

Continuous Deployment(持续部署)

与持续交付类似,但不同之处在于,你无需将其手动部署,而是将其设置为自动部署。完全不需要人工干预即可部署你的应用程序。 

1.1. GitLab CI/CD 是如何工作的

为了使用GitLab CI/CD,你需要一个托管在GitLab上的应用程序代码库,并且在根目录中的.gitlab-ci.yml文件中指定构建、测试和部署的脚本。

在这个文件中,你可以定义要运行的脚本,定义包含的依赖项,选择要按顺序运行的命令和要并行运行的命令,定义要在何处部署应用程序,以及指定是否 要自动运行脚本或手动触发脚本。 

为了可视化处理过程,假设添加到配置文件中的所有脚本与在计算机的终端上运行的命令相同。

一旦你已经添加了.gitlab-ci.yml到仓库中,GitLab将检测到该文件,并使用名为GitLab Runner的工具运行你的脚本。该工具的操作与终端类似。

这些脚本被分组到jobs,它们共同组成一个pipeline。一个最简单的.gitlab-ci.yml文件可能是这样的:

before_script: 
  - apt-get install rubygems ruby-dev -y 

run-test: 
  script: 
    - ruby --version 6

before_script属性将在运行任何内容之前为你的应用安装依赖,一个名为run-test的job(作业)将打印当前系统的Ruby版本。二者共同构成了在每次推送到仓库的任何分支时都会被触发的pipeline(管道

### 关于 `.gitlab-ci.yml` 的详细介绍 `.gitlab-ci.yml` 是 GitLab 中用于定义持续集成 (CI) 和持续交付/部署 (CD) 流程的核心配置文件。以下是对其结构、选项以及使用的详细说明: #### 1. 基本概念 `.gitlab-ci.yml` 文件必须放置在项目的根目录下[^3],并由 GitLab Runner 解析执行。每当代码被推送到远程仓库时,GitLab CI/CD 系统会读取此文件的内容来构建和运行一系列预定义的任务。 #### 2. 主要组成部分 以下是一些常见的关键字及其作用: - **stages**: 定义流水线的不同阶段,例如 `build`, `test`, 和 `deploy`。这些阶段按顺序依次执行。 ```yaml stages: - build - test - deploy ``` - **jobs**: 每个 stage 下可以包含多个 jobs(任务)。每个 job 描述了一组操作,通常通过脚本来完成特定目标。 ```yaml job_name: stage: test script: - echo "Running tests..." ``` - **script**: 这是一个必需字段,表示实际执行的命令列表。 ```yaml my_job: script: - npm install - npm run test ``` - **image**: 设置容器镜像作为作业的基础环境,默认情况下使用 Docker 执行器。 ```yaml image: node:14-alpine job_with_image: script: - npm version ``` - **services**: 如果某些测试依赖外部服务(如数据库),可以通过 services 来声明它们。 ```yaml job_with_service: image: python:3.9 services: - mysql:latest script: - python manage.py migrate ``` - **artifacts**, **dependencies**, 和 **cache**: - **artifacts**: 可以保存当前 Job 输出的结果供后续 Jobs 使用。 ```yaml artifacts: paths: - dist/ ``` - **dependencies**: 明确指出哪些前序 Jobs 提供了必要的输入资源。 ```yaml second_job: dependencies: - first_job script: - ls dist/ ``` - **cache**: 缓存常用的数据集或安装包以加速重复构建过程。 ```yaml cache: key: "${CI_COMMIT_REF_SLUG}" paths: - vendor/ ``` #### 3. 实际案例分析 下面展示了一个简单的 `.gitlab-ci.yml` 示例,演示如何设置一个多阶段管道: ```yaml stages: - build - test - deploy variables: APP_ENV: production build_artifact: stage: build script: - mkdir build_output - cp index.html build_output/ artifacts: paths: - build_output/ run_tests: stage: test script: - pytest --junitxml=report.xml . artifacts: reports: junit: report.xml production_deploy: stage: deploy only: - main script: - scp -r build_output/* user@server:/var/www/html/ ``` 在此例子中,我们创建了三个主要阶段——`build`、`test` 和 `deploy`。其中还利用了变量 `${APP_ENV}` 自动化调整生产环境下的行为[^4]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值