GitLab、GitHub、Gitee 都是市面上常见的与代码托管有关的平台。2008 年上线GitHub,十年后,也就是2018年被微软收购;2011年GitLab上线;Gitee由开源中国2013年推出。
GitLab:是一个一体化的 DevOps 平台。提供覆盖软件全开发生命周期的管理功能。提高企业 DevOps 能力。
GitHub:是一个开发者平台。目前是开源项目的主要集散地。
Gitee:是一个代码托管平台。
GitLab 是采取“核心开放”的开源模式(即核心代码开源,企业版代码源码可见),GitLab支持私有化部署,用户可以在各自的官方下载页面下载安装包,安装部署即可完成私有化部署。这也是GitLab 受用户欢迎的重要原因之一。
GitLab分为社区版(CE)和企业版(EE),本文主要以社区版进行讲解(企业版不免费,懂得都懂)。
我们可以通过两种方式去下载GitLab:
我们可以通过先下载到本地的方式再上传到服务器或者通过wget
命令下载。
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.4.2-ce.0.el7.x86_64.rpm
下载完成后,开始安装(RPM是RedHat Package Manager(RedHat软件包管理工具)用于管理Linux下软件包的软件,RPM 有五种操作模式,分别为:安装、卸载、升级、查询和验证)。
使用命令rpm -ivh *.rpm
进行安装,-ivh
命令表示显示安装的信息和进度。
rpm -ivh gitlab-ce-15.4.0-ce.0.el7.x86_64.rpm
你可能会遇到缺少依赖的错误,就像这样。
我们使用yum
命令去安装这两个所需的依赖。
yum install openssh-server policycoreutils-python -y
然后我们再执行安装命令
rpm -ivh gitlab-ce-15.4.0-ce.0.el7.x86_64.rpm
当出现如下标志时,说明安装完成。
我们可以再/etc/gitlab
目录下看到配置文件。
接来下我们修改配置文件中的访问地址。
vim gitlab.rb
再文件中找到external_url所在位置,将external_url 'http://gitlab.example.com'
修改为自己的服务器IP地址。
保存后,执行gitlab-ctl reconfigure
命令(重新加载配置文件),第一次执行此命令等待时间较久,正在进行初始化操作,当看到gitlab Reconfigured表示成功。
如果你的内存只有2G(4GB RAM 是所需的最小内存大小,最多支持 500 个用户;8GB 内存支持多达 1000 个用户),你就会发现,你的命令会变得特别的卡顿,通过命令free -m
查看内存大小,发现可用运行内存非常少。
如果你想解决这个问题,先查看gitlab的进程有哪些,执行ps -aux|grep gitlab
。
然后把第一个进程杀掉,比如图片中进程号为18239,执行kill -9 18239
命令,杀掉进程,然后赶快执行(如果不快点执行可能会重新开启这个进程)gitlab停止服务命令gitlab-ctl stop
。
停止后,再次查看可用运行内存,恢复正常。
将/etc/gitlab/
目录下gitlab.rb
文件数值修改
在可用 RAM 小于 4GB 的内存受限环境中,请考虑禁用 Puma 群集模式。与默认设置的群集模式不同,只有一个 Puma 进程将为应用程序提供服务。
puma['worker_processes'] = 0 #工作进程
更改内存限制设置,内存使用量会随着时间的推移而增加。
puma['per_worker_max_memory_mb'] = 1024
如果你觉得数据库缓存太大,可以设置小点。
postgresql['shared_buffers'] = "60MB" #数据库缓存
然后重新加载配置文件。
gitlab-ctl reconfigure
重启服务。
gitlab-ctl restart
其它常用命令
#重新加载配置
gitlab-ctl reconfigure
#启动
gitlab-ctl start
#关闭
gitlab-ctl stop
#重启
gitlab-ctl restart
#日志
gitlab-ctl tail
在浏览器输入,配置external_url的地址。
如果足够幸运的话,你也会报502的错误。
根据网上给的答案,要么端口被占用,要么就是内存不够。服务器也没几个应用,那就是内存的原因。我们使用swap分区解决这个问题。
Swap分区在系统的物理内存不够用的时候,把硬盘内存中的一部分空间释放出来,以供当前运行的程序使用。
cat /proc/swaps
可以看到没有分区。
dd if=/dev/zero of=/data/swap bs=1M count=4096
简单介绍下每个语句的含义:
if=/dev/zero
:表示指定源文件of=/data/swap
:表示指定目的文件,可以自己去设定目标文件路径。bs=1M
:同时设置读入/写出的“块”大小。count=4096
:表示拷贝多少个“块”bs * count
为拷贝的文件大小,即Swap分区大小。
mkswap /data/swap
swapon /data/swap
echo "/data/swap swap swap defaults 0 0" >> /etc/fstab
然后我们cat /proc/swaps
命令或者free
命令查看分区是否启用。
初始用户名是root,初始密码在/etc/gitlab/initial_root_password
下。
注意:此文件将在24小时后的第一次重新配置运行中自动删除。
登录成功后,你将看到首页。
可以看到已存在一个系统项目,这个项目是自动生成的,并帮助监控这个GitLab实例。学习更多的知识。
我们可以看到首页的最上方工具栏有很多的操作(每个Gitlab版本不同,所以可能看到的位置不同,本文使用版本15.4),下面争对这些用途进行一个讲解。
在最右侧有个问号的下拉按钮,里面包含了:当前版本、新功能介绍、帮助、支持、反馈等功能。
(1)What’s new(新功能):可以看到这个版本的一些新功能介绍。
(2)Help(帮助):当前版本的帮助文档。
全方面帮助你了解GitLab。非常重要,如果有不会的地方多看看这里。
(3)Support(支持):从官网获取帮助。
(4)Community forum(社区论坛):再社区论坛学习。
(5)KeyBoard shortcuts(快捷键):GitLab中所用的快捷键。
(6)Submit feedback(反馈):向GitLab反馈你的问题。
(7)Contribute to GitLab(贡献):成为GitLab贡献者。为开发、文档、翻译和设计做出贡献。
我们先从创建讲起,再工具栏的最右侧有一个创建下拉按钮,创建主要分为:创建项目、创建组、创建片段。
可以创建的地方有很多,比如首页就有一个New project按钮可以创建项目
点击任意位置的New project,跳转新页面,有三种选项:创建空白项目、创建模版项目、导入项目。
(1)Create blank project(创建空白项目):一个空白的项目
输入项目名—>选择项目组—>设置可见级别—>项目配置(可选)—>点击Create project按钮。
Visibility Level(可见级别)有三种状态:
Private(私有的)
:必须将项目访问权限明确授予每个用户。Internal(内部的)
:除外部用户外,任何登录用户都可以访问该项目(前提拥有这个组的权限)。如果此项目是组的一部分,则授予组成员访问权限。Public(公共的)
:该项目无需任何身份验证即可访问。Project Configuration(项目配置)有两个可选项:
Initialize repository with a README
:默认,非必填。使用 README 初始化存储库。Enable Static Application Security Testing (SAST)
:非必填。启用静态应用程序安全测试 (SAST)。
可以再首页看到我们创建好的项目。
(2)Create from template(创建模版项目)
你可以通过已提供的内置模版,帮助快速构建项目(不做详细讲解,自行操作)。
(3)Import project(导入项目)
你可以从 GitHub、Bitbucket 或其他 GitLab 实例等外部源迁移数据(不做详细讲解,自行操作)。
点击任意位置的New group,跳转新页面,有两种选项:创建组、导入组。
(1)Create group(创建组)
组里面可以创建子组,组允许您跨多个项目进行管理和协作。组的成员可以访问其所有项目。
除了组名、权限以外其他都是非必填项,这里不做详细讲解。
(2)Import group(导入组)
从另一个 GitLab 实例迁移现有组。一共有两种导入方式:从 GitLab 的另一个实例导入组、从文件导入组。将信息填写好即可。
将一些你认为有用的代码片段功能,发布出来。填写信息,勾选查看权限,供团队成员参考。
你的团队会加入新的成员,有两种方式注册注册用户,一种用户自己注册,另一种提供邮箱由管理员注册。
(1)用户自己注册
访问公司提供的首页后,点击Register now链接。
填写好你的姓名、邮箱、密码等信息,点击提交按钮,等待管理员审核。
管理员登入首页,点击左侧隐藏列表,找到Admin选项。
进入管理界面,点击Overview—>User菜单,再页面中选择Pending approval标签,进行用户审核或者拒绝。
(2)提供邮箱由管理员注册
管理员再管理页面中,点击Overview—>User菜单,左侧点击New user按钮。
管理员填写好姓名、用户名、邮箱、权限,密码将生成重置链接并发送给用户。用户第一次登录时将被迫设置密码。
Access level(访问级别)
Regular(常规的)
:普通用户可以访问他们的组和项目。Administrator(行政人员)
:用户可以无限制地访问所有组、项目、用户和功能。External(外部的)
:非必填。除非明确授予访问权限,否则外部用户无法查看内部或私人项目。此外,外部用户不能创建项目、组或个人片段。Validate user account(验证用户帐户)
:非必填。用户可以通过输入信用卡/借记卡来验证自己,或者管理员可以手动验证用户。经过验证的用户可以在共享跑步者上使用免费的 CI 分钟数。还有其他一些非必填信息,这里不做详细讲解。
(1)按组分配
刚开始进来的用户没有分配项目,所以首页只能看到四个操作:创建项目、创建组、探索公共项目、了解GitLab。
管理员需要再管理页面分配项目组,点击Overview—>Groups菜单。
点击需要分配的项目组,再红框处,选择用户,分配角色权限,点击按钮,完成添加。
然后用户刷新当前页面,可以看到组下面所有的项目以及每个项目对应的角色权限。
(2)按项目分配
当然如果你不希望用户看到这么多项目,也可以分配指定项目权限。点击Overview—>Projects菜单,选择某个项目,点击红框处按钮
然后会跳转到项目配置中(当然管理员可以直接点项目进行配置),点击右侧Invite members按钮,填写用户名,设置好权限即可。
不同的角色拥有不同的权限,简单介绍下每个角色权限。
操作 | Guest(来宾) | Reporter(记者) | Developer(开发) | Maintainer() | Owner |
---|---|---|---|---|---|
查看问题分析 | ✓ | ✓ | ✓ | ✓ | ✓ |
查看合并请求分析 | ✓ | ✓ | ✓ | ✓ | ✓ |
查看CI/CD 分析 | ✓ | ✓ | ✓ | ✓ | |
创建、编辑、删除清理策略 | ✓ | ✓ | |||
管理操作 | ✓ | ✓ | |||
创建事件 | ✓ | ✓ | ✓ | ✓ | |
创建问题 | ✓ | ✓ | ✓ | ✓ | ✓ |
合并操作 | ✓ | ✓ | ✓ | ||
下载项目 | ✓ | ✓ | ✓ | ✓ | ✓ |
创建里程碑、片段 | ✓ | ✓ | ✓ | ✓ | |
拉取、查看项目代码 | ✓ | ✓ | ✓ | ✓ | ✓ |
提交项目代码 | ✓ | ✓ | ✓ | ✓ | |
创建、提交分支 | ✓ | ✓ | ✓ |
用户设置分为两个部分,一部分是用户个人设置,另一部分是管理帮助用户设置。
(1)用户个人设置
每个登入进来的用户,再工具栏最右侧,点击头像处,可以对状态、个人资料、喜好进行一些设置。
点击Edit profile。
(2)管理帮助用户设置
管理员还可以编辑此用户的信息,如果用户忘记了自己的密码,可以帮忙重置。
点击Overview—>User菜单—>点击Edit修改按钮。
可以帮忙修改账户信息、密码、权限等信息。
如果管理员帮忙修改了账号密码,用户登陆时会强制修改密码。
再工具栏的最左侧有个搜索框,它可以搜索全局Gitlab的一些问题以及合并请求、项目等。
旁边的隐藏按钮也可以查看很多功能,比如:查看项目、组、里程碑、片段、活动。注:Admin菜单只有管理员才有。
除此之外右侧还可以查看问题、合并请求、待办事清单。
点击左侧,隐藏列表里的Admin菜单,进入管理员操作页面,主要介绍一些经常用到的菜单。
(1) Overview菜单
(2) Analytics菜单
记录项目的运行报告。
(3) Monitoring菜单
监控你的系统信息等(自行了解)。
(4) Messages菜单
使用横幅和通知通知您的用户有关定期维护、最近升级等的信息。
(5) System Hooks菜单
您能够向 Web 应用程序发送通知,以响应组或项目中的事件(自行了解)。
(6) Applications菜单
可以将 GitLab 用作OAuth 提供程序的实例的应用程序,通过Api接口的形式(自行了解)。
(7) Abuse Reports菜单
监测滥用的用户(自行了解)。
(8) Deploy Keys菜单
部署密钥授予对实例中所有存储库的读/写访问权限(自行了解)。
(9) Labels菜单
此处创建的标签将自动添加到新项目中。它们可用于对问题进行分类和合并请求。
(10) Settings菜单
主要包含配置大小限制。
比如:可见性和访问控制,可以设置默认的可见性配置等。其它的可以自行了解。
可以集成工具有很多,每个公司按需配置
比如:配置邮件通知。
讲个比较重要的,GitLab新版的默认主分支名为main,我们可以修改默认的分支名,比如:master。
clone项目的方式有两种:SSH克隆和HTTP克隆。
以项目组成员的权限去操作。
(1)第一步:生成ssh密钥。
ssh-keygen -t rsa -C "邮箱"
注意:Windows系统和Linux系统.ssh
文件保存的位置不一样(看生成的内容提示)。
(2)第二步:找到User Settings—>选择SSH Keys,把生成的id_rsa.pub
内容复制到Key的文本框中。
(3)第三步:复制GitLab的SSH的Clone内容。
(4)第四步:执行clone命令。
$ git clone git@124.000.***.**:group_1/project_1.git
提示Are you sure you want to continue connecting (yes/no) 输入yes,继续执行。
(5)第五步:查看项目是否clone成功。
Http的方式就相对SSH简单。
(1)第一步:复制GitLab项目中HTTP的Clone内容。
(2)第二步:执行clone命令。
$ git clone http://124.221.***.**/group_1/project_1.git
中途输入正确的GitLab账号密码。
(3)第三步:查看项目是否clone成功。
项目克隆完成后,可以尝试是否正常的拉取或提交代码。
执行git pull
命令。
拉取没问题,已经是最新的代码。
修改文件后,执行git push
命令。
提交也没问题,可以正常的开展工作了。
我们点击某一个项目,项目里也有很多的配置。
下面就主要对项目中的配置,进行讲解。
(1)Project information
(2)Repository
(3)Issues
问题操作栏,可以查看提交的问题或新建问题,创建里程碑等(不做过多讲解)。
(4)Security & Compliance
一些安全配置,比如:安全测试、扫描等等(自行了解)。
(5)Deployments
项目部署的一些状态、策略、环境灯(自行了解)。
(6)Packages and registries
使用 GitLab 包注册表,您可以将 GitLab 用作各种受支持的包管理器的私有或公共注册表。可以发布和共享包,这些包可以作为下游项目中的依赖项使用(自行了解)。
(7)Infrastructure
包含Kubernetes集群将GitLab结合等(自行了解)。
(8)Monitor
查看监测环境、错误跟踪、警报、事件等(自行了解)。
(9)Analytics
统计代码提交次数等(自行了解)。
(10)Wiki
您可以存储有关项目的所有详细信息。这可能包括您创建它的原因,其原理,如何使用它等(自行了解)。
(11)Snippets
代码片段,存储、共享和嵌入小段代码和文本(自行了解)。
一般在分支上提交完代码后,GitLab首页或项目首页都会出现相应的合并请求提示。
如果没有提示,可以自行点击项目的Merge requests菜单。
点击 New merge request按钮,创建一个新的合并请求。左边选择需要合并的分支,右边默认主分支(目标分支)。点击提交按钮,跳转新页面。
填写好项目描述(非必填,为了解释本次提交,方便管理员了解),点击Create merge request按钮,完成创建,等待管理员审核。
管理员也是一样操作,点击Merge requests菜单,点击对应的合并请求。
点击Merge按钮完成合并。有一些可以的勾选项,比如删除源分支,编辑描述等等。
CI(持续集成)服务是GitLab的一部分,每当开发人员将代码推送到应用程序时,它都会构建和测试软件。 CD(连续部署)是一项软件服务,它将生产中的每一个代码的变化放在每天生产的部署中。
要使用 GitLab CI/CD,请执行以下操作:
.gitlab-ci.yml
文件。在此文件中定义 CI/CD 作业。以Linux为例,进行讲解。
(1)yum安装
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
这种安装方式会下载git,会把本地已安装的git版本替换掉。
yum install gitlab-runner
yum list gitlab-runner --showduplicates | sort -r
sudo yum install gitlab-runner-10.0.0-1
如果你需要更新最新的GitLab 运行器。
yum update
yum install gitlab-runner
(2)手动安装
不想使用yum
安装的,可以使用手动安装。具体可以参考官方文档。
# Linux x86-64
sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64"
sudo chmod +x /usr/local/bin/gitlab-runner
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
注:将用户权限改为--user=root
,否则执行脚本时会报没权限。
gitlab-runner install --user=root --working-directory=/home/gitlab-runner
gitlab-runner start
(3)注册runner
gitlab-runner register
再项目的Settings菜单—>点击CI/CD—>找到Runners,获取token。
将复制的token输入。
管理员可以再GitLab的设置中修改。
管理员可以再GitLab的设置中修改。
管理员可以再GitLab的设置中修改。
简单介绍几种运行器他们的区别:
shell:最简单的执行程序。构建所需的所有依赖项都需要在安装 GitLab 运行器的同一台计算机上手动安装。可以以非特权用户身份运行脚本。
docker:允许一个干净的构建环境,具有简单的依赖关系管理(构建项目的所有依赖关系都可以放在 Docker 映像中)。Docker 执行器允许您轻松创建具有依赖服务(如 MySQL)的构建环境。
ssh:添加 SSH 执行程序是为了完整性,但它是所有执行器中支持最少的。它使GitLab运行器连接到外部服务器并在那里运行构建。我们有一些来自使用此执行器的组织的成功案例,但通常我们建议使用其他类型之一。SSH 执行器仅支持在 Bash 中生成的脚本。
kubernetes:允许您使用现有的Kubernetes集群进行构建。执行器将调用 Kubernetes 集群 API,并为每个 GitLab CI 作业创建一个新的 Pod(带有构建容器和服务容器)。
custom:自定义执行程序允许您指定自己的执行环境。当 GitLab 运行器不提供执行器(例如,LXC 容器)时,您可以向 GitLab 运行器提供自己的可执行文件,以预配和清理要使用的任何环境。
完成后,点击Settings菜单中—>CI/CD菜单的Runners选项。
可以看到当前项目启动了runner,不过这个注册的runner只是单独项目的使用,管理员可以将runner共享多个项目。
首先确保开启共享器开关,再红框处。
找到项目组。
点击CI/CD菜单—>Runners—>点击编辑按钮。
默认选项是Lock to current projects(锁定当前项目),将它修改为受保护的,点击保存。
我们点击其它项目配置Runners,就可以选择已存在的,如图中红框所示,点击启用。
点击项目兴趣,创建文件。
复制以下内容到文件里。
build-job:
stage: build
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
deploy-prod:
stage: deploy
script:
- echo "This job deploys something from the $CI_COMMIT_BRANCH branch."
environment: production
输入文件名.gitlab-ci.yml
,点击保存。
点击菜单CI/CD菜单—>Editor菜单,可以编辑.gitlab-ci.yml
,也能可视化任务。
我们点击项目详情 CI/CD菜单—>Pipelines菜单,可以看到管道的运行状态。
点击任意管道,查看每个管道运行状态,如果是蓝色表示正在编译,红色表示编译出现问题,绿色表示编译通过。
点击 CI/CD菜单—>Jobs菜单。
点击任意job查看详情,如果有错误的话,能快速知道问题的原因。
如果你是管理员,你可以为指定项目进行一些设置。
(1)General菜单
默认菜单。可对项目进行名称、描述、头像、权限修改,项目转移、删除等操作。
(2)Integration菜单
集成使您能够使第三方应用程序成为 GitLab 工作流程的一部分。
(3)Webhook菜单
Webhook 使您能够向 Web 应用程序发送通知,以响应组或项目中的事件。我们建议优先使用集成而不是 Webhook(自行了解)。
(4)Access Tokens菜单
为需要访问 GitLab API 的应用程序生成范围为此项目范围内的项目访问令牌(自行了解)。
(5)Repository菜单
针对项目(分支、标签、代码)的访问进行设置。
(6)Merge requests菜单
分支合并请求时默认配置项。
(7)CI/CD菜单
持续集成交付设置项设置,比如:管道设置、运行器设置、环境变量等。
(8)Package and registry菜单
将具有相同名称和版本的包上载到注册表时,会将更多资产添加到包中。为了节省存储空间,请仅保留最新的资产。
(9)Monitor菜单
配置监测错误、警报、事件等,访问地址(自行了解)。
(10)Usage Quotas菜单
项目资源使用情况(自行了解)。
前面只是简单的介绍了.gitlab-ci.yml
文件的使用,下面将进行更详细的讲解。
GitLab CI/CD 具有一组默认的预定义 CI/CD 变量,可用于管道配置和作业脚本(可在帮助中心中找到)。
我们可以在.gitlab-ci.yml
中使用它。
build-job:
stage: build
script:
- echo "Hello, $GITLAB_USER_LOGIN!"
- echo "Hello, $CI_JOB_STAGE"
使用关键字variables,定义变量和值。
variables:
TEST_VAR: "this is test var"
build-job:
variables:
TEST_VAR_JOB: "this is test var job"
stage: build
script:
- echo "Hello, $TEST_VAR"
- echo "Hello, $TEST_VAR_JOB"
具有维护者角色的项目成员可以添加或更新项目 CI/CD 变量,除此之外,管理员还可以按组创建整个组的全局CI/CD 变量或者再Admin菜单创建全局的CI/CD 变量。
我们点击项目详情—>Settings—>CI/CD菜单,找到Variables选项。
点击添加按钮。
._
。build-job:
stage: build
script:
- echo "Hello, $test_val"
- echo "Hello, $test"
GitLab提供了很多关键字,你需要了解它们的作用是什么,下面针对常用一些关键字进行讲解(你可以查看帮助)。
after_script
、artifacts
、before_script
、cache
、image
、interruptible
、retry
、services
、tags
、timeout
。我们定义两个job任务,一个不用默认值,一个用默认值。
default:
before_script:
- echo "default_script"
build-job:
stage: build
before_script:
- echo "build-job"
script:
- echo "build-script"
job:
script:
- echo "This command executes after the job's 'before_script' commands."
我们可以很清楚了看到,job任务中定义的默认关键字会被覆盖掉。
# 用于包含与该文件位于同一存储库中的文件。
include:
- local: '/templates/.gitlab-ci-template.yml'
# 要在同一 GitLab 实例上包含来自另一个私有项目的文件
include:
- project: 'my-group/my-project'
file: '/templates/.gitlab-ci-template.yml'
# 可通过 HTTP/HTTPS 请求访问的公共 URL
include:
- remote: 'https://gitlab.com/example-project/-/raw/main/.gitlab-ci.yml'
# 用于包含 .gitlab-ci.yml 模板。可以有多个模板
include:
- template: Auto-DevOps.gitlab-ci.yml
stages:
- build
- test
- deploy
如果作业未指定阶段,默认分配:test
。如果定义三种不同的作业阶段,任何作业失败,后续阶段的作业不会启动。
after_script
关键字表示执行作业前、script
关键字表示执行作业中、before_script
关键字表示执行作业后,after_script
关键字和before_script
关键字需要搭配script
关键字。build-job:
stage: build
before_script:
- echo "before-script"
script:
- echo "build-script"
after_script:
- echo "after-script"
job1:
stage: test
script:
- execute_script_2
allow_failure: true
job2:
stage: deploy
script:
- deploy_script_2
default:
image: ruby:3.0
only
用于定义作业的运行时间。except
用于定义作业何时不运行。用的最常见的就是分支。job1:
stage: test
script:
- echo "execute_script_2"
only:
- main
这样表示只有main分支的时候才会执行job任务。
test:
script: rspec
retry: 2
job:
tags:
- test
build:
script: build.sh
timeout: 3 hours 30 minutes
test:
script: rspec
timeout: 3h 30m
variables:
DEPLOY_SITE: "https://example.com/"
deploy_job:
stage: deploy
script:
- echo "$DEPLOY_SITE"
environment: production
注:以下关键字已弃用:
image
、services
、cache
、before_script
、after_script
。
请改用默认值。例如:
default:
image: ruby:3.0
services:
- docker:dind
cache:
paths: [vendor/]
before_script:
- bundle config set path vendor/bundle
- bundle install
after_script:
- rm -rf tmp/
GitLab 提供了很多.gitlab-ci.yml
的模板文件,适用于许多常见的框架和编程语言(你可以再帮助中心找到你需要的模板)。
再创建.gitlab-ci.yml
时候,可以选择使用模板文件。
以Maven项目为例,讲解比较简单的用法。
通过编译后的Jar包,复制到其它地方或者复制到其它服务器(如果是其它服务需要通过ssh操作),执行一系列操作。
比如:复制指定位置后执行启动操作。
服务器目录:
脚本文件:
build:
script:
# 编译
- mvn clean install
#查看当前路径
- pwd
#将本路径下编译好的jar包复制到指定目录
- scp -r target/maven-test-1.0-SNAPSHOT.jar /home/mavenTest/test.jar
#跳转到指定目录
- cd /home/mavenTest
#启动jar包
- java -jar test.jar
tags:
- test
only:
- master
执行结果:
这里只是简单的执行了jar文件,可以看到成功打印。当然也可以执行一些脚本文件等。
可以看到文件目录下也成功复制了jar文件。
如果你再运行脚本的过程中出现Permission denied(没有权限 拒绝访问)问题。
可以参考这篇文章【汇总】解决GitLab-Runner执行脚本命令无权限