前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Gitlab 一个涵盖项目管理、代码仓库、持续集成的高可用系统

Gitlab 一个涵盖项目管理、代码仓库、持续集成的高可用系统

作者头像
测试邦
修改2019-08-24 22:53:33
3.8K1
修改2019-08-24 22:53:33
举报
文章被收录于专栏:测试邦

简介

GitLab,是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目安装。它拥有与GitHub类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。除了代码仓库管理的核心功能外,Gitlab还兼有议题、持续集成、Wiki等项目管理事务上的其他优秀模块。

Gitlab提供的仓库管理、项目管理以及持续集成,可以完全取代现有类似的 jira + svn + Jenkins 项目管理架构,以达到一套系统管理项目开发的整个生命周期的目的。

本文对Gitlab作简单介绍,更多详细的用法需要阅读gitlab官方wiki文档

https://docs.gitlab.com/

部署

部署方式

官网上有多种部署方式,直接部署步骤过于繁琐,而且由于环境的不同,可能出现未知错误,笔者推荐使用 docker的方式进行部署,步骤简单,不会有异常。安装docker的教程网上都有,大家根据自己的环境自行查阅。

docker安装并启动完成后,搜索镜像。

docker search gitlab

大家视自己情况选择英文原版或者汉化版,为了方便演示,笔者这里选择安装社区汉化版

拉取镜像

docker pull twang2218/gitlab-ce-zh

如果下载速度极慢或者连接失败,请将docker镜像地址更改为 国内仓库或者使用阿里镜像仓库加速

使用阿里镜像加速,登陆阿里云,选择容器镜像服务

开始部署

下载完成后,创建并启动容器,开放端口可以设置,443为https端口,80为http端口,我们直接使用http端口,映射到本地的80端口,如果需要配置https服务,前面可以用一层nginx代理,配置域名和证书。

代码语言:javascript
复制
sudo docker run --detach \

 --publish 443:443 --publish 80:80 --publish 22:22 \

 --name gitlab \

 --restart always \

 --volume /srv/gitlab/config:/etc/gitlab \

 --volume /srv/gitlab/logs:/var/log/gitlab \

 --volume /srv/gitlab/data:/var/opt/gitlab \

 twang2218/gitlab-ce-zh

查看部署状态,安装过程中会显示 strating:health 表示正在健康的启动

docker ps -a

等待完全启动成功后,就部署成功了,访问linux的ip + http端口,即完成可以看到界面。

设置密码后,使用root账号和密码登陆界面,即可以看到首页

基本用法

创建一个项目

添加人员

创建一个群组

对于一个正常的公司或者组织,都会有多个项目和多个成员,需要用群组的概念来管理项目和人员之间的关系。

群组是多个项目的集合

只有群组的成员才有权查看项目

群组项目的URL都会戴上群组的命名空间

现有项目可以转移到群组

配置Gitlab

在这里完成对 项目、用户、群组的管理

仓库管理

创建一个项目后,进入到项目页面。

代码仓库是gitlab的核心功能,它提供和github一样的仓库管理功能,用法上也完全一致。

关于git的操作,网上有很多教程,笔者这里就不做赘述。

Gitlab CI/CD

gitlab也提供了类似 jenkins的持续集成功能,通过配置,可以完成代码自动打包,部署,测试等流水线功能,触发机制完善。

gitlab在系统上进行配置,但实际完成的持续集成是由 gitlab-runner来完成,runner采用go语言编写,因此可以很好的进行跨平台,并且支持在docker中使用,也提供了多种连接方式。

安装gitlab-runner

安装gitlab-runner,各个平台对应的安装方式如下:

https://docs.gitlab.com/runner/install/linux-repository.html

笔者linux是 ubuntu系统,直接

apt-get install gitlab-runner

注册gitlab-runner到项目

gitlab-runner需要通过注册的方式和gitlab上面的项目相关联,这样项目持续集成的时候才可以调用安装gitlab-runner的服务器进行操作

获取项目token,点击 设置-CI/CD-General pinelines

linux生成ssh秘钥,输入ssh-keygen 一路回车,会在/root/.ssh/di_rsa下生成秘钥对

gitlab-runner注册

gitlab-runner register

如果gitlab-runner和gitlab在同一linux上,请注意gitlab已经占用了22端口,避免冲突,请将ssh-server的端口改为其他端口

注册完成后,回到项目中查看,已经可以在页面上看到注册的gitlab-runner

使用gitlab-runner

配置hosts域名解析 如果你的地址是这个

需要在 /etc/host中添加 域名解析 (如果是显示gitlab也需要添加到域名解析中)

代码语言:javascript
复制
192.168.127.128   4244e17eba16

192.168.127.128   gitlab

配置yml文件

通过yml配置文件来调用gitlab-runner

在项目根目录下创建一个文件名称为 .gitlab-ci.yml

代码语言:javascript
复制
//三个阶段 build 、 deploy 、 test
stages:
    - build
    - deploy
    - test

//设置三个全局变量,使用时 $+变量名即可

variables:
    BUILD_SAY: 'building'
    DEPLOY_SAY: 'deploying'
    TEST_SAY: 'testing'
 
//构建任务
build_job:
  //这个任务属于 build阶段
  stage: build
  //任务开始时的操作
  before_script:
- echo 'build start'
//任务操作
  script:
- echo $BUILD_SAY
//任务完成后的操作
  after_script:
    - echo 'build end'
    
//部署任务
deploy_job:
  stage: deploy
  before_script:
    - echo 'deploy start'
  script:
    - echo $DEPLOY_SAY
  after_script:
    - echo 'deploy end'
    
//测试任务
test_job:
  stage: test
  before_script:
    - echo 'test start'
  script:
    - echo $TEST_SAY
  after_script:
- echo 'test end'

构建

三个任务会按顺序执行

点击可以查看每个任务的执行情况

***往期精彩***:

谈谈测试服务化

基于docker容器技术的测试平台解决方案(dap)

安全测试|移动端安全测试drozer

基于puppeteer的前端性能测试解决方案

解锁自动化测试专栏

更多测试好文请关注微信公众号:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试邦 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 部署
    • 部署方式
      • 拉取镜像
        • 开始部署
        • 基本用法
          • 创建一个项目
            • 添加人员
              • 创建一个群组
                • 配置Gitlab
                  • 仓库管理
                  • Gitlab CI/CD
                    • 安装gitlab-runner
                      • 注册gitlab-runner到项目
                        • 使用gitlab-runner
                          • 配置yml文件
                          相关产品与服务
                          容器服务
                          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档