前言
在软件开发的道路上,持续集成和持续部署是不可或缺的一环,就像是您的项目的生命力源泉。而gitlab runner,则是这条流水线上的得力助手,为您的代码提供快速、可靠的构建和部署。
今天,就让我们一起来探索如何在centos 7上搭建gitlab runner,释放持续集成的魔力吧!
安装gitlab runner
安装前提
gitlab runner 15.0引入了注册 api 请求格式的更改。它阻止 gitlab runner 与低于 14.8 的 gitlab 版本进行通信。
您必须使用适合 gitlab 版本的 runner 版本,或者升级 gitlab 应用程序。
如果直接使用yum install git
会出现git版本为1.8,太老了,不适用
#安装源git yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm #安装git yum install git #更新git yum update git
1. 下载并安装 gitlab runner
添加 gitlab runner 的官方仓库:
curl -l https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
安装 gitlab runner:
# 这里如果很慢可以在本机下载再上传一下,https://s3.dualstack.us-east-1.amazonaws.com/gitlab-runner-downloads/latest/index.html sudo yum install gitlab-runner
2. 注册到 gitlab 服务器
- 登录到你的 gitlab 服务器。
- 转到你项目的设置页面。
- 在左侧导航栏中选择 ci/cd -> runners 设置。
- 复制注册 runner 的 url 和 token。
- 回到你的 runner 主机上,在终端中执行注册命令,使用提供的 url 和 token:
gitlab-runner register --url --token
3.配置runner
执行gitlab-runner register --url --token
enter the gitlab instance url (for example, https://gitlab.com/):
填写你的gitlab地址,如果也是使用的官网就直接填https://gitlab.com/
enter a name for the runner. this is stored only in the local config.toml file:
在这里,你需要为 gitlab runner 指定一个名称。这个名称仅会存储在本地的配置文件 config.toml
中,用于识别该 runner。
你可以根据需要选择一个描述性的名称,以便于识别和管理。
例如,你可以使用项目名称、环境名称或者其他有意义的标识作为 runner 的名称。
enter an executor: instance, shell, ssh, virtualbox, docker, kubernetes, docker-autoscaler, custom, parallels, docker-windows, docker+machine:
在这里,你需要选择一个执行器(executor),用于指定 gitlab runner 在执行 ci/cd 任务时的运行环境。
以下是常见的执行器选项及其简要说明:
根据你的需求和环境选择一个合适的执行器,并输入其名称。
- shell: 在 runner 主机上使用 shell 执行任务。
- docker: 使用 docker 容器来运行任务。
- docker+machine: 使用 docker machine 在虚拟机中运行 docker 容器。
- docker-windows: 在 windows 主机上使用 docker 运行任务。
- ssh: 通过 ssh 连接到远程主机并执行任务。
- kubernetes: 在 kubernetes 集群中运行任务。
- virtualbox: 在 virtualbox 虚拟机中运行任务。
- custom: 自定义执行器,你可以自己编写脚本来定义任务的执行方式。
4. 验证 runner 是否注册成功
- 回到 gitlab 服务器的项目设置页面。
- 在 ci/cd -> runners 部分,你应该能够看到刚刚注册的 runner。
- 确保 runner 的状态为“活跃”。
5. 测试 runner 是否正常工作
- 在你的项目中创建一个简单的 ci/cd 配置文件(如
.gitlab-ci.yml
)。 - 将配置文件提交到你的项目中。
- 在 gitlab 服务器的项目页面上触发一个 pipeline,观察任务是否由 runner 正常执行。
通过以上步骤,你应该能够成功在 centos 7 上搭建和注册 gitlab runner,并确保它能够正常工作。如果遇到任何问题,请查阅官方文档或在社区寻求帮助。
配置runner执行器
在配置runner执行器时,需要指定执行器的类型和相关参数,以确保任务能够按照预期顺利执行。以下是配置runner执行器的一般步骤:
1.选择执行器类型:根据实际需求选择适合的执行器类型,常见的包括:
- shell:在本地或远程服务器上执行脚本命令。
- docker:在docker容器中执行任务,可用于构建和运行应用程序。
- kubernetes:在kubernetes集群中执行任务,适用于复杂的容器化环境。
- virtualbox:在虚拟机中执行任务,可用于本地开发和测试。
- ssh:通过ssh协议连接到远程主机并执行任务。
- custom:自定义执行器,根据需要编写自己的执行器逻辑。
2.设置执行器参数:根据选定的执行器类型,设置相关参数,如并发度、超时时间等。
- 并发度:指定runner同时执行的任务数量,可以根据服务器性能和任务负载进行调整。
- 超时时间:设置任务执行的最大时间,超过该时间将视为超时并中止任务。
3.配置runner:编辑.gitlab-ci.yml文件,添加或修改相应的配置项,指定执行器类型和参数。
示例配置文件如下所示:
stages: - build - test build_job: stage: build script: - npm install - npm run build tags: - docker variables: docker_driver: overlay2 artifacts: paths: - public/ test_job: stage: test script: - npm test tags: - docker variables: docker_driver: overlay2 allow_failure: true
在上面的示例中,我们使用了docker执行器,并设置了相关参数,如标签(tags)、docker驱动器(docker_driver)等。这样配置的runner将会在docker容器中执行构建和测试任务。
根据实际情况,可以根据需要添加其他执行器类型和参数,以满足项目的具体要求。
高级配置
在配置runner执行器的高级配置和扩展时,可以进一步优化ci/cd流程,并集成各种第三方工具和服务,以满足更复杂的需求。以下是一些高级配置和扩展的示例:
1.缓存和共享卷:
- 缓存:通过设置缓存,可以在不同作业之间共享和重用依赖项,加快构建速度。可以缓存编译依赖项、依赖库、下载的软件包等。
- 共享卷:共享卷允许在不同作业之间共享文件或目录,便于数据传递和共享。可以将构建产生的文件、测试报告等存储到共享卷中,并在后续作业中使用。
2.集成第三方工具和服务:
- docker:可以使用docker容器作为执行器,实现环境隔离和一致性。还可以利用docker镜像来构建、测试和部署应用程序。
- aws、azure等云服务:可以利用云服务提供的资源来执行ci/cd作业,例如在aws上运行测试套件、部署到azure容器实例等。
- 第三方ci/cd工具:如jenkins、travis ci等,可以与gitlab runner集成,实现更复杂的ci/cd流程。
3.定制特定环境下的作业:
- java、python、node.js等:针对不同的编程语言和框架,可以定制特定的ci/cd作业,包括编译、测试、打包、部署等。
- 安全检查和代码分析:集成静态代码分析工具、安全漏洞扫描工具等,对代码进行质量检查和安全扫描。
示例配置文件如下所示:
stages: - build - test build_job: stage: build script: - npm install - npm run build cache: paths: - node_modules/ artifacts: paths: - dist/ test_job: stage: test script: - npm test cache: key: "$ci_commit_ref_name" paths: - node_modules/ artifacts: paths: - test_reports/ dependencies: - build_job
在上面的示例中,我们配置了缓存(cache)和共享卷(artifacts),以及与其他作业的依赖关系(dependencies)。
这样可以加速构建过程,同时实现测试报告等数据的共享和传递。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论