前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 vagrant 从搭建 gitlab server 开始体验整个 gitlab CI/CD 过程

使用 vagrant 从搭建 gitlab server 开始体验整个 gitlab CI/CD 过程

作者头像
用户7685359
发布2020-08-22 17:58:46
1K0
发布2020-08-22 17:58:46
举报
文章被收录于专栏:FluentStudy

背景知识 1、vagrant:包括网络配置 2、linux 基础

一、gitlab CI/CD简介

GitLab一个开源的git仓库管理平台,方便团队协作开发、管理。在GitLab上可以实现完整的CI(持续集成)、CD(持续发布)流程。而且还提供了免费使用的Plan,以及免费的可以独立部署的社区版本。

代码语言:javascript
复制
社区版本:https://gitlab.com/gitlab-org/gitlab-ce
官方链接:https://docs.gitlab.com/ee/ci/introduction/

CI: 持续集成 CD:持续发布

二、搭建 gitlab 服务

代码语言:javascript
复制
官方链接:https://about.gitlab.com/install/#centos-7

1、实验环境:

代码语言:javascript
复制
Vagrant + Virtualbox + CentOS 7

2、Vagrant 创建 CentOS 7 虚拟环境并启动进入

代码语言:javascript
复制
vagrant init centos/7
vagrant up
vagrant ssh

3、修改虚拟环境配置

首先,在官方文档第一段很清楚的说明:

https://about.gitlab.com/install/#centos-7: We strongly recommend downloading the Omnibus package installation since it is quicker to install, easier to upgrade, and it contains features to enhance reliability not found in other methods. We also strongly recommend at least 4GB of free RAM to run GitLab.

最后一句,强烈推荐至少 4G 的内存。因此我们修改第一个配置如下:

代码语言:javascript
复制
# vagrant 内存配置官方文档:https://www.vagrantup.com/docs/virtualbox/configuration.html

vim Vagrantfile
全局搜索:vb.memory
将配置修改如下:
config.vm.provider "virtualbox" do |vb|
    # Display the VirtualBox GUI when booting the machine
    # vb.gui = false

    # Customize the amount of memory on the VM:
    vb.memory = 5120
    vb.cpus = 2
  end

另外,虚拟环境在安装好 gitlab server 后,需要宿主机可以访问,因为还需要对网络进行配置。这里采用 forwarded_port 的模式,配置如下:

代码语言:javascript
复制
# vagrant 网络配置官方文档:https://www.vagrantup.com/docs/networking/basic_usage.html
vim Vagrantfile
全局搜索:config.vm.network
将其中 config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
这句注释解掉,保存退出即可

4、重启虚拟环境,让配置生效:

代码语言:javascript
复制
vagrant reload

5、进入虚拟环境:

代码语言:javascript
复制
vagrant ssh

6、安装 gitlab server 必需的依赖

代码语言:javascript
复制
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld

7、安装 Postfix,邮件服务。gitlab 有需要发送邮件的地方。

代码语言:javascript
复制
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

8、添加 gitlab 包并安装

代码语言:javascript
复制
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

9、安装社区版:

代码语言:javascript
复制
yum install -y gitlab-ee

10、配置 gitlab url

第9步安装完成后,注意一下输出:

输出里交待了 gitlab server 的默认配置文件,同时提示你去配置一个 gitlab url,即访问 gitlab 的 url,修改如下:

代码语言:javascript
复制
# 默认是 https://gitlab.example.com。
# 注意这里必须使用 sudo 权限才能看到文件内容
sudo vim /etc/gitlab/gitlab.rb
external_url 'http://gitlab.demon.com'

11、启动并让配置生效

代码语言:javascript
复制
sudo gitlab-ctl reconfigure

12、宿主机配置 hosts

代码语言:javascript
复制
sudo vim /etc/hosts
添加:
127.0.0.1 gitlab.demon.com
# 注意换成对应的 url

13、测试访问:

前面从 Vagrantfile 做网络配置时,我们给宿主机暴露的是 8080 的端口,因此访问时需要带上端口:

代码语言:javascript
复制
http://localhost:8080
http://gitlab.demon.com:8080

上面两个链接均可访问。成功访问会先让你修改密码,修改完密码会提示你登录,默认登录用户是 root,密码即为你修改后的密码。

至此,gitlab server 搭建完成,我们可以在上面创建我们自己的项目。

gitlab runner 安装

代码语言:javascript
复制
参考链接:https://docs.gitlab.com/runner/install/

这里参考的是官方 Repositories 的安装方式:

1、添加官方的 gitlab repository

代码语言:javascript
复制
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

2、安装最新的 gitlab runner

代码语言:javascript
复制
sudo yum install gitlab-runner

实践

1、创建项目,这个步骤很简单,因此不多说,这里我创建一个项目名为 demo

2、注册 gitlab runner

代码语言:javascript
复制
官方文档:https://docs.gitlab.com/runner/register/index.html

我们进入 project -> settings -> CI/CD -> Runners:

这里提供了注册 runner 需要的 token。

进入 centos 虚拟环境,执行:

代码语言:javascript
复制
sudo gitlab-runner register

按提示输入gitab server 的路径,注意带端口:

代码语言:javascript
复制
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
http://gitlab.demon.com:8080/

输入 token:

代码语言:javascript
复制
Please enter the gitlab-ci token for this runner
xxx

输入描述,可以理解为这个 runner 的名称:

代码语言:javascript
复制
Please enter the gitlab-ci description for this runner
[hostname] my-runner

输入runner 的标签,标签可以理解为 runner 的标识,我们后续可以在配置中通过 tags 来指定我们用哪个 runner,这里可以指定多个 runner,用 , 分隔:

代码语言:javascript
复制
Please enter the gitlab-ci tags for this runner (comma separated):
my-tag,another-tag

指定 runner 的 executor,常用的有 shell 和 docker,这里我们使用 shell。你可以理解它为一种执行方式,shell 即类似我们普通的终端输入命令的方式,而 docker 就是 docker 环境下:

代码语言:javascript
复制
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
shell

这里我们再进入之前project -> settings -> CI/CD -> Runners,就能看到我们已经有一个 active 的 runner 了:

3、编写 .gitlab-ci.yml

代码语言:javascript
复制
.gitlab-ci.yml 语法参考文档:https://docs.gitlab.com/ee/ci/yaml/README.html

这里写一个简单的配置文件:

代码语言:javascript
复制
# 指定有几个阶段
stages:
    # 给阶段取名
    - test
    - build

# 阶段一
job1:
    # 对应 test 阶段
    stage: test
    # 这个阶段需要执行的脚本
    script:
        - pwd
        - ls
        - echo "I am job1"
        - echo "I am in test stage"
    # 指定用的 runner
    tags:
        - demo

job2:
    stage: build
    script:
        - echo "I am job2"
        - echo "I am in build stage"
    tags:
        - demo

4、push 后查看 pipeline

5、其他说明

  • runner 是按照 stages 按顺序执行的,如果其中一个失败,后面的都不会执行
  • 默认每个 job 都是自动执行的,如果需要手动,可以通过 when: manual
  • 还可以指定 only: master 只有 master 分支会执行
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FluentStudy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、gitlab CI/CD简介
  • 二、搭建 gitlab 服务
  • gitlab runner 安装
  • 实践
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档