在这一系列文章中,我想向大家介绍并探讨使用 InterSystems 技术和 GitLab 进行软件开发可以采用的几种方式。 我将介绍以下主题:
- Git 101
- Git 流程(开发流程)
- GitLab 安装
- GitLab 工作流
- 持续交付
- GitLab 安装和配置
- GitLab CI/CD
在第一篇文章中,我们介绍了 Git 基础知识、深度理解 Git 概念对现代软件开发至关重要的原因,以及如何使用 Git 开发软件。
在第二篇文章中,我们介绍了 GitLab 工作流 – 一个完整的软件生命周期流程,并介绍了持续交付。
在这篇文章中,我们将探讨:
- GitLab 安装和配置
- 将环境连接到 GitLab
GitLab 安装
我们将在本地安装 GitLab。 可以通过多种方式安装 GitLab – 通过源代码、软件包安装,以及在容器中安装。 我不会在这里详细介绍所有步骤,请参阅相关指南。 但仍需要注意几点:
前提条件:
- 单独的服务器 – 由于 GitLab 属于 Web 应用程序,并且需要占用大量资源,最好在单独的服务器上运行
- Linux
- (可选,但强烈建议采用)域 – 运行页面和保护整个安装时需要
配置
首先,您可能需要发送包含通知的电子邮件。
接下来,建议安装 Pages。 正如我们在上一篇文章中所讨论的 – 可以将脚本中的工件上传到 GitLab。 用户可以下载这些工件,但能够直接在浏览器中打开工件将非常有用,为此我们需要使用页面。
需要使用页面的原因:
- 显示一些生成的 wiki 或项目的静态页面
- 显示 html 工件
- 可对页面执行的其他操作
由于 html 页面会在加载时重定向,可以使用 html 页面将用户重定向到我们需要的位置。 例如,下列代码生成的 html 页面会将用户重定向到上次执行的单元测试(生成 html 时):
ClassMethod writeTestHTML() { set text = ##class(%Dictionary.XDataDefinition).IDKEYOpen($classname(), "html").Data.Read() set text = $replace(text, "!!!", ..getURL()) set file = ##class(%Stream.FileCharacter).%New() set name = "tests.html" do file.LinkToFile(name) do file.Write(text) quit file.%Save() } ClassMethod getURL() { set url = "http://host:57772" set url = url _ $system.CSP.GetDefaultApp("%SYS") set url = url_"/%25UnitTest.Portal.Indices.cls?Index="_ $g(^UnitTest.Result, 1) _ "&$NAMESPACE=" _ $zconvert($namespace,"O","URL") quit url } XData html { <html lang="en-US"> <head> <meta charset="UTF-8"/> <meta http-equiv="refresh" content="0; url=!!!"/> <script type="text/javascript">window.location.href = "!!!"</script> </head> <body> If you are not redirected automatically, follow this <a href='!!!'>link to tests</a>. </body> </html> }
我使用页面时遇到了错误(浏览工件时出现 502 错误) - 解决方法。
将环境连接到 GitLab
要运行 CD 脚本,需要使用环境,即配置好的用于运行应用程序的服务器。 假设有一个安装了 InterSystems 产品(例如 InterSystems IRIS,但也可以使用 Caché 和 Ensemble)的 Linux 服务器,可以通过以下步骤将环境连接到 GitLab:
- 安装 GitLab 运行程序
- 在 GitLab 中注册运行程序
- 允许运行程序调用 InterSystems IRIS
有关安装 GitLab 运行程序的
重要说明 - 安装 GitLab 运行程序后请勿克隆服务器。否则,结果将不可预测,并且大多数情况下的结果都不尽如人意。
在 GitLab 中注册运行程序
运行初始程序后:
sudo gitlab-runner register
您会看到多个提示,大部分步骤都非常简单,但有几步比较复杂:
请输入用于此运行程序的 gitlab-ci 令牌
有多个令牌可用:
- 一个令牌用于整个系统(在管理设置中提供)
- 一个令牌用于每个项目(在项目设置中提供)
由于您连接运行程序是为特定项目运行 CD,需要指定此项目的令牌。
请输入此运行程序的 gitlab-ci 标签(以逗号分隔):
在 CD 配置中,您可以筛选针对具体标签运行的脚本。 因此,在最简单的情况下,请指定一个将作为环境名称的标签。
请输入执行器:ssh、docker+machine、docker-ssh+machine、kubernetes、docker、parallels、virtualbox、docker-ssh、shell:
docker
如果您使用的是没有 docker 的普通服务器,请选择 shell。我们将在后续部分讨论 docker。
允许运行程序调用 InterSystems IRIS
将运行程序连接到 GitLab 后,我们需要允许运行程序与 InterSystems IRIS 交互,为此:
- gitlab-runner 用户应能够调用会话。 为此,请将该用户添加到 cacheusr 组:
- usermod -a -G cacheusr gitlab-runner
- 在 InterSystems IRIS 中创建 gitlab-runner 用户,并为其指定相应角色以执行 CD 任务(写入到数据库等)
- 允许进行操作系统级身份验证
对于 2 和 3,可以采用其他方式,例如传递用户名/密码,但我认为操作系统身份验证是更好的选择。
结论
在本部分中:
- 我们安装了 GitLab
- 将环境连接到 GitLab
链接
后续内容
在下一部分中,我们将编写持续交付配置。