From this lesson you will learn about

1,How to install and configure a docker based gitlab server

2,How to install and configure a docker based seperated gitlab-runner

3,The basic usage of expect utility

4,How to trigger a script task when committing files to gitlab server

5,How to map a local folder to a container folder

#从本课程你将学会

1,怎样安装和配置一个基于docker的gitlab server

2,怎样安装和配置一个基于docker的单独的gitlab-runner

3,expect 工具的基本使用

4,怎样在提交文件时触发gitlab server的脚本任务

5,怎样映射本地文件夹到容器文件夹

The configuration directory of gitlab server(in container)(gitlab server在容器中的配置目录)

/etc/gitlab   #gitlab configuration directory(配置文件目录)

/var/log/gitlab  #gitlab log directory (日志目录 )

/var/opt/gitlab #gitlab data directory(数据目录)

The gitlab server related ports:443,80,22

环境:CentOS7 ,Docker CE

1,Pull the gitlab image(拉取gitlab镜像)

sudo docker pull gitlab/gitlab-ce

2,

Prepare gitlab local foldders (准备gitlab本地文件夹)

sudo mkdir /home/gitlab
sudo chmod -Rf /home/gitlab
sudo cd /home/gitlab
sudo mkdir etcgitlab
sudo mkdir loggitlab
sudo mkdir optgitlab

3,Create a docker  network (创建一个docker网络)

sudo docker network create --attachable --driver overlay my-net-git 

#--attachable ,can be manually attached (可被手动附加)

#--overlay   , can support Docker Swarm network (可支持Docker Swarm集群网络)

4,Run the gitlab server (运行gitlab server镜像)

 sudo docker run -td  -p : -p : -p : --name gitlab --restart always \

--network my-net-git  -v /home/gitlab/etcgitlab:/etc/gitlab -v /home/gitlab/loggitlab:/var/log/gitlab -v /home/gitlab/optgitlab:/var/opt/gitlab gitlab/gitlab-ce

#--network my-net-git let the gitlab container join the network my-net-git(让容器加入到my-net-git网络)

#-p ,host port to container port mapping (主机到容器的端口映射)

5,Prepare gitlab-runner Dockerfile

sudo mkdir docker
sudo chmod docker
sudo vi docker/Dockerfile

Copy below content to the file

FROM centos:6.10

MAINTAINER Liping

RUN bash -c "curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | bash"

RUN bash -c  "yum install -y expect.x86_64 expect-devel.x86_64"

RUN bash -c "yum install -y gitlab-runner"

ADD ./docker/my-init.sh /home/sh/my-init.sh

RUN chmod  /home/sh/my-init.sh

CMD ["/home/sh/my-init.sh"]

6,Open your gitlab server url ,the first access will ask you to set a new password.

Navigate to http://localhost:9080/admin/runners

Find the Server URL and to Token for Runner Registration.

打开gitlab server url,首次访问时会要求设置一个新密码。导航到http://localhost:9080/admin/runners

查找图所示 的url 和token 用于Runner 注册.

7,Prepare the Runner Registration script (准备Runner的注册脚本)

sudo vi docker/my-init.sh

Copy content below to the file replace the red font portion to your own data(复制如下内容至文件,使用你自己第7步中查到的数据,替换红色字体部分)

#!/usr/bin/expect

#the gitlab runner init command(gitlab runner 的初始化命令)

spawn gitlab-runner register --locked=false

expect "*gitlab.com/):"

#input the gitlab server url ,replace with your real gitlab server url(输入gitlab 服务>器地址,使用你实际的gitlab server地址代替)

send "http://localhost:9080/\r"

expect "*token for this runner:"

#replace with your real token

send "FSrjiy8_9oDbst2-xX-S\r"

expect "*description for this runner:*"

send "myrunner\r"

expect "*tags for this runner (comma separated):*"

send " \r"

expect "*shell,*"

send "shell\r"

exec bash -c "service gitlab-runner restart"

exec bash -c "read"

8,

sudo docker build -t lipingsg/mygitrunner -f docker/Dockerfile .

9,Start the gitlab-runner container (启动gitlab-runner容器)

sudo docker run -td --name my_gitrunner  --network my-net-git  lipingsg/mygitrunner 

10,Go to the gitlab server url http://localhost:9080/admin/runners , verify the registration was done.

导航至http://localhost:9080/admin/runners 验证注册是否已完成。

11,Go to http://localhost:9080/admin/application_settings/ci_cd

Uncheck “Default to Auto DevOps pipeline for all projects”and save.

进入ci_cd 页面 取消“Default to Auto DevOps pipeline for all projects”并保存

12,Create a new Project in gitlab ,and create a .gitlab-ci.yml to test the trigger fuction for a script task.(创建一个新工程,在工程中创建一个 .gitlab-ci.yml 文件 用来测试自动触发脚本任务是否完成) .gitlab-ci.yml的内容如下

stages:
- test
- build
- deploy
job 1:
stage: test
script:
- echo "$(date +"%Y%m%d%H%M%S")" job 1 done
job 2:
stage: build
script:
- echo "$(date +"%Y%m%d%H%M%S")" job 2 done
job 3:
stage: deploy
script:
- echo "$(date +"%Y%m%d%H%M%S")" job 3 done

13,The gitlab server DEVOPS environment is working.

Gitlab 服务器的DEVOPS功能已经完成,如果有任何疑问请在下面提出~

原创内容,版权归属千分网络科技,转载需经许可,并附带原始链接,谢谢!

如何搭建基于Docker的gitlab服务器集成CI/CD实现DEVOPS(完整版)的更多相关文章

  1. 三万字无坑搭建基于Docker+K8S+GitLab/SVN+Jenkins+Harbor持续集成交付环境

    写在前面 最近在 K8S 1.18.2 版本的集群上搭建DevOps环境,期间遇到了各种坑.目前,搭建环境的过程中出现的各种坑均已被填平,特此记录,并分享给大家! 文章和搭建环境所需要的yml文件已收 ...

  2. 基于 Docker 和 GitLab 的前端自动化部署实践笔记

    基于 Docker 和 GitLab 的前端自动化部署 实践笔记 随着接触的项目越来越多,在部署测试流程上重复耗时工作也越来越多,所以对前端工作的CI/CD实现愈发迫在眉睫. 前端开发由于三大框架的崛 ...

  3. Windows 7下 搭建 基于 ssh 的sftp 服务器

    Windows  xp 下 搭建 基于  ssh 的sftp 服务器,服务器端可以用 freesshd,F-secure server等,filezilla server不可用,之前傻乎乎的用file ...

  4. 搭建并配置本地GitLab服务器教程

    由于工作单位不一定能够方便使用外部网络,现以下载rpm包来搭建一套本地GitLab服务器. 1. 系统准备 系统:redhat 7.3 2. 下载所需安装包 去官网下rpm包,下载地址,ce是免费的社 ...

  5. Linux搭建基于BIND的DNS服务器

    Linux搭建基于BIND的DNS服务器   实验目标: 通过本实验掌握基于Linux的DNS服务器搭建. 实验步骤: 1.安装BIND 2.防火墙放通DNS服务 3.编辑BIND的主配置文件 4.编 ...

  6. Linux搭建基于Apache的HTTP服务器

    Linux搭建基于Apache的HTTP服务器   实验目标: 通过本实验掌握基于Linux的WWW服务器搭建. 实验步骤: 1.安装http服务 2.防火墙放通http服务 3.编辑测试网页 4.开 ...

  7. Azure DevOps+Docker+Asp.NET Core 实现CI/CD(二.创建CI持续集成管道)

    前言 本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目). 上一篇: Azure DevOps+Docker+Asp.N ...

  8. 【K8S】基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境(环境搭建篇)

    写在前面 最近在 K8S 1.18.2 版本的集群上搭建DevOps环境,期间遇到了各种坑.目前,搭建环境的过程中出现的各种坑均已被填平,特此记录,并分享给大家! 服务器规划 IP 主机名 节点 操作 ...

  9. 基于Docker+Jenkins+Gitlab搭建持续集成环境

    随着DevOps理念和敏捷理念的发展,我们希望通过自动化技术,加快项目的迭代.尤其是当使用微服务方案后,面临在大量的项目构建和部署工作,借助于jenkins的持续集成,可以快速把应用打包成docker ...

随机推荐

  1. vue实现手机号码的校验(防抖函数的应用场景)

    上一篇博文我们讲到了节流函数的应用场景,我们知道了节流函数可以用在模糊查询.scroller.onresize等场景:今天这篇我们来讲防抖函数的应用场景:: 通过上一篇博文的学习,我们知道了防抖函数的 ...

  2. String类的intern()方法,随常量池发生的变化

    JVM的知识这里总结的很详细:https://github.com/doocs/jvm/blob/master/README.md,因此在本博客也不会再对其中的东西重复总结了. intern的作用 简 ...

  3. ZYNQ Block Design中总线位宽的截取与合并操作

    前言 在某些需求下,数据的位宽后级模块可能不需要原始位宽宽度,需要截位,而某些需求下,需要进行多个数据的合并操作. 在verilog下,截位操作可如下所示: wire [7:0] w_in; wire ...

  4. NLP(九) 文本相似度问题

    多个维度判别文本之间相似度 情感维度 Sentiment/Emotion 感官维度 Sense 特定词的出现 词频 TF 逆文本频率 IDF 构建N个M维向量,N是文档总数,M是所有文档的去重词汇量 ...

  5. NLP(六) 分块、句法分析、依存分析

    内置分块器 分块:从文本中抽取短语 import nltk text = 'Lalbagh Botanical Garden is a well known botanical garden in B ...

  6. Vim高手,从来不用鼠标2——替换、撤销、缩进、查找

    本文章原创首发于公众号:编程三分钟 vim 替换.撤销.缩进.查找 上一次我们掌握了移动.跳转.定位.操作(删除.复制.粘贴),基本使用vim脱离鼠标完全是可以做到的了.速记如下: 移动: h,l,j ...

  7. 牛客小白月赛6 F 发电 树状数组单点更新 求区间乘积 模板

    链接:https://www.nowcoder.com/acm/contest/136/F来源:牛客网  HA实验是一个生产.提炼“神力水晶”的秘密军事基地,神力水晶可以让机器的工作效率成倍提升.   ...

  8. Java中时间API使用详解

    目录 Java中时间API使用详解 1. 时区概念 2. 几种常见的时间 3. 时间戳 4. Java中的时间API 5. Java8中新添加的时间API 6. 在东八区的机器上获得美国时间 Java ...

  9. Java中Jedis连接Linux上的Redis出现connect time out(解决方案)

    我的代码: /** * * <p>Title: testJedis</p> * <p>Description: 测试单机版的redis连接(每连接一次构建一个对象) ...

  10. MongoDB的入门使用以及遇到的坑

    一:MonoDB的简单介绍 MongoDB是一个介于关系型数据库与非关系型数据库中间的数据库,是使用C++进行编写的,他的优点是在支持的查询格式特别的强大,可以进行存储比较复杂的数据类型,支持建立索引 ...