Gitlab CI/CD使用说明 (iOS/swift)

CI/CD

CI 持续集成(Continuous Integration)

持续集成(CI)帮助开发人员更加频繁地(有时甚至每天)将代码更改合并到开发分支或“主干”中。一旦开发人员对应用所做的更改被合并,系统就会通过自动构建应用并运行不同级别的自动化测试(通常是单元测试和集成测试)来验证这些更改,确保这些更改没有对应用造成破坏。这意味着测试内容涵盖了从类和函数到构成整个应用的不同模块。如果自动化测试发现新代码和现有代码之间存在冲突,CI 可以更加轻松地快速修复这些错误。

CD 持续交付(Continuous Delivery)

完成 CI 中构建及单元测试和集成测试的自动化流程后,持续交付可自动将已验证的代码发布到存储库。为了实现高效的持续交付流程,务必要确保 CI 已内置于开发管道。持续交付的目标是拥有一个可随时部署到生产环境的代码库。

在持续交付中,每个阶段(从代码更改的合并,到生产就绪型构建版本的交付)都涉及测试自动化和代码发布自动化。在流程结束时,运维团队可以快速、轻松地将应用部署到生产环境中。

CD 持续部署(Continuous Deployment)

对于一个成熟的 CI/CD 管道来说,最后的阶段是持续部署。作为持续交付——自动将生产就绪型构建版本发布到代码存储库——的延伸,持续部署可以自动将应用发布到生产环境。由于在生产之前的管道阶段没有手动门控,因此持续部署在很大程度上都得依赖精心设计的测试自动化。

实际上,持续部署意味着开发人员对应用的更改在编写后的几分钟内就能生效(假设它通过了自动化测试)。这更加便于持续接收和整合用户反馈。总而言之,所有这些 CI/CD 的关联步骤都有助于降低应用的部署风险,因此更便于以小件的方式(而非一次性)发布对应用的更改。不过,由于还需要编写自动化测试以适应 CI/CD 管道中的各种测试和发布阶段,因此前期投资还是会很大。

GitLab CI / CD 使用

使用GitLab CI / CD,你只需要在Git存储库的代码库中根目录添加.gitlab-ci.yml文件,并在文件中指定构建,测试和部署。

.gitlab-ci.yml文件告诉Runner。一个管道通常分为三个阶段:

  • build (编译)
  • test(测试)
  • deploy(部署)

对应文件写入

stages:
# 编译
  - build
# 测试
  - test
# 部署
  - deploy

执行任务 script

script是工作所需的唯一必需关键字。这是由Runner者执行的shell脚本。例如:

job:
  script: "bundle exec rspec"
    - uname -a # 执行脚本
    - uname -a # 可以添加多行

stage

stage是按工作定义的,并依赖于stages全局定义的。它允许将作业分为不同的阶段,并且相同的作业 stage可以并行执行(取决于特定条件)。例如:

stages:
  - build
  - test
  - deploy

job 0:
  stage: .pre
  script: make something useful before build stage

job 1:
  stage: build
  script: make build dependencies

job 2:
  stage: build
  script: make build artifacts

job 3:
  stage: test
  script: make test

job 4:
  stage: deploy
  script: make deploy

job 5:
  stage: .post
  script: make something useful at the end of pipeline

tags 标签

tags是标记当前脚本执行的标志 对应Runner tags 去执行当前脚本 如下

  stage: .pre
  tags:
    - ios
  script:
    - swiftlint lint

最后这是完整的一份事例

stages:
  - build
  - test
  - deploy

stage_pre:
# 任务之前所执行的操作
# 检查代码格式
  stage: .pre
  tags:
    - ios
  script:
    - swiftlint lint

stage_build:
# 编译代码 检查错误
  stage: build
  tags:
    - ios
  script:
    - pod install
    - 'xcodebuild build  -workspace FBB-Shop-iOS.xcworkspace -scheme FBB-Shop-iOS -destination "platform=iOS Simulator,name=iPhone 11"| tee xcodebuild.log | xcpretty -s'

stage_test:
# 执行单元测试
  stage: test
  tags:
    - ios
  script:
    - pod install
    - 'xcodebuild test  -workspace FBB-Shop-iOS.xcworkspace -scheme FBB-Shop-iOS -destination "platform=iOS Simulator,name=iPhone 11"| tee xcodebuild.log | xcpretty -s'

stage_deploy:
# 部署到蒲公英
  stage: deploy
  tags:
    - ios
  script:
    - pod install
    - fastlane beta
  rules:
  - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

阿振

谦虚地说着“献丑”,却往往献出了最珍贵的东西。你永远不知道,这句口是心非,需要多么大的努力!

相关推荐

GitLab Runner

GitLab Runner 运行gitlab CI/CD容器 分布式。可以运行在本地可以运行在服务端。可以是公共的也可以是私有的 安装GitLa ...

StarUML

UML简介 Unified Modeling Language 有成为统一建模语言,有OMG对象管理组织维护。OMG是一个国际化、开放成员的、非盈 ...

Linux

开源操作系统 Linux 是一种自由和开放源码的类UNIX 操作系统。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发 ...