什么是gitlab runner
我想我基本上错过了一些东西。我是CI/CD新手,正在尝试使用gitlab建立我的第一条管道 该项目是一个预先存在的PHP项目 我现在还不想把它清理干净,目前我已经把整个事情都推到了docker容器中,与google cloud的mysql数据库等进行对话运行良好,这在本地和远程google cloud测试VM上都是应该的。 我们的梦想是能够推进到开发分支,然后将dev banch合并到测试分支中,然后触发自动测试(简单的一部分),并使远程测试VM(托管在google cloud上)拉取最新的更改,从最新的docker文件重建映像(或从gitlab映像寄存器拉取最新映像)... 然后用最新的图像重建容器 我在玩gitlab的runner,但我不明白它的真正用途,尽管我浏览了几乎所有的在线内容。 我是否只是将其安装在谷歌云虚拟机中,然后从开发机器推送到gitlab。。repo将“通知”运行程序(在VM上运行)执行一系列脚本(可能包括最新更改的git-pull?) 因为我已经在本地将我的应用程序预打包到一个容器中(并将图像推送到图像注册表),我需要使用docker作为runner上的执行器吗?或者我可以只使用shell和shell中的命令吗 我错过了什么 TLDR和额外: 问题:什么是gitlab runner,gitlab,devops,gitlab-ci-runner,Gitlab,Devops,Gitlab Ci Runner,我想我基本上错过了一些东西。我是CI/CD新手,正在尝试使用gitlab建立我的第一条管道 该项目是一个预先存在的PHP项目 我现在还不想把它清理干净,目前我已经把整个事情都推到了docker容器中,与google cloud的mysql数据库等进行对话运行良好,这在本地和远程google cloud测试VM上都是应该的。 我们的梦想是能够推进到开发分支,然后将dev banch合并到测试分支中,然后触发自动测试(简单的一部分),并使远程测试VM(托管在google cloud上)拉取最新的更改
它关心在哪个目录中运行吗?
如果它不关心运行哪个目录, 它在哪里执行脚本命令?在根目录下
.gitlab ci.yml
文件。.gitlab ci.yml
定义了您的ci/CD管道有哪些阶段以及在每个阶段中要做什么。这通常包括一个构建、测试、部署阶段。在每个阶段中,您可以定义多个作业。例如,在构建阶段,您可以在debian、centos上构建3个作业和windows(在GitLab glossarybuild:debian
,build:centos
,build:windows
)中)。GitLab运行程序克隆项目,读取GitLab-ci.yaml文件并按照指示执行操作。因此,GitLab运行程序基本上是一个执行某些指示任务的Golang
进程
它将安装在哪里
您可以在此处列出的所需环境中安装运行程序。
或
您可以使用已经安装在GitLab基础设施上的共享运行程序
它关心它在哪个目录中运行吗
是的。运行者执行的每个任务都与中定义的CI\u PROJECT\u DIR
相关。但您可以更改此行为
它在哪里执行脚本命令?在根目录下
我是否需要将executor设置为docker?我是否应该将其设置为shell、提取图像并构建它
运行程序可以有多个执行器,如docker、shell、virtualbox等,但docker是最常见的执行器。如果使用docker作为执行器,则可以从docker hub或配置的注册表中提取任何映像,并可以使用docker映像加载stff。在docker环境中,通常以根用户身份运行它们。
查看gitlab访问日志,runner不断轮询服务器我认为这里的要点是:当有人将提交或合并提交到主分支时,runner如何知道它运行管道?gitlab如何触发runner?或者runner是否每小时调用api到gitlab进行检查?每次推送、合并和拉取请求都会发出事件。Gitlab监听并启动runner。这几乎是所有CI/CD工具所做的事情,比如Github Action、Jenkins和其他工具。