必备知识

  • 了解 CI/CD 本身
  • GitLab的基本使用(开户、创建仓库等)
  • Git 基础知识

什么是 GitLab CI/CD

它是 GitLab 中内置的 CI/CD 工具。
优点是无需引入第三方工具或库即可使用。

  • 适用于 Saas 和本地
  • 可读性高,因为管道处理可以在 yml 文件中定义
  • 容器可以用作执行环境

等等

与其他 CI 工具的比较

*货币成本视使用情况而定,此处不再赘述。

工具 介绍费用 如何定义工作
詹金斯 高的
(因为你需要准备一个服务器来运行Jenkins)
Jenkinsfile(你自己的 UDL)
圈子CI 期间~
(不需要服务器,但需要与 Github 配合使用)
yml
Github 操作 低的
yml
GitLab CI/CD 低的
yml

我认为引入成本将是 Jenkins > CircleCI > GithubActions = GitLabCI/CD。
另外,与其他工具不同,Jenkins 用自己的符号定义了流水线处理,因此学习成本略高。

考虑到引入成本和学习成本,截至 2022 年,似乎没有理由采用 Jenkins 作为 CI 工具。
此外,CircleCI 需要时间与 Github 和 GibLab 合作。
(两者都只是初始成本,所以可能在可接受的范围内……)

作为 CI 工具,GitHubActions 和 GitLabCI/CD 被认为是强大的。
如果你使用 Github,你将使用前者,如果你使用 GitLab,你将使用后者。
(当我简单地谈到两家公司时,并没有太大区别。没有“我从 GitHub 切换到 GitLab,因为 GitLabCI/CD 更好”之类的东西。
似乎没有必要考虑。 (反之亦然))

亚搏体育app亚军

需要一个名为 GitLab Runner 的执行环境来执行管道处理。

可以在自己的服务器上安装Runner,但是这次GitLab已经准备好了
使用环境。即使您不更改设置也没有问题。

.gitlab-ci.yml

在存储库的根目录中创建一个名为 .gitlab-ci.yml 的文件来定义您的作业。
如果您在根目录之外创建它,它将不会被读取。

另外,请注意 .gitlab-ci.yml 很容易变得臃肿,因为在一个存储库中只能创建一个 .gitlab-ci.yml。
(解决方案将单独介绍。)

实际运行(最低配置)

现在让我们创建实际的作业。

推送后运行作业

默认情况下,该作业将在您推送时运行。

.gitlab-ci.yml

# ジョブの名前
build-job:
 # ジョブのステージ
  stage: build
  # 実行する処理をscript句に配列形式で定義
  script:
    - echo "Hello, $GITLAB_USER_LOGIN!"

test-job1:
  stage: test
  script:
    - echo "This job tests something"

test-job2:
  stage: test
  # 複数行の処理を定義することも可能
  script:
    - echo "This job tests something, but takes more time than test-job1."
    - echo "After the echo commands complete, it runs the sleep command for 20 seconds"
    - echo "which simulates a test that runs 20 seconds longer than test-job1"
    - sleep 20

让我们定义一个作业并将其推送到远程存储库。

您可以从 GitLab 的 CI/CD > Pipelines 查看管道的执行结果。

GitLabCI/CD入門 ~とりあえず動かす

你已经成功地做到了。

提交合并请求时运行作业

接下来,将作业更改为在创建合并请求(Github 中的拉取请求)以及推送时运行。
什么都可以执行,所以这次我们改一下test-job1。

.gitlab-ci.yml

# 変更箇所のみ記載
test-job1:
  stage: test
  script:
    - echo "This job tests something"
  rules:
    - if: $CI_PIPELINE_SOURCE ==  'merge_request_event'

您可以使用规则语法来定义执行作业的条件。
这次它将在创建合并请求时执行。

合并后运行作业

我希望作业在上次更改合并到主分支时运行。

.gitlab-ci.yml

test-job2:
  stage: test
  script:
    - echo "This job tests something, but takes more time than test-job1."
    - echo "After the echo commands complete, it runs the sleep command for 20 seconds"
    - echo "which simulates a test that runs 20 seconds longer than test-job1"
    - sleep 20
  # mainブランチにコミットされた時にジョブを実行する
  rules:
    - if: $CI_COMMIT_BRANCH == 'main'

推送您的更改并创建合并请求⇒ 合并。
您可以看到 test-job2 正在运行。

GitLabCI/CD入門 ~とりあえず動かす

我能够让管道正常工作。
从下一次开始,我们将组织高级工作创建的语法和程序。

参考

圈子CI
了解 GitLab CI/CD 的所有超级重要规则
GitLab 文档


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308632016.html

相关文章:

  • 2021-12-24
  • 2022-12-23
  • 2022-01-05
  • 2021-05-22
  • 2022-02-21
  • 2021-12-22
  • 2022-02-20
  • 2022-02-24
猜你喜欢
  • 2021-10-20
  • 2021-10-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-11
  • 2021-08-30
相关资源
相似解决方案