# 为GitLab项目配置CI/CD持续集成
## 前提
1.已经安装好了Gitlab服务
2.准备一台linux服务器(示例以CentOS7)
3.这里以安装配置Gitlab-Runner,并且为Gitlab上某一项目配置Runner为例
4.安装的Runner以基于Linux为例,对应的Executor以docker为例
相关说明:Gitlab的CI/CD需要在项目下增加一个.gitlab-ci.yml文件,而该文件中定义的任务(job)是由Gitlab-Runner来调度的,
而真正执行任务是注册Gitlab-Runner时指定的Executor。可以根据项目实际情况,注册多个Gitlab-Runner对应多个Executor,每一个Executor都是独立环境。
## 准备工作
由于安装过程中,会使用到sudo命令,因此确保sudo命令可以执行。
编辑/etc/sudoers文件,找到
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
修改为:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
## 开始安装GitLab-Runner (Linux,root用户模式下)
下载gitlab-runner 二进制安装文件
# Linux x86-64
sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
# Linux x86
sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386
# Linux arm
sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm
给gitlab-runner 赋予权限
sudo chmod +x /usr/local/bin/gitlab-runner
官方教程会在这里创建一个gitlab-runner用户,用于后面job的执行,但由于权限问题,导致后续deploy会出现不少问题,这里暂时用root用户
sudo gitlab-runner install --user=root --working-directory=/app/gitlab-runner
sudo gitlab-runner start
至此,gitlab-runner 已经安装成功,可执行 gitlab-runner status 查看运行状态
## 注册Gitlab-Runner
首先,打开你的GitLab-Runner,找到你要配置Gitlab CI/CD 持续集成的项目,如:gitlab-demo
依次打开: gitlab-demo -> setting -> CI/CD -> Runners -> Set up a specific Runner manually
找到以下内容:URL ,Token
回到linux终端(root模式下),执行:
# gitlab-runner register
Please enter the gitlab-ci coordinator URL:
# 输入上面步骤找到的URL,示例:http://gitlab.alibaba-inc.com/ci
Please enter the gitlab-ci token for this runner:
# 输入上面步骤找到的Token
Please enter the gitlab-ci description for this runner:
# 为该gitlab runner自定义一个名称,示例:gitlab-runner-docker-dev (表示该runner是基于docker的executer的dev环境)
Please enter the gitlab-ci tags for this runner (comma separated):
# 为该gitlab runner定义一组tag,以逗号隔开,表示只有匹配到这些tag,才会用改runner执行job。示例:docker-dev
Whether to run untagged builds [true/false]:
# true
Please enter the executor: docker, parallels, shell, kubernetes, docker-ssh, ssh, virtualbox, docker+machine, docker-ssh+machine:
# 为该runner指定一个executor,由于这里用docker作为示例,输入:docker
Please enter the default Docker image (e.g. ruby:2.1):
# 输入默认的docker镜像,根据项目需要自定义,官方默认为alpine:latest,这里我们的项目是基于maven的java项目,所以输入:maven:3-jdk-8
到这里,Gitlab-Runner已注册完成,但需要重启一下,输入:
gitlab-runner restart
这时,可以在项目中看到该runner已经配置好,且处于运行中(绿色图标)
依次打开: gitlab-demo -> setting -> CI/CD -> Runners -> Set up a specific Runner manually 下面可以看到上面配置的Runner,已在运行中。
## 配置gitlab-runner环境
由于Gitlab-Runner的Executor在执行每一个job时,是在独立环境中执行的,而我们实际项目中,经常需要配置多个执行job,或者项目是由多个maven项目构成的。
这里就会出现需要共享maven的.m2仓库问题,可以通过为Runner配置映射关系,指定共享目录即可。
编辑GitLab-Runner的配置文件:
vi /etc/gitlab-runner/config.toml
找到上面配置的Runner (gitlab-runner-docker-dev),在配置项volumes添加:"/root/.m2:/root/.m2"和pull_policy = "if-not-present" 修改后如下:
[[runners]]
name = "gitlab-runner-docker-dev"
url = "https://gitlab.cedarhd.com"
token = "10c11056ca68897428370c4e992051"
executor = "docker"
[runners.docker]
tls_verify = false
image = "maven:3-jdk-8"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache","/home/gitlab-runner-new/.m2:/root/.m2"]
pull_policy = "if-not-present"
shm_size = 0
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
Gitlab-Runner配置完成,重启:
gitlab-runner restart
至此,基于Linux配置GitLab-Runner已全部完成。
##基于Docker配置GitLab-Runner
默认环境已安装了docker
拉取gitlab-runner镜像
sudo docker pull gitlab/gitlab-runner:latest
启动容器:
sudo docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
注册Gitlab-runner,通过以下命令进入注册:
sudo docker exec -it gitlab-runner gitlab-ci-multi-runner register
注册过程,跟上面linux一致。
分享到:
相关推荐
还是那句话,CI/CD实质是将我们手动集成、拷贝部署的方式脚本化,远程部署的重要姿势是要求免密操控。 要让Gitlab Runner部署到远程机器,远程机器必须信任gitlab runner账户。 先执行su gitlab-runner切换到gitlab...
gitlab持续集成部署(CI/CD),使用docker配置gitlab-runner创建gitlab-runner容器:sudo docker run -d
基于Gitlab CI/CD功能实现自动化部署springboot项目 说明: 这是一个测试java springboot项目自动化部署的demo 基于Gitlab CD/CD 自动化集成部署功能,并使用harbor镜像仓库作为镜像存储,最后在k8s集群中部署项目 ...
持续集成包含自动编译、自动化的代码审查、自动部署和自动化测试这些步骤。...越来越多的公司开始引入持续集成实践,并且为之组建专门的团队(很多公司的持续集成团队成员最初都是来源于测试或者质量管理团队)。
为每个项目使用JavaScript或TypeScript创建动态的GitLab CI管道。 重用和继承指令,避免重复代码! 持续集成(CI)和持续部署(CD)是软件开发中流程自动化的绝佳概念。 我们喜欢GitLab CI,因为它在具有强大配置...
该存储库基于create-react-app,仅用于测试gitlab ci和cd
GitLab提供了强大的功能,如代码审查、问题跟踪、CI/CD、容器注册表、Wiki和持续集成等。 以下是GitLab的一些主要功能: 1. 代码管理 – GitLab是一个Git仓库管理工具。您可以在GitLab中创建和管理Git仓库,将代码...
给出了TC397 Tasking CMake Gitlab集成使工程可以命令行编译 CI CD的最小工程
目标在GitHub和GitLab CI运行程序之间建立干净的桥梁提供其他开源CI服务的替代方法充分利用GitLab CI运行程序这一伟大的开源项目为GitHub用户提供与GitLab相同的顶级CI / CD,而无需切换或使用GitLab或为劣质服务...
GitLab CI/CD是一个内置在GitLab中的强大工具,它允许您将所有的持续方法(持续集成、交付和部署)应用到您的软件中,而不需要第三方应用程序或集成。 本课程主要讲解了以下内容: ?1. GitLab CICD 的介绍以及 GitLab ...
对于Docker主流的应用场景:持续集成和持续部署(CI/CD)大家也许并不陌生。这篇文章从独特的视角阐述了如何利用各种云平台构建属于自己的CI/CD容器,笔者还自己扩展了Gitlab CI引擎,对CI感兴趣的同学对这个文章应该...
在gitlab CI / CD管道中使用Laravel Dusk进行浏览器测试。... 在gitlab上找到更多Gitlab持续集成CI ? 在gitlab-runner上找到更多信息Gitlab连续部署| 交付CD即将推出... 如果此软件包对您有所帮助,则可
用于Gitlab的Venafi机器身份保护集成该插件将与基于Gitlab的CI / CD流程集成。 目录使用概述您必须已经可以访问Venafi TLS Protect(Venafi Trust Protection Platform:trade_mark:的一部分)或Venafi ...
在互联网应用快速更新迭代的大背景下,传统的人工手动或简单脚本已经不能适应此变化,此时Devops为我们提供了良好的解决方案,应用好CI/CD可以大大的方便我们的日常工作,自动化快速的持续集成/持续交付为我们带来了...
HTTP CI部署程序一个非常简单的基于HTTP的持续集成服务部署解决方案。 最初设计用于GitLab的CI / CD的SSH和SCP的安全,简单的替代方案。用法一般暴露了一个通配符端点: /deploy/*如果要将localfile.zip部署到...
GitLab 重大更新版本 10.5 已正式发布,该版本值得关注的新特性包括:与 Let's Encrypt 的集成、Gemnasium 依赖检查和扩展 CI/CD 的管理功能。
GitLab 是由 GitLab Inc.开发,一款基于 Git 的完全集成的软件开发平台(fully integrated software development platform)。 另外,GitLab 且具有wiki以及在线编辑、issue跟踪功能、CI/CD 等功能。
CI/CD 管道功能,使用由 GitLab Inc 开发的开源许可证。 - 工作更轻松。 工作更快。 Mercurial 是一个免费的分布式源代码控制管理工具。 - 无痛的自托管 Git 服务。 - Gitea - Git 和一杯茶。 Gogs 的叉子。 持续...
Configuration 和 Scheme 来实现 iOS 工程的多环境配置使用 Flavor 来实现 Android 工程的多环境配置编写原生模块,导出多环境配置到 React Native 代码使用 GitLab CI / CD 来实现持续集成与持续部署使用 cocoapods...